小编Luc*_*adi的帖子

如何计算Linux中多进程应用程序的CPU使用率

我尝试使用C/C++编写程序,在Linux中表现得像top命令.我做了一些研究,并且已经知道如何计算进程的CPU使用率.我们可以通过在当前时间和几秒钟后从/ proc/[PID]/stat计算stime + utime来获得CPU使用率.然后计算stime + utime差异并将结果与​​正常运行时间差异除,然后我们得到CPU使用率百分比.单进程/多线程进程将非常容易.

问题出在类似httpd的情况下,它作为多进程工作.当webserver忙时,httpd将fork子进程来提供一堆请求.然后我计算总进程的数量,比方说500.我想计算这些进程的CPU使用率,但总结它们所以我只看到1个httpd CPU使用率.但是,如果我像上面提到的那样进行算法,当几秒钟后进程数减少到<500时,我得到负值,因为计算将是这样的(例如,我选择随机数,只是为了给你简要说明):

Uptime: 155123, No of processes : 500, Stime + Utime total of 500 processes : 3887481923874
Uptime: 155545, No of processes : 390, Stime + Utime total of 390 processes : 2887123343874
Run Code Online (Sandbox Code Playgroud)

如果您查看上面的示例,Stime + Utime的增量将导致负值,因为进程数减少,并在几毫秒后给出较低的值.我只是想知道,有没有其他方法来计算这样的过程表现如此?谢谢.

c c++ linux apache multiprocess

5
推荐指数
1
解决办法
853
查看次数

标签 统计

apache ×1

c ×1

c++ ×1

linux ×1

multiprocess ×1