既知の名前を持ついくつかのプロセスがあり、すべて単一のディレクトリ内のファイルに書き込みます。テストする期間中のディスクブロックの読み取りと書き込み(notnot file access)の数を記録してテストしたいパラメータの変更によってI/Oの量が大幅に減少するかどうか。現在iostat -d -p
を使用していますが、これはパーティション全体に限定されています。
これは単純で不合理に聞こえると思いますが、問題のアプリを制御できる場合(おそらくテスト環境で)、そのディレクトリのみを独自のパーティションにマウントすることができ、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,
これで競合するディスクI/Oが完全に削除されるわけではありませんが、iostat
の出力がニーズに合わせたものになると確信しています。
直接的な方法はないと思います。必要なデータを取得する1つの方法は、アクセスをログに記録する virtual filesystem を使用してディレクトリツリーにアクセスすることです。 Loggedfs はそのようなファイルシステムの1つですが、関心のあるすべてのデータを表示できるかどうかはわかりません。
mkdir /tmp/replica
loggedfs /path/to/directory /tmp/replica
mycommand --root=/tmp/replica
fusermount -u /tmp/replica
inotify-tools からinotifywait -m DIRNAME
を使用できます。