ハードドライブのパフォーマンスを確認する方法(端末またはGUIのいずれか)。 書き込み速度。 読み取り速度。 キャッシュサイズと速度。 ランダムな速度。
端子方式
hdparm
開始するには良い場所です。
sudo hdparm -Tt /dev/sda/dev/sda:Timing cached reads: 12540 MB in 2.00 seconds = 6277.67 MB/secTiming buffered disk reads: 234 MB in 3.00 seconds = 77.98 MB/sec
sudo hdparm -v /dev/sda
同様に情報を提供します。
dd
書き込み速度に関する情報を提供します。
ドライブにファイルシステムがない場合(および だけにして)、使用 of=/dev/sda
.
それ以外の場合は、/tmpにマウントして書き込み、テスト出力ファイルを削除します。
dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output10240+0 records in10240+0 records out83886080 bytes (84 MB) copied, 1.08009 s, 77.7 MB/s
グラフィカルメソッド
- >>System-Administration-Disk Utilityに移動します。
- または、コマンドラインから次のコマンドを実行してGnome disk utilityを起動します
gnome-disks
- または、コマンドラインから次のコマンドを実行してGnome disk utilityを起動します
- 左ペインでハードディスクを選択します。
- 今すぐ右ペインの"ベンチマーク–ドライブのパフォーマンスを測定"ボタンをクリッ
- グラフを含む新しいウィンドウが開きます。あなたが見つけて、二つのボタンになります。 一つは"読み取り専用ベンチマークを開始する"ためのものであり、もう一つは"読み取り/書き込みベンチマークを開始する"です。 あなたが誰かのボタンをクリックすると、それはハードディスクのベンチマークを開始します。
ディスクI/Oをベンチマークする方法
もっと欲しいものはありますか?
しかし、より簡単な方法があります、conv=fdatasyncは仕事をします:
dd if=/dev/zero of=/tmp/output conv=fdatasync bs=384k count=1k; rm -f /tmp/output1024+0records in1024+0 records out402653184 bytes (403 MB) copied, 3.19232 s, 126 MB/s
精度が必要な場合は、次を使用する必要があります fio
. マニュアルを読む必要があります(man fio
)しかし、それはあなたに正確な結果を与えるでしょう。 任意の精度のために、あなたが測定したい正確に何を指定する必要があることに注意してください。 いくつかの例:
大きいブロックとの順次読まれた速度 (これはあなたがあなたのドライブのための指定で見る数の近くにあるべきです):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=read --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
大きなブロックでのシーケンシャル書き込み速度 (これはあなたがあなたのドライブのための指定で見る数の近くにあるべきです):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=write --size=500m --io_size=10g --blocksize=1024k --ioengine=libaio --fsync=10000 --iodepth=32 --direct=1 --numjobs=1 --runtime=60 --group_reporting
ランダム4K読み取りQD1 (これは、あなたが確かによく知っていない限り、現実世界のパフォーマンスにとって本当に重要な数です):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randread --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
混合された任意4KはSYNCのQD1を読み、書きます (これはあなたがあなたのドライブから期待するべき最悪のケース番号であり、通常は仕様シートに記載されている数字の1%未満です):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randrw --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting
増加して下さい --size
ファイルのサイズを大きくするための引数。 より大きなファイルを使用すると、ドライブの技術とファームウェアに応じて取得する数を減らすことができます。 小さなファイルは、読み取りヘッドがそれほど移動する必要がないため、回転メディアの結果が"あまりにも良い"となります。 デバイスが空の近くにある場合、ドライブをほぼ埋めるのに十分な大きさのファイルを使用すると、各テストで最悪の動作が発生します。 SSDの場合、ファイルサイズはそれほど重要ではありません。
ただし、一部の記憶媒体では、 ファイル それほど重要ではありません 短時間の間に書き込まれた合計バイト数. たとえば、一部のSsdは、事前に消去されたブロックで大幅に高速なパフォーマンスを持っているか、書き込みキャッシュとして使用される小さなSLCフラッ 別の例として、Seagate SMR Hddには約20GBのPMRキャッシュ領域があり、かなり高いパフォーマンスがありますが、一杯になると、SMR領域に直接書き込むと、元のパフォーマ このパフォーマンスの低下を確認する唯一の方法は、最初に20+GBをできるだけ早く書き込み、その後すぐに実際のテストを続行することです。 デバイスが内部キャッシュをクリーンアップできるようにする長い遅延で書き込みアクセスが急増している場合、短いテストシーケンスは実世界のパフォー 多くのIOを実行する必要がある場合は、両方を増やす必要があります --io_size
と --runtime
パラメータ。 一部のメディア(例えば、ほとんどのメディア)に注意してくださ 安い フラッシュチップは非常に迅速にダウン着用するのに十分な貧しいので、フラッシュデバイス)は、このようなテストに苦しむでしょう。 私の意見では、この種のテストを処理しないほどデバイスが貧弱であれば、どのような場合でも貴重なデータを保持するために使用すべきではあり それは、すべてのフラッシュセルが書き込みである程度の摩耗を持つため、1000回の大きな書き込みテストを繰り返さないでください。
さらに、一部の高品質SSDデバイスは、データがまだSLCキャッシュにある間に書き直された場合、内部SLCキャッシュがデータをその場で置き換えるのに十分 このようなデバイスでは、テストファイルがデバイスの合計SLCキャッシュよりも小さい場合、完全なテストは常にSLCキャッシュにのみ書き込み、デバ そのため、このようなデバイスでは、ファイルサイズが再び重要になります。 実際の作業負荷がわかっている場合は、実際に実際に表示されるファイルサイズでテストすることをお勧めします。 予想されるワークロードがわからない場合は、ストレージデバイスの約50%を満たすテストファイルサイズを使用すると、すべてのストレージ実装で平均的な結果が得られるはずです。 もちろん、50TBのRAIDセットアップの場合、25TBのテストファイルで書き込みテストを行うにはかなりの時間がかかります!
注意してほしいのは、 fio
最初の実行時に必要な一時ファイルを作成します。 これは、永続的なストレージに書き込む前にデータを圧縮することによってベンチマークでチートしようとするデバイスからあまりにも良い数字を得な 一時ファイルが呼び出されます fio-tempfile.dat
上記の例では、現在の作業ディレクトリに格納されています。 そのため、最初にテストするデバイスにマウントされているディレクトリに変更する必要があります。 その fio
また、テストターゲットとして直接メディアの使用をサポートしていますが、直接ストレージメディアアクセスを使用すると、タイプミスがオペレーティングシステム全体を上書きする可能性があるため(テストデバイスの代わりに誤ってOSデバイスに書き込むなど)、試してみる前にマニュアルページを読むことをお勧めします。
あなたが良いSSDを持っていて、さらに高い数字を見たい場合は、増やしてください --numjobs
以上。 これは、読み取りと書き込みの同時実行性を定義します。 上記の例はすべて numjobs
に設定する 1
したがって、テストはシングルスレッドのプロセスの読み取りと書き込みに関するものです(おそらくキューの深さまたはQD iodepth
). ハイエンドSsd(Intel Optane905pなど)は、増加しなくても高い数値を取得する必要があります numjobs
多くの(例えば... 4
最高の仕様番号を取得するのに十分でなければなりません)が、一部の"Enterprise"Ssdは範囲に行く必要があります 32
-128
これらのデバイスの内部レイテンシは高いが、全体的なスループットは異常であるため、仕様番号を取得するには。 増加することに注意してください numbjobs
高い値には、通常、結果が増加します ベンチマークパフォーマンス 数字が、まれにどのような方法で現実世界のパフォーマンスを反映していません。
私は使用することをお勧めしません /dev/urandom
それはソフトウェアベースで豚のように遅いので。 Ramdisk上のランダムなデータの塊を取る方が良いです。 ハードディスクでは、すべてのバイトがそのまま書き込まれるため、ランダムなテストは問題ではありません(ddのssdでも)。 しかし、純粋なゼロデータまたはランダムデータで重複排除されたzfsプールをテストすると、パフォーマンスに大きな違いがあります。
最近のすべてのファイルシステムは、ファイル操作でキャッシュを使用します。
メモリではなくディスク速度を実際に測定するには、キャッシュ効果を取り除くためにファイルシステムを同期する必要があります。 それは簡単に行うことができます:
time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync"
そのメソッドを使用すると、出力が得られます:
sync ; time sh -c "dd if=/dev/zero of=testfile bs=100k count=1k && sync" ; rm testfile 1024+0 records in1024+0 records out104857600 bytes (105 MB) copied, 0.270684 s, 387 MB/sreal 0m0.441suser 0m0.004ssys 0m0.124s
>したがって、ディスクデータはちょうど104857600/0.441=237772335B/s-237MB/sです
これは、キャッシュよりも100MB/s以上低いです。
幸せなベンチマーク,
ディスクの読み取りと書き込み速度をリアルタイムで監視する場合は、次のものを使用できます。 iotop(イオトップ) ツール。
これは、特定のアプリケーションまたはワークロードでディスクがどのように実行されるかについての情報を取得するのに便利です。 出力には、プロセスごとの読み取り/書き込み速度と、サーバーの合計読み取り/書き込み速度が次のように表示されます top
.
インストール iotop
:
sudo apt-get install iotop
それを実行します:
sudo iotop
このツールは、より一般的で理論的なテストと比較して、特定のワークロードに対してディスクがどのように実行されるかを理解するのに役立ちます。
書き込み速度
$ dd if=/dev/zero of=./largefile bs=1M count=10241024+0 records in1024+0 records out1073741824 bytes (1.1 GB) copied, 4.82364 s, 223 MB/s
ブロックサイズは実際にはかなり大きいです。 あなたは64kや4kのようなより小さなサイズで試すことができます。
読み取り速度
メモリキャッシュをクリアするには、次のコマンドを実行します
$ sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
書き込みテストで作成されたファイルを読み込みます:
$ dd if=./largefile of=/dev/null bs=4k165118+0 records in165118+0 records out676323328 bytes (676 MB) copied, 3.0114 s, 225 MB/s
bonnie++は私がlinuxのために知っている究極のベンチマークユーティリティです。
(私は現在、windowsベースのマシンをテストするために、bonnie++と一緒にlinux livecdを準備しています!)
これは、キャッシュ、同期、ランダムデータ、ディスク上のランダムな場所、小さなサイズの更新、大規模な更新、読み取り、書き込みなどの世話をします。 Usbkey、ハードディスク(ロータリー)、ソリッドステートドライブとramベースのファイルシステムを比較することは、初心者のために非常に有益なことができます。
Ubuntuに含まれているかどうかはわかりませんが、ソースから簡単にコンパイルできます。
bonnie++の使用方法に関するいくつかのヒント
bonnie++ -d [TEST_LOCATION] -s [TEST_SIZE] -n 0 -m [TEST_NAME] -f -b -u [TEST_USER] bonnie++ -d /tmp -s 4G -n 0 -m TEST -f -b -u james
もう少しで: 簡単なBONNIE++の例.
Similar question has been asked over on linux - How can I benchmark my HDD? - Unix & Linux Stack Exchange , file io - Testing IO performance in Linux - Stack Overflow and io - I/O Performance Benchmarking Linux - Server Fault .