ベンチマーク/データストレージデバイス

提供: ArchWiki
移動先: 案内検索

この記事では HDD, SSD, USB メモリなどの I/O デバイスをベンチマークする Linux アプリを複数紹介しています。

概要

Linux で I/O をベンチマークする方法は様々です。

  • hdparm の -Tt スイッチを使うことで連続データ読み込み速度を測定できます。この方法はパーティションのアライメントの影響を受けません。
  • gnome-disk-utility パッケージには gnome-disks という名前のグラフィカルなベンチマークが含まれています。最低・最大・平均読み込み速度や平均アクセス速度をグラフィカルに表示します。この方法はパーティションアライメントの影響を受けません。
  • dd ユーティリティを利用して読み書き両方の速度を測定できます。この方法はパーティションアライメントの影響を受けます。つまり、パーティションのアライメントが正しくされていない場合、読み書き速度でそのことが確認されます。
  • Bonnie++ (注意: デフォルトでは bonnie++ はディスク上に RAM のサイズを最低2回は書き込みます。SSD を保護したい場合、デフォルトオプションは使わないようにしてください)。

hdparm を使う

# hdparm -Tt /dev/sdX
/dev/sdX:
Timing cached reads:   x MB in  y seconds = z MB/sec
Timing buffered disk reads:  x MB in  y seconds = z MB/sec
ノート: 正確な読み込み速度を測定するために、コマンドは4〜5回は実行して手動で平均値を計算することが hdparm の man ページで推奨されています。

gnome-disks を使う

# gnome-disks

GUI からベンチマークボタンを選択してください ("More actions..." => "Benchmark Volume..."):

systemd-analyze を使う

# systemd-analyze plot > boot.svg

上記コマンドはブートシーケンスの画像をプロットします: カーネルの起動時間, ユーザー空間の起動時間, 各サービスにかかった時間:

dd を使う

ノート: この方法では測定したいデバイスにマウントしたパーティションからコマンドを実行する必要があります。

まず、最低でも 1.1 GB の空き領域が存在する SSD のディレクトリ (ディレクトリにはユーザーが読み書き実行できる権限が必要) に移動して、テストファイルを書き込んで書き込み速度を測定します:

$ cd /path/to/SSD
$ dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc status=progress
1024+0 records in
1024+0 records out
w bytes (x GB) copied, y s, z MB/s
ヒント: See dd-benchmark for an explanation on the requirement to sync and further related dd options.

次に、デバイスからの読み込み速度を直接測定するためにバッファキャッシュを消去:

# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
w bytes (x GB) copied, y s, z MB/s

バッファからファイルが消去されたら、コマンドを再度実行してバッファキャッシュの速度を確認:

$ dd if=tempfile of=/dev/null bs=1M count=1024 status=progress
1024+0 records in
1024+0 records out
w bytes (x GB) copied, y s, z GB/s
ノート: バッファの読み込み速度を正確に測定するには、上記のコマンドを4〜5回は実行して平均値を求めてください。

最後に一時ファイルを削除:

$ rm tempfile
ノート: SSD コントローラの中にはハードウェア圧縮を行うものがあり、ベンチマークの結果が変わってしまうことがあります。http://www.pugetsystems.com/labs/articles/SSDs-Advertised-vs-Actual-Performance-179/ を見てください。

Core Utilities#dd も参照。

dcfldd を使う

Dcfldd は dd のように平均速度を MB/s などの形式で出力しませんが time コマンドで計測ができます。

ディスクを消去する時間を測定:

# time dcfldd if=/dev/zero of=/dev/sdX bs=4M
18944 blocks (75776Mb) written.dcfldd:: No space left of device
real     16m17.033s
user     0m0.377s
sys      0m51.160s

dcfldd コマンドの出力をかかった時間の秒数で割ることで MB/s を計算できます。例: 75776Mb / (16.4 分 * 60) = 77.0 MB/s。