dd做磁盤讀寫測試

寫速度:

time dd if=/dev/zero of=test.dbf bs=8k count=300000

其中/dev/zero是一個僞設備,它只產生空字符流,對它不會產生IO,所以,IO都會集中在of文件中,of文件只用於寫,所以這個命令相當於測試磁盤的寫能力。

輸出的結果類似(因爲一般更長測試時間更準確,所以可以設置count大一些):

300000+0 records in

300000+0 records out

real    0m36.669s

user    0m0.185s

sys    0m9.340s

所以寫速度爲:8*300000/1024/36.669=63.916M/s

讀速度:

time dd if=/dev/sda1 of=/dev/null bs=8k

因爲/dev/sdb1是一個物理分區,對它的讀取會產生IO,/dev/null是僞設備,相當於黑洞,of到該設備不會產生IO,所以,這個命令的IO只發生在/dev/sdb1上,也相當於測試磁盤的讀能力

輸出的結果類似:

448494+0 records in

448494+0 records out

real    0m51.070s

user    0m0.054s

sys    0m10.028s

所以sda1上的讀取速度爲:8*448494/1024/51.070=68.61M/s

補充:Windows下安裝Cygwin也可以使用time和dd命令,而且輸出結果中直接包含IO的時間和速度,有興趣的朋友可以試一下,不過我測試下來的速度讀寫都只有40多M每秒,不知道是否是平臺的原因,可能Cygwin的機制和Linux下還是有所不同吧。




《測試磁盤IO》

讀性能測試

# time dd  iflag=direct,nonblock  if=/dev/sda2 of=/dev/null bs=8k count=8388608

    因爲/dev/sda2是一個物理分區,對它的讀取會產生IO,/dev/null是僞設備,相當於黑洞,of到該設備不會產生IO,所以,這個命令的IO只發生在/dev/sdb1上,也相當於測試磁盤的讀能力。

寫測試

# time dd oflag=direct,nonblock if=/dev/zero f=/opt/iotest bs=8k count=8388608 

    因爲/dev/zero是一個僞設備,它只產生空字符流,對它不會產生IO,所以,IO都會集中在of文件中,of文件只用於寫,所以這個命令相當於測試磁盤的寫能力。 

讀寫測試

# time dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda2 f=/opt/iotest bs=8k count=8388608  

(一) Direct IO
在有些系統上,沒有mtd節點或者不能直接操作存儲設別,如果想測試文件讀寫性能,如何消除文件系統的影響呢?

   dd命令有一組參數oflag和iflag, 控制源文件和目標文件的讀寫方式爲direct IO,即讀或寫文件時越過操作系統的讀寫buffer。如果指定oflag=direct,nonblock,寫文件時忽略cache的影響;而如果指定iflag=direct,nonblock,讀文件時忽略cache的影響

   下面就是一組實測數據,從中可以看出cache對最終性能的影響。

   


    
.

(二) 拷貝屏幕

利用dd可以實現截屏,假設屏幕對應的設備節點/dev/fb0,屏幕大小是600×800,屏幕像素的格式是rgb565(每個像素對應兩個字節),則命令如下:

    反之,也可以利用dd,直接寫屏幕,例如下面的命令將隨機渲染屏幕:
          

(三) 串口讀寫
dd還可以寫串口,假設串口節點爲/dev/ttyS0, 下面的命令將文件寫入串口中: 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章