我想知道是否有一种有效的解决方案来监控Linux中的进程资源消耗(cpu,内存,网络带宽).我想用C++编写一个守护进程来监视某些给定的PID.据我所知,经典的解决方案是定期从/ proc读取信息,但这似乎不是最有效的方式(它涉及许多系统调用).例如,要监视50个进程每秒的内存使用情况,我必须每秒从/ proc打开,读取和关闭50个文件(这意味着150个系统调用).更不用说阅读这些文件时涉及的解析.
另一个问题是网络带宽消耗:对于我想监视的每个进程,这都不容易计算.在我看来,NetHogs采用的解决方案涉及相当高的开销:它使用libpcap捕获并分析每个数据包,然后对于每个数据包,在/ proc中确定和搜索本地端口以找到相应的进程.
您是否知道这些方法是否有更有效的替代方案或任何处理此问题的库?