
現在、さまざまな開発タスクを実行していますが、現在のシステムでは IO パフォーマンスが原因で処理速度が遅くなっています。
IOを消費するタスクを実行中にディスク操作を記録し、パフォーマンス情報(書き込み/秒、読み取り/秒など)を含め、新しいシステムで再生してパフォーマンスを確認する方法はありますか?(同じデータセットに対して同じコマンドを再実行する必要はありません)?
だろうブロックトレース、ブロックパースまたはフィオこの場合、私を助けていただけますか?
例えば、私のシステムでベンチマークをしたいとします。
find -name "*.php" | xargs grep -r "test_string"
50,000 個のファイルを含むフォルダ内(もちろん複数のレベル)
統計情報を含むすべてのディスク操作をキャプチャし、50,000 個のファイル フォルダーがない別のシステムでそれらを再生したいと思います。基本的には、操作をシミュレートして、より高速に実行されるかどうかを確認するだけです。
私はディスクサンプルをキャプチャしようとしました
blktrace -d /dev/sda -o myfile.blk
しかし、どうやって再生すればいいのか分からないフィオ。
これは可能ですか?
ありがとう
答え1
いいえ。異なるハードウェアで同じタスクを実行するのにどれくらいの時間がかかるかを確認したい場合は、新しいハードウェアで同じタスクを実行する必要があります。
タスクをシミュレートしたい場合は、同じディスク セクターの読み取り/書き込みを試行することに加えて、データが読み取られた後にタスクがデータに対して行うあらゆる作業をシミュレートする方法を考え出す必要があります。
答え2
fioでファイルを再生するには、まずバイナリデータファイルblktrace
に変換する必要があります。blkparse
fioのread_iolog
オプション詳細については (replay_redirect
も役に立つかもしれません。
注記:fio を使用して書き込みを含む再生を再実行すると、再生対象のファイル/ディスク内のデータが破壊されます。ので注意してください!