直接从Linux内核访问系统性能数据

Cro*_*ent 1 linux performance linux-kernel

我需要编写一个在Linux机器上获得性能统计信息的应用程序.不幸的是,环境受到极大的内存限制,所以使用标准命令行工具并不是一个真正的选择,因为我需要经常轮询它们.

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

我花了最后一两天查看内核源码,但我不得不承认有些迷失.有人能指出我正确的地方获取CPU性能信息/ I/O性能信息/网络性能信息和带宽使用信息吗?

tia*_*eng 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下的文件计算带宽使用情况.