今日は、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
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
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