【问题标题】:Getting nfsstat-like statistics for ext3 and other filesystems获取 ext3 和其他文件系统的类似 nfsstat 的统计信息
【发布时间】:2011-05-08 10:43:40
【问题描述】:

对于那些不熟悉 nfsstat 的人:它基本上只是计算对特定函数的调用次数。通过这种方式可以获得有关 NFS I/O 操作的统计信息,从而使用它们来分析性能。

我想以更一般的方式做类似的事情。我想以某种方式计算例如的数量。 “统计”电话。如果可能的话,每个挂载点的计数。但是,我不确定从哪里开始。我有足够的 C 语言对 libc 库的编程技能,但缺乏 Linux 内核的知识。

我觉得这应该通过可加载的内核模块来完成,但我不确定内核 API 是否提供了挂钩这些类型的系统调用的可能性。或者我应该为此使用 inotify(不监控 stat 调用)?

从哪里开始?

【问题讨论】:

    标签: c linux filesystems hook kernel


    【解决方案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访问你关心的文件。这是一个可堆叠的文件系统:它提供了现有目录树的替代视图。它可以记录每一个操作,有丰富的过滤器和合理的文档。

    【讨论】:

    • 谢谢,这会让我上路!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 2011-08-24
    • 2010-09-12
    • 2012-10-15
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多