我需要编写一个应用程序来获取 Linux 机器上的性能统计信息。不幸的是,环境的内存非常有限,因此使用标准命令行工具并不是真正的选择,因为我需要非常频繁地轮询它们。
理想情况下,我希望能够做的是直接从内核本身获取性能数据,使用相同的缓冲区和数据来尝试尽可能减少我的应用程序的 RAM 要求。将我的应用程序如此紧密地绑定(bind)到 Linux 内核并不是真正的问题,我们只在生产中使用过 Linux,而且我看不到它有任何真正的改变。
我花了一两天时间查看了内核源代码,但我不得不承认我有些不知所措。谁能指出我访问 CPU 性能信息/I/O 性能信息/网络性能信息和带宽使用信息的正确位置?
最佳答案
我觉得/proc下有几个文件,比如/proc/stat、/proc/diskstats、/proc/net/*。
对于 CPU 性能信息,使用/proc/stat,文件格式在 Linux 内核源代码树中的文件 ./fs/proc/stat.c 中定义。
对于磁盘访问信息,使用/proc/diskstats,文件格式定义在Linux Kernel源代码树中的文件./block/genhd.c中,函数为diskstats_show()。
关于网络相关的统计,可以引用/proc/net/下的文件。但我不知道如何根据目录/proc/net 下的文件计算带宽使用量。
关于linux - 直接从 linux 内核访问系统性能数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17940011/