如何使用dd命令測試我的硬盤性能?如何在linux操作系統下檢測硬盤的讀寫速度?
你可以使用以下命令在一個Linux或類Unix操作系統上進行簡單的I/O性能測試。
在這篇指南中,你將會學到如何使用dd命令來測試硬盤性能。
Linux/UNIX: 使用 dd 命令創建 1GB 大小的二進制 http://www.linuxidc.com/Linux/2014-12/110147.htm
Linux系統中使用 DD 命令測試 USB 和 SSD 硬盤的讀寫速度 http://www.linuxidc.com/Linux/2014-08/105880.htm
Linux dd 命令的簡單介紹 http://www.linuxidc.com/Linux/2011-01/31645.htm
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
在這個例子當中,我將使用搭載Ubuntu Linux 14.04 LTS系統的RAID-10(配有SAS SSD的Adaptec 5405Z)服務器陣列來運行。基本語法為:
dd if=/dev/input.file of=/path/to/output.file bs=block-size count=number-of-blocks oflag=dsync
## GNU dd語法 ##
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
##另外一種GNU dd的語法 ##
dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync
輸出樣例:
圖01: 使用dd命令獲取的服務器吞吐率
請各位注意在這個實驗中,我們寫入一個G的數據,可以發現,服務器的吞吐率是135 MB/s,這其中
if=/dev/zero
(if=/dev/input.file) :用來設置dd命令讀取的輸入文件名。of=/tmp/test1.img
(of=/path/to/output.file):dd命令將input.file寫入的輸出文件的名字。bs=1G
(bs=block-size) :設置dd命令讀取的塊的大小。例子中為1個G。count=1
(count=number-of-blocks):dd命令讀取的塊的個數。oflag=dsync
(oflag=dsync) :使用同步I/O。不要省略這個選項。這個選項能夠幫助你去除caching的影響,以便呈現給你精准的結果。conv=fdatasyn
: 這個選項和oflag=dsync
含義一樣。在下面這個例子中,一共寫了1000次,每次寫入512字節來獲得RAID10服務器的延遲時間:
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
輸出樣例:
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied,0.60362 s,848 kB/s
請注意服務器的吞吐率以及延遲時間也取決於服務器/應用的負載。所以我推薦你在一個剛剛重啟過並且處於峰值時間的服務器上來運行測試,以便得到更加准確的度量。現在你可以在你的所有設備上互相比較這些測試結果了。
低的數值並不意味著你在使用差勁的硬件。可能是硬件 RAID10的控制器緩存導致的。
使用hdparm命令來查看硬盤緩存的讀速度。
我建議你運行下面的命令2-3次來對設備讀性能進行檢測,以作為參照和相互比較:
### 有緩存的硬盤讀性能測試——/dev/sda ###
hdparm -t /dev/sda1
## 或者 ##
hdparm -t /dev/sda
然後運行下面這個命令2-3次來對緩存的讀性能進行對照性檢測:
## Cache讀基准——/dev/sda ###
hdparm -T /dev/sda1
## 或者 ##
hdparm -T /dev/sda
或者干脆把兩個測試結合起來:
hdparm -Tt/dev/sda
輸出樣例:
圖02: 檢測硬盤讀入以及緩存性能的Linux hdparm命令
請再次注意,由於文件文件操作的緩存屬性,你將總是會看到很高的讀速度。
為了獲得精確的讀測試數據,首先在測試前運行下列命令,來將緩存設置為無效:
flush
echo 3| sudo tee /proc/sys/vm/drop_caches
time time dd if=/path/to/bigfile of=/dev/null bs=8k
運行下列命令:
### 帶有Cache的Debian系統筆記本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct
###使cache失效###
hdparm -W0 /dev/sda
###沒有Cache的Debian系統筆記本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct