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

dd 指令

dd if=<Input File> of=<Output File> bs=<Bytes> count=<Count>

Write測試指令範例 :

// 純粹測暫存,無同步
dd if=/dev/zero of=/tmp/output bs=1G count=1; rm -f /tmp/output

// 同步寫入,模擬單檔Stream寫入,Block Size不生效
dd if=/dev/zero of=/tmp/output bs=1G count=1 conv=fsync; rm -f /tmp/output
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乘數拆分計算總大小。

Read測試指令範例 :

dd if=/dev/sdb1 of=/dev/null

實際測試範例

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 *