我正在尝试寻找一个程序,它可以主动监控每秒打开文件时读取和写入的数据量,然后将使用率最高的文件排在最前面。这类似于iotop
但基于每个文件而不是每个线程或每个进程。它也与 Windows 7 资源监视器中的“磁盘”选项卡相同。有什么建议吗?谢谢
答案1
我认为某些基于的东西lsof
可能会有用,但我还没有真正使用过它。
这里有很多示例脚本:http://fts.ifac.cnr.it/cgi-bin/dwww/usr/share/doc/lsof/examples/?type=dir这也许会给你提供一些关于如何做你想做的事情的线索。
答案2
嗯,恶心 :)
我能找到最接近的是在进程级别上执行 io 统计的 stap 模块。
注意:Systemtap 可以在运行时更改内核内部内容,请自行承担使用风险! https://wiki.ubuntu.com/Kernel/Systemtap
此脚本:
http://sourceware.org/systemtap/wiki/Scripts/execname-iotop
使用 vfs_read/write 获取代表进程 X 执行的总 IO 数。你会注意到 vfs_read 需要结构文件作为一个参数,因此您倾向于确定您可以在该入口点监视 io 的实际文件句柄。
我没有办法一下子确定这一点,说实话,要做到这一点需要一些工作。这留给原帖者练习。您可能希望查看 Linux“perf”,那里可能有一个现成的方法。
或者您可能需要重新考虑您的整个方法。