ファイルシステムの読み取りと書き込み、特にNFSマウントに関する統計を取得することに興味があります。
たとえば、多くのツールがあることを知っていますが、iostat
すべてのnfsstat
プログラムinotifywait
に問題があります。
階層の複雑さのため、ファイルシステムを参照したり、ファイル名を明示的に言及したりする必要があるものは使用できません。
必要に応じて次のことができるプログラムはありますか?
- 読み取り/書き込み表示
- 読み書きパスの表示
- バイト数表示
オンデマンドとは実行時間を意味します。ポイント(3)は必須ではありません。
たとえば、私は次のことができるようにしたいと思います。
$ magicIOprogram
read, 512, /path/to/file1
read, 256, /path/to/file2
write, 15, /path/to/file3
write, 10562, /path/to/file4
私が知らない上記のツールを使用してこの情報を取得する方法がある場合は、それも十分な解決策になります。
ベストアンサー1
試してみたいかもしれませんシステム蛇口。
ここで少し修正してくださいはい100ミリ秒ごとに開く、読み取り、書き込みを表示する:
#! /usr/bin/env stap
global fileread, filewrite
probe syscall.open.return {
if ($return != -1) {
printf("open, %s, %d/%d\n", user_string($filename), pid(), $return)
}
}
probe syscall.read.return {
p = pid()
fd = $fd
bytes = $return
if (bytes > 0)
fileread[p, fd] += bytes
}
probe syscall.write.return {
p = pid()
fd = $fd
bytes = $return
if (bytes > 0)
filewrite[p, fd] += bytes
}
probe timer.ms(100) {
foreach (v = [p,fd] in fileread) {
printf("read, %d, %d/%d\n", v, p, fd)
}
delete fileread
foreach (v = [p,fd] in filewrite) {
printf("write, %d, %d/%d\n", v, p, fd)
}
delete filewrite
}
出力ラインの形式は次のとおりです。
open,(パス名),(pid)/(fd)
読み取り、(バイト)、(pid)/(fd)
書き込み、(バイト)、(pid)/(fd)