我需要编写一个能够在Linux机器上获得性能统计信息的应用程序。不幸的是,环境非常受内存限制,因此使用标准命令行工具并不是一个真正的选择,因为我需要经常轮询它们。
理想情况下,我希望能够直接从内核本身获取性能数据,使用相同的缓冲区和数据来尝试尽可能减少应用程序的RAM需求。如此紧密地将我的应用程序与Linux内核联系起来并不是一个真正的问题,我们只在生产中使用过Linux而且我看不到真正发生变化。
我花了最后一两天查看内核源码,但我不得不承认有些迷失。有人能指出我正确的地方获取CPU性能信息/ I / O性能信息/网络性能信息和带宽使用信息吗?
答案 0 :(得分: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下的文件计算带宽使用情况。