1

我需要编写一个在 Linux 机器上获取性能统计信息的应用程序。不幸的是,环境非常受内存限制,因此使用标准命令行工具并不是一个真正的选择,因为我需要非常频繁地轮询它们。

理想情况下,我希望能够直接从内核本身获取性能数据,使用相同的缓冲区和数据来尝试尽可能减少我的应用程序的 RAM 需求。将我的应用程序如此紧密地绑定到 Linux 内核并不是一个真正的问题,我们只在生产中使用过 Linux,而且我看不到这种情况真的会发生变化。

我花了最后一两天查看内核源代码,但我不得不承认有些迷茫。谁能指出我获取 CPU 性能信息/I/O 性能信息/网络性能信息和带宽使用信息的正确位置?

4

1 回答 1

5

我认为/proc下有几个文件,例如/proc/stat、/proc/diskstats、/proc/net/*。

对于 CPU 性能信息,使用 /proc/stat,文件格式在 Linux 内核源代码树中的文件 ./fs/proc/stat.c 中定义。

对于磁盘访问信息,使用/proc/diskstats,文件格式定义在Linux内核源代码树的./block/genhd.c文件中,函数为diskstats_show()。

关于网络相关的统计,可以参考/proc/net/下的文件。但我不知道如何根据目录 /proc/net 下的文件计算带宽使用量。

于 2013-07-30T07:18:11.267 回答