我的文档管理软件正在执行大量 IO,我想知道它访问最多的是哪些文件。
是否有一个 Linux 工具可以每隔几秒给我一次 IO 消耗最高的文件列表,例如 iotop,但对于文件?
这可能看起来像:
$ thetool
THRPUT R/W/SWP FILE
40MB/s write /usr/alfresco/repo/1283421/1324928.doc
12MB/s read /usr/alfresco/cache/3928dh29f8if
11MB/s read /tmp/239398hf2f024f472.tmp
iotop
我查看了、的手册页lsof
,strace
他们似乎没有提供这样的功能。
答案1
我认为您的“字节数”指标是错误的。考虑两个访问。从一个文件中读取 10MB。另一个读取文件的每 512 个字节,获取前 10MB。与第二次访问相比,第一次访问的“字节数”将增加 512 倍。然而,它们都会给 I/O 子系统带来完全相同的负载。
如果您可以接受“操作数”(它与“字节数”一样好或一样坏),那么您就拥有了可以实际测量的东西。该inotifywatch
程序执行此操作,并且它可能是您的发行版inotify-tools
包的一部分。
它会立即告诉您哪些文件构成了大部分访问,并且可能会帮助您解决实际问题。