2011-05-08 91 views
1

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

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

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

从哪里开始?

回答

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

+0

谢谢,这会让我在路上! – Cheatah 2011-05-08 14:26:56