获取 ext3 和其他文件系统的类似 nfsstat 的统计信息
Posted
技术标签:
【中文标题】获取 ext3 和其他文件系统的类似 nfsstat 的统计信息【英文标题】:Getting nfsstat-like statistics for ext3 and other filesystems 【发布时间】:2011-05-08 10:43:40 【问题描述】:对于那些不熟悉 nfsstat 的人:它基本上只是计算对特定函数的调用次数。通过这种方式可以获得有关 NFS I/O 操作的统计信息,从而使用它们来分析性能。
我想以更一般的方式做类似的事情。我想以某种方式计算例如的数量。 “统计”电话。如果可能的话,每个挂载点的计数。但是,我不确定从哪里开始。我有足够的 C 语言对 libc 库的编程技能,但缺乏 Linux 内核的知识。
我觉得这应该通过可加载的内核模块来完成,但我不确定内核 API 是否提供了挂钩这些类型的系统调用的可能性。或者我应该为此使用 inotify(不监控 stat 调用)?
从哪里开始?
【问题讨论】:
【参考方案1】:要监视系统上发生的所有系统调用,您可以使用Linux audit subsystem 监视特定的系统调用。您可以设置过滤器,例如将监视限制在目录树中。文档相当稀疏;从auditctl man page 或this tutorial 开始。最近的发行版提供了一个auditd
包。安装它并确保auditd
守护进程正在运行,然后执行
auditctl -A exit,always -F dir=/mount/point -S stat
并观察电话登录/var/log/audit/audit.log
(或您的发行版设置的任何位置)。
在另一个极端,如果您只对特定进程(以及它的子进程)进行的系统调用感兴趣,请使用strace。
strace -s9999 -estrace -f mycommand
在这两者之间,如果你想观察一些程序对文件系统的访问,让他们通过loggedfs访问你关心的文件。这是一个可堆叠的文件系统:它提供了现有目录树的替代视图。它可以记录每一个操作,有丰富的过滤器和合理的文档。
【讨论】:
谢谢,这会让我上路!以上是关于获取 ext3 和其他文件系统的类似 nfsstat 的统计信息的主要内容,如果未能解决你的问题,请参考以下文章