特定のディレクトリのディスクI / Oを監視する方法は?

特定のディレクトリのディスクI / Oを監視する方法は?

単一のディレクトリ内のファイルに書き込む既知の名前を持つ複数のプロセスがあります。記録したい数量一定期間のディスクブロックへの読み書き数いいえファイルアクセスのみ)パラメータ変更によってI / O量が大幅に減少するかどうかをテストします。現在これを使用していますが、パーティションiostat -d -p全体に制限されています。

答え1

これが単純で面白く聞こえることがわかりますが、問題のアプリケーションを制御できる場合(おそらくテスト環境で)、ディレクトリを自分のパーティションにマウントしてから待ってからiostatそれを知らせるだけです。指す。

物理ドライブが関係している場合は、ループバックマウントを使用して偽にすることができます。

dd if=/dev/zero of=/bigdisk/LOOPFILE bs=1024m count=1024m # 1gb loopback file
mke2fs -j /bigdisk/LOOPFILE
mkdir /tmpcopy
mount -o loop /tmpcopy /bigdisk/LOOPFILE
cp -r -p $SPECIALDIR2MONITOR /tmpcopy
umount /tmpcopy
mount -o loop $SPECIALDIR2MONITOR  /bigdisk/LOOPFILE,

iostatこれにより、競合しているすべてのディスクI / Oが完全に削除されるわけではありませんが、出力はユーザーのニーズにもっと具体的であると確信しています。

答え2

使用inotifywait -m DIRNAMEできるイノティファイツール

答え3

直接的な方法はないようです。必要なデータを取得する一つの方法は仮想ファイルシステム訪問を記録します。ジャーナルファイルシステムそれはあなたが興味のあるすべてのデータを表示できるかどうかはわかりませんが、そのようなファイルシステムです。 (そうでない場合は、そのデータに対して適切なエンコード操作を実行することもできます。)

mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica

関連情報