dd 指令測試方式
指令:
dd if=<Input File> of=<Output File> bs=<Bytes> count=<Count>
Read測試指令範例 :
dd if=/dev/sdb1 of=/dev/null
# 產生資料顯入測試方式
dd if=/dev/zero of=/tmp/output bs=1M count=1K; rm -f /tmp/output
Write測試指令範例 :
// 同步資料寫入(fdatasync),執行完一次性寫入,模擬單檔Stream寫入
dd if=/dev/zero of=/tmp/output bs=1M count=1K conv=fsync; rm -f /tmp/output
// 逐筆資料寫入(dsync),依照Block Size寫完後才繼續讀,模擬DB寫入,Block Size調整影響速度
dd if=/dev/zero of=/tmp/output bs=4k count=10k oflag=dsync; rm -f /tmp/output
使用/dev/zero當來源自定讀取量,Block Size(bs)跟次數(count)相乘等於實際檔案大小。
Block Size設定過大會造成記憶體不足,可以利用count乘數拆分計算總大小。
實際測試範例
root@ubuntu:/tmp# dd if=/dev/zero of=test bs=4k count=4k
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 0.0515126 s, 326 MB/s
root@ubuntu:/tmp# dd if=/dev/zero of=test bs=4k count=4k oflag=sync
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 1.32903 s, 12.6 MB/s
root@ubuntu:/tmp# dd if=/dev/zero of=test bs=4k count=4k oflag=dsync
4096+0 records in
4096+0 records out
16777216 bytes (17 MB) copied, 2.43974 s, 6.9 MB/s
hdparm指令測試硬碟讀寫
Read test:
hdparm -t /dev/sda
Write test:
hdparm -t --direct /dev/sda
dd vs hdparm
相較之下,dd測試讀寫速度皆慢於hdparm。