[Linux] 使用dd指令 – 硬碟讀寫效能測試

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。

Leave a Reply

Your email address will not be published. Required fields are marked *