過去1時間にブロックデバイスへの読み取り/書き込み要求の量を追跡するためのツールはLinuxにありますか?

過去1時間にブロックデバイスへの読み取り/書き込み要求の量を追跡するためのツールはLinuxにありますか?

入力データを取り込んで処理し、ブロックデバイスにデータを書き込むLinuxプログラムの性能実験を行っています。

入力にどれだけのデータがあるか(1GBなど)は知っていますが、プログラムはそれを処理するため(一部の中間データの削除、追加のデータ書き込みを含む)、ブロックデバイスに書き込まれるデータの量を正確に知りません。したがって、これはブロック装置の全体的なスループットを計算するのに有害である。

試してみましたが、blktrace簡単に多くのデータを取得でき、これが1時間経過するように動作するかどうかはわかりません。

IOデバイスをベンチマークすることは可能ですが、FIO特にこのプログラムでブロックIOデバイスの動作をテストしたいと思います。だから基本的に私は実際にブロックIOデバイスだけでなく、ブロックIOデバイスとプログラムの組み合わせをテストしています。

du -shこのアプローチも検討しましたが、du -sh削除されたデータ量をキャプチャできませんでした。また、du -sh物理デバイスに記録されたデータをキャプチャできますか?つまり、ファイルシステムではありません。

使用できる他のツールはありますか?

答え1

1時間あたりの読み取り/書き込み合計バイトが必要な場合はiostatこれを提供できます。

$ iostat sda -tdyh 10
Linux 4.12.14-122.136-default (hostname)       05/22/2023      _x86_64_        (18 CPU)

05/22/2023 12:56:22 PM
      tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn Device
     2.30         0.0k        14.8k       0.0k     148.0k sda

05/22/2023 12:56:32 PM
      tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn Device
   412.00         0.0k       102.5M       0.0k       1.0G sda

05/22/2023 12:56:42 PM
      tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn Device
   420.80       102.4M       104.8k       1.0G       1.0M sda

kB_readそして、kB_wrtnそれぞれ読み書きしたブロックの総数を表示します。まず、以下を示します。

  • 〜サイ12:56:22そして12:56:32ディスクに1GBが書き込まれました。
  • 〜サイ12:56:32そして12:56:42ディスクから1GBを読みました。

dd(この数字を生成し、正しい報告を確実にするために、ディスクに1Gファイルを書き込むか読み取るコマンドを使用しました)

私が使ったフラグ:

  • -t- 各レポートに表示される時間を印刷します。
  • -d- デバイスレポートのみが表示されます。 (このレポートがない場合は、iostatCPU使用率も表示されます。)
  • -y- システム起動後の最初の統計レポートを省略します。間隔間の使用率のみが報告されます。
  • -h- デバイス使用率の報告を人が読みやすくします(必要に応じてkBだけでなくMB / GB)。
  • 10- 間隔は秒単位で、この場合は10秒ごとです。毎時間確認したい場合は、3600を使用してください。

関連情報