GNU/Linux >> Linux の 問題 >  >> Linux

HDD のベンチマークを行うにはどうすればよいですか?

私は通常 hdparm を使用します 私のHDDのベンチマークに。直接読み取りとキャッシュ読み取りの両方をベンチマークできます。平均値を確立するために、コマンドを数回実行する必要があります。

ここに直読があります。

$ sudo hdparm -t /dev/sda2

/dev/sda2:
 Timing buffered disk reads: 302 MB in  3.00 seconds = 100.58 MB/sec

これがキャッシュされた読み取りです。

$ sudo hdparm -T /dev/sda2

/dev/sda2:
 Timing cached reads:   4636 MB in  2.00 seconds = 2318.89 MB/sec

詳細
-t     Perform  timings  of  device reads for benchmark and comparison 
       purposes.  For meaningful results, this operation should be repeated
       2-3 times on an otherwise inactive system (no other active processes) 
       with at least a couple of megabytes of free memory.  This displays  
       the  speed of reading through the buffer cache to the disk without 
       any prior caching of data.  This measurement is an indication of how 
       fast the drive can sustain sequential data reads under Linux, without 
       any filesystem overhead.  To ensure accurate  measurements, the 
       buffer cache is flushed during the processing of -t using the 
       BLKFLSBUF ioctl.

-T     Perform timings of cache reads for benchmark and comparison purposes.
       For meaningful results, this operation should be repeated 2-3
       times on an otherwise inactive system (no other active processes) 
       with at least a couple of megabytes of free memory.  This displays
       the speed of reading directly from the Linux buffer cache without 
       disk access.  This measurement is essentially an indication of the
       throughput of the processor, cache, and memory of the system under 
       test.

dd の使用

私も dd を使用しました このタイプのテストにも。上記のコマンドに加える変更の 1 つは、コマンドの最後にこのビット ; rm ddfile を追加することです。 .

$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=250000 && sync"; rm ddfile

これにより、 ddfile が削除されます コマンドが完了した後。 注: ddfile 保持する必要のない一時ファイルです。dd (of=ddfile に書き込んでいます )、HDD に負荷がかかっているとき。

その先へ

HDD のより厳密なテストが必要な場合は、Bonnie++ を使用できます。

参考文献

  • ディスクまたは CPU のベンチマークに「dd」を使用する方法
  • DD と Bonnie++ によるディスク IO のベンチマーク

(これは非常によくある質問です - https://stackoverflow.com/q/1198691 、 https://serverfault.com/q/219739/203726 、および https://askubuntu.com/q でそのバリエーションを見ることができます/87035/740413)

<ブロック引用>

[ディスクをベンチマークする] [dd] よりも優れた方法はありますか?

はい。ただし、実行に時間がかかり、結果を解釈する方法についての知識が必要です。実行する必要があるテストの種類には次のような影響があるため、すべてを一度に説明できる単一の数字はありません:

  • ランダム、シーケンシャル、またはその両方の I/O のパフォーマンスに関心がありますか?
  • ディスクの読み取りまたは書き込みを行っていますか (またはその両方が混在していますか)?
  • 待ち時間、スループット、またはその両方について懸念がありますか?
  • 同じハードディスクのさまざまな部分がどのように機能するかを理解しようとしていますか?
  • ディスクの使用時に特定のファイル システムがどのように動作するかに関心がありますか?それとも、ブロック デバイスに直接 I/O を実行することで、ディスクの生のパフォーマンスに近い結果が必要ですか?
  • 特定のサイズの I/O のパフォーマンスに関心がありますか?
  • I/O を同期または非同期で送信していますか?
  • 送信する I/O の量はどれくらいですか (送信する方法が少なすぎると、すべての I/O がキャッシュされて、ディスクの速度ではなく RAM の速度をテストすることになります)?
  • 書き込んでいるデータのコンテンツはどの程度圧縮できますか?

などなど。

以下は、最も実行しやすいツールを一番上に、難しい/より徹底した/より良いツールを一番下に並べた短いリストです:

<オール>
  • dd (順次読み取りまたは書き込み、スループットのみを表示、ファイル システムまたはブロック デバイスを使用するように構成可能、ブロック キャッシュをバイパスするように構成可能/I/O が実際に完了するまで待機)
  • hdparm (シーケンシャル読み取りのみ、スループットのみを表示、ファイルシステムを使用しない、ブロック キャッシュをバイパスするように構成可能、キャッシュ テストは最初の 2 MB のみを再読み取りする)
  • GNOME ディスク ユーティリティのベンチマーク (実行は簡単、ファイル システムは使用しない、グラフィカルだが完全な GNOME インストールが必要、さまざまなタイプの I/O のレイテンシとスループットの数値を示しますが、書き込みワークロードは実際にはサンプルごとに読み取り/書き込み/fsync を実行しています)サイズ)
  • fio (ほとんど何でも実行でき、詳細な結果が得られますが、構成と、その結果の解釈方法の理解が必要です)。これについて Linus は次のように述べています:

    Greg - Jens の FIO コードを入手してください。ディスクが何らかの「重複排除」(別名「ベンチマークの最適化」) を行っているかどうかを示す、実際の疑似ランダム コンテンツの書き込みなど、適切に処理します。

    [ https://github.com/axboe/fio/ ]

    それ以外は疑いがあります - bonnie やその他の従来のツールは忘れてください。

  • ソース: Linus Torvalds が Google Plus に Greg Kroah-Hartman に残したコメント


    IOPS ツールを使用

    これをすべて読むのが面倒なら、IOPS ツールをお勧めします。ブロックサイズに応じて実際の速度がわかります。

    それ以外の場合 - IO ベンチマークを実行するときは、次のことを確認します:

    • ブロックサイズ / キャッシュ / IOPS / 直接 vs バッファ / 非同期 vs 同期
    • 読み書き
    • スレッド
    • 待ち時間
    • CPU 使用率

    • どのブロックサイズを使用しますか :ディスクとの間で 1 GB の読み取り/書き込みを行う場合、I/O 操作を 1 回行うと高速になります。しかし、アプリケーションがハード ディスク全体に 512 バイトのチャンクを非シーケンシャルに書き込む必要がある場合 (ランダムではありませんが、ランダム I/O と呼ばれます)、これは見た目が異なります。現在、データベースはその性質上、データ ボリュームに対してランダム I/O を実行し、ログ ボリュームに対してシーケンシャル I/O を実行します。そのため、まず何を測定したいのかを明確にする必要があります。 Linux をインストールする場合とは異なる大きなビデオ ファイルをコピーする場合。

      このブロックサイズは、実行する I/O 操作の数に影響します。あなたがそうするなら、例えば。 OSのI / Oスケジューラーがそれらをマージする8つの順次読み取り(または書き込み、混合ではない)操作。そうでない場合は、コントローラーのキャッシュがマージを行います。 512 バイトの 8 つの連続ブロックまたは 1 つの 4096 バイト チャンクを読み取る場合、実際には違いはありません。 1 つの例外 - 直接同期 IO を実行し、次の 512 バイトを要求する前に 512 バイトを待機する場合。この場合、ブロック サイズを増やすことは、キャッシュを追加するようなものです。

      また、同期 IO と非同期 IO があることに注意してください。同期 IO を使用すると、現在の IO リクエストが返される前に次の IO リクエストを発行しません。非同期IOを使用すると、たとえばリクエストできます。 10 チャンクのデータを受け取り、到着するまで待ちます。個別のデータベース スレッドは通常、ログに同期 IO を使用し、データに非同期 IO を使用します。 IOPS ツール 512 バイトから始まる関連するすべてのブロック サイズを測定することで、これを処理します。

    • 読み書きできますか :通常、書き込みより読み取りの方が高速です。ただし、キャッシングは読み取りと書き込みではまったく異なる方法で機能することに注意してください:

      • 書き込みの場合、データはコントローラに渡され、キャッシュされている場合は、キャッシュがいっぱいでない限り、データがディスク上にある前に確認します。ツール iozone を使用すると、キャッシュ効果 (CPU キャッシュ効果とバッファー キャッシュ効果) のプラトーの美しいグラフを描くことができます。キャッシュは、書き込まれるほど効率が低下します。

      • 読み取りの場合、読み取りデータは最初の読み取り後にキャッシュに保持されます。最初の読み取りに最も時間がかかり、キャッシングはアップタ​​イム中にますます効果的になります。注目すべきキャッシュは、CPU キャッシュ、OS のファイル システム キャッシュ、IO コントローラーのキャッシュ、およびストレージのキャッシュです。 IOPS ツール 読み取りのみを測定します。これにより、「あらゆる場所で読み取る」ことが可能になり、読み取る代わりに書き込む必要がなくなります。

    • 使用するスレッドの数 :1 つのスレッド (ディスク ベンチマークに dd を使用) を使用すると、複数のスレッドを使用する場合よりもパフォーマンスが大幅に低下する可能性があります。 IOPS ツール これを考慮して、複数のスレッドで読み取ります。

    • あなたにとってレイテンシはどれほど重要ですか :データベースを見ると、IO レイテンシが非常に重要になります。挿入/更新/削除 SQL コマンドは、承認される前にコミット時にデータベース ジャーナル (データベース用語で「ログ」) に書き込まれます。これは、完全なデータベースがこの IO 操作が完了するのを待っている可能性があることを意味します。ここでは、iostat ツールを使用して平均待機時間 (await) を測定する方法を示します .

    • あなたにとって CPU 使用率はどのくらい重要ですか :CPU がアプリケーションのパフォーマンスのボトルネックになりやすいです。この場合、読み取り/書き込みバイトごとにどれだけの CPU サイクルが消費されるかを把握し、その方向に最適化する必要があります。これは、測定結果に応じて PCIe フラッシュ メモリの賛成/反対を決定することを意味します。再び iostat ツール IO 操作による CPU 使用率を概算できます。


    Linux
    1. Linuxでディスクをパーティション分割する方法

    2. LinuxでディスクがSSDかHDDかを確認する方法

    3. LinuxでSSDまたはHDDのディスクを見つける方法は?

    1. 実際にハードディスクでATAセキュリティを使用する方法は?

    2. /tmp のディスク容量を確認するにはどうすればよいですか?

    3. DD を使用して古いドライブから新しいドライブにデータを移行するにはどうすればよいですか?

    1. Linux でディスク I/O キャッシュをパージする方法は?

    2. ディスク io を監視するにはどうすればよいですか?

    3. Linux インストールを HDD から SSD に移行するにはどうすればよいですか?