web-dev-qa-db-ja.com

Linuxでディスク遅延をテストする方法は?

RAIDファームウェアのアップグレードを行い、レイテンシが増加したようです。

ディスクの読み取りと書き込みの待ち時間を調べる最も正確な方法についてアドバイスをいただけますか?

4
forker

IOzone 優れたベンチマーク。

ランダム読み取り、ランダム書き込み、ランダム混合テストを実行して、待ち時間を確認します。

3
ooshro

Linuxのハードディスクのチューニングと基本的なパフォーマンスの監視に共通するツールは hdparm です。

3
shellholic

ddを使用して、ディスクのレイテンシを測定できます

卵。

dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=dsync
2
Mithrandir

回答で説明したように、fioを使用することをお勧めします https://askubuntu.com/a/991311/50254

fioを使用すると、さまざまな作業負荷(シングルスレッドの巨大なシーケンシャル書き込みQD32と複数のスレッドでのランダムな読み取りと書き込みの混合4k QD1の間のすべて)のレイテンシーの分布に関する詳細情報を取得できます。

ハードウェアのレイテンシが以前よりも高いと想定する場合は、シングルスレッドのランダム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

テストファイルが作成されますfio-tempfile.dat現在の作業ディレクトリにあるため、最初にテストするデバイスに変更してください。 (ファイルシステムでのパフォーマンスではなく、rawデバイスのパフォーマンスをテストする場合は、rawデバイスをfilenameとして使用できます。ただし、そのデバイスの現在のコンテンツは失われます。)

データを読み取る代わりに書き込むことで同じことをテストすることもできます:

fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randwrite --size=500m --io_size=10g --blocksize=4k --ioengine=libaio --fsync=1 --iodepth=1 --direct=1 --numjobs=1 --runtime=60 --group_reporting

書き込みによるレイテンシーの大幅な増加が見られる場合は、古いファームウェアではライトバックキャッシュが許可されており、新しいファームウェアでは許可されていないことを確信できます。バッテリーでバックアップされたRAIDコントローラーまたは正しく構成されたUPSを除いて、データを重要と考える場合は、ライトバックキャッシュは必要ありません。

1