hdparm・ddコマンドを使ったディスクの簡易ベンチマーク

今日は、Linux での簡易的なディスクベンチマークの取り方について記事に起こしたいと思います。
(もう既に記事にしていると思っていたら、全く触れていなかったので...)。

ツール

簡易的にディスクのベンチマークを取るには、以下のツールを使います。

  • hdparm
    シーケンシャルな Read(読み込み)性能のテストを行います。

    base on hdparm - ArchWiki

    hdparm はハードディスクドライブのハードウェアパラメータを設定・表示することができるコマンドラインユーティリティです。
    シンプルなベンチマークツールとして使うこともできます。

  • dd
    シーケンシャルな Write(書き込み)性能のテストを行います。

    base on Core Utilities - ArchWiki

    dd は主にファイルを変換・コピーするために使われる Unix や Unix ライクなオペレーティングシステムのコマンドです。

コマンド実行例

リード測定

  • 1回
hdparm -t /dev/sda1
  • 10回連続
for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;hdparm -t /dev/sda1;done

ライト測定

  • 1回
dd if=/dev/zero of=/tmp/hdparm_write.tmp ibs=1M obs=1M count=1024
  • 10回連続
for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/tmp/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

実測

Disk

SATA 250GB / Deskstar P7K500

CPU

PassMark - AMD Athlon 5370 APU - Price performance comparison

$ cat /proc/cpuinfo | grep model
model       : 0
model name  : AMD Athlon 5370 APU with Radeon R3
model       : 0
model name  : AMD Athlon 5370 APU with Radeon R3
model       : 0
model name  : AMD Athlon 5370 APU with Radeon R3
model       : 0
model name  : AMD Athlon 5370 APU with Radeon R3

※4つ表示されているのは Quad-Core(4コア)だからです。

計測

  • 対象のデバイス確認
$ sudo fdisk -l /dev/sda1
ディスク /dev/sda1: 232.9 GiB, 250058301440 バイト, 488395120 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
  • リード測定実行
$ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;sudo hdparm -t /dev/sda1;done


 [1]

/dev/sda1:
 Timing buffered disk reads: 264 MB in  3.01 seconds =  87.59 MB/sec


 [2]

/dev/sda1:
 Timing buffered disk reads: 260 MB in  3.01 seconds =  86.50 MB/sec


 [3]

/dev/sda1:
 Timing buffered disk reads: 262 MB in  3.00 seconds =  87.20 MB/sec


 [4]

/dev/sda1:
 Timing buffered disk reads: 260 MB in  3.01 seconds =  86.41 MB/sec


 [5]

/dev/sda1:
 Timing buffered disk reads: 256 MB in  3.01 seconds =  85.09 MB/sec


 [6]

/dev/sda1:
 Timing buffered disk reads: 262 MB in  3.00 seconds =  87.25 MB/sec


 [7]

/dev/sda1:
 Timing buffered disk reads: 256 MB in  3.00 seconds =  85.29 MB/sec


 [8]

/dev/sda1:
 Timing buffered disk reads: 260 MB in  3.02 seconds =  86.22 MB/sec


 [9]

/dev/sda1:
 Timing buffered disk reads: 256 MB in  3.02 seconds =  84.69 MB/sec


 [10]

/dev/sda1:
 Timing buffered disk reads: 254 MB in  3.02 seconds =  84.18 MB/sec
  • ライト測定実行
$ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/tmp/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done


 [1]
2019年 12月  1日 日曜日 22:43:53 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.46349 s, 436 MB/s

real    0m2.572s
user    0m0.324s
sys 0m2.141s
2019年 12月  1日 日曜日 22:43:56 JST


 [2]
2019年 12月  1日 日曜日 22:44:06 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.83166 s, 379 MB/s

real    0m2.835s
user    0m0.355s
sys 0m2.114s
2019年 12月  1日 日曜日 22:44:09 JST


 [3]
2019年 12月  1日 日曜日 22:44:19 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.4487 s, 438 MB/s

real    0m2.452s
user    0m0.320s
sys 0m2.121s
2019年 12月  1日 日曜日 22:44:21 JST


 [4]
2019年 12月  1日 日曜日 22:44:31 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.80218 s, 383 MB/s

real    0m2.806s
user    0m0.252s
sys 0m2.207s
2019年 12月  1日 日曜日 22:44:34 JST


 [5]
2019年 12月  1日 日曜日 22:44:44 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.44116 s, 440 MB/s

real    0m2.445s
user    0m0.280s
sys 0m2.148s
2019年 12月  1日 日曜日 22:44:46 JST


 [6]
2019年 12月  1日 日曜日 22:44:56 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.48696 s, 432 MB/s

real    0m2.491s
user    0m0.288s
sys 0m2.196s
2019年 12月  1日 日曜日 22:44:59 JST


 [7]
2019年 12月  1日 日曜日 22:45:09 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.47327 s, 434 MB/s

real    0m2.477s
user    0m0.263s
sys 0m2.196s
2019年 12月  1日 日曜日 22:45:11 JST


 [8]
2019年 12月  1日 日曜日 22:45:21 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.46071 s, 436 MB/s

real    0m2.464s
user    0m0.301s
sys 0m2.122s
2019年 12月  1日 日曜日 22:45:24 JST


 [9]
2019年 12月  1日 日曜日 22:45:34 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.61072 s, 411 MB/s

real    0m2.613s
user    0m0.279s
sys 0m2.130s
2019年 12月  1日 日曜日 22:45:37 JST


 [10]
2019年 12月  1日 日曜日 22:45:47 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.79738 s, 384 MB/s

real    0m2.801s
user    0m0.439s
sys 0m2.351s
2019年 12月  1日 日曜日 22:45:49 JST

Disk

IDE 300GB / DiamondMax 10

CPU

PassMark - Intel Celeron 1007U @ 1.50GHz - Price performance comparison

$ cat /proc/cpuinfo | grep model
model       : 58
model name  : Intel(R) Celeron(R) CPU 1007U @ 1.50GHz
model       : 58
model name  : Intel(R) Celeron(R) CPU 1007U @ 1.50GHz

※2つ表示されているのは Dual-Core(2コア)だからです。

計測

  • 対象のデバイス確認
# fdisk -l

Disk /dev/sda: 300.1 GB, 300090728448 bytes, 586114704 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x00017034

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *        2048     1050623      524288   83  Linux
/dev/sda2         1050624     3147775     1048576   82  Linux swap / Solaris
/dev/sda3         3147776   586113023   291482624   83  Linux
  • リード測定実行
$ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 5;echo $'\n\n' $i;sudo hdparm -t /dev/sda1;done


 [1]

/dev/sda1:
 Timing buffered disk reads: 130 MB in  3.67 seconds =  35.43 MB/sec


 [2]

/dev/sda1:
 Timing buffered disk reads: 176 MB in  3.01 seconds =  58.50 MB/sec


 [3]

/dev/sda1:
 Timing buffered disk reads: 172 MB in  3.00 seconds =  57.25 MB/sec


 [4]

/dev/sda1:
 Timing buffered disk reads: 172 MB in  3.00 seconds =  57.31 MB/sec


 [5]

/dev/sda1:
 Timing buffered disk reads: 176 MB in  3.02 seconds =  58.27 MB/sec


 [6]

/dev/sda1:
 Timing buffered disk reads: 172 MB in  3.00 seconds =  57.24 MB/sec


 [7]

/dev/sda1:
 Timing buffered disk reads: 176 MB in  3.03 seconds =  58.08 MB/sec


 [8]

/dev/sda1:
 Timing buffered disk reads: 168 MB in  3.03 seconds =  55.45 MB/sec


 [9]

/dev/sda1:
 Timing buffered disk reads: 172 MB in  3.04 seconds =  56.62 MB/sec


 [10]

/dev/sda1:
 Timing buffered disk reads: 176 MB in  3.03 seconds =  58.03 MB/sec
  • ライト測定実行
$ for i in [1] [2] [3] [4] [5] [6] [7] [8] [9] [10];do sleep 10;echo $'\n\n' $i;date;time dd if=/dev/zero of=/tmp/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done


 [1]
2019年 12月  1日 日曜日 22:43:56 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 1.04362 秒、 1.0 GB/秒

real    0m1.047s
user    0m0.044s
sys     0m1.003s
2019年 12月  1日 日曜日 22:43:57 JST


 [2]
2019年 12月  1日 日曜日 22:44:07 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 5.99725 秒、 179 MB/秒

real    0m6.001s
user    0m0.684s
sys     0m0.579s
2019年 12月  1日 日曜日 22:44:13 JST


 [3]
2019年 12月  1日 日曜日 22:44:23 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 10.321 秒、 104 MB/秒

real    0m10.324s
user    0m0.509s
sys     0m0.877s
2019年 12月  1日 日曜日 22:44:34 JST


 [4]
2019年 12月  1日 日曜日 22:44:44 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 10.6365 秒、 101 MB/秒

real    0m10.640s
user    0m0.207s
sys     0m1.195s
2019年 12月  1日 日曜日 22:44:54 JST


 [5]
2019年 12月  1日 日曜日 22:45:04 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 10.0886 秒、 106 MB/秒

real    0m10.092s
user    0m0.294s
sys     0m1.096s
2019年 12月  1日 日曜日 22:45:15 JST


 [6]
2019年 12月  1日 日曜日 22:45:25 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 9.66024 秒、 111 MB/秒

real    0m9.709s
user    0m0.229s
sys     0m1.140s
2019年 12月  1日 日曜日 22:45:34 JST


 [7]
2019年 12月  1日 日曜日 22:45:44 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 8.9387 秒、 120 MB/秒

real    0m9.802s
user    0m0.216s
sys     0m1.116s
2019年 12月  1日 日曜日 22:45:54 JST


 [8]
2019年 12月  1日 日曜日 22:46:04 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 9.6272 秒、 112 MB/秒

real    0m9.631s
user    0m0.249s
sys     0m1.132s
2019年 12月  1日 日曜日 22:46:14 JST


 [9]
2019年 12月  1日 日曜日 22:46:24 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 9.94696 秒、 108 MB/秒

real    0m9.950s
user    0m0.272s
sys     0m1.096s
2019年 12月  1日 日曜日 22:46:34 JST


 [10]
2019年 12月  1日 日曜日 22:46:44 JST
1024+0 レコード入力
1024+0 レコード出力
1073741824 バイト (1.1 GB) コピーされました、 10.1556 秒、 106 MB/秒

real    0m10.159s
user    0m0.272s
sys     0m1.082s
2019年 12月  1日 日曜日 22:46:54 JST