如果某个进程明显正在运行,但其 CPU 利用率(秒数)却没有增加,这意味着什么?

如果某个进程明显正在运行,但其 CPU 利用率(秒数)却没有增加,这意味着什么?

我在 Ubuntu 12.04 系统上运行 redis。我们的监控查看 redis 进程并从 /proc/pid/stats 中获取 CPU 利用率。太棒了。

有几十秒的时间,这个数字根本没有增加,然后突然赶上来,增加了数千个。它继续以这种方式爆发。

在不增加时间期间,redis 响应迅速,并报告已完成数百次操作。因此,显然它正在调度并运行。

(更新:对我们来说,它似乎只发生在我们的 Ubuntu 3.13.0-48 系统上。运行类似服务的内核 3.5.x 的系统没有遇到此问题)。

当利用率(用户和系统)以这种方式表现时,这意味着什么?有什么可以设置来纠正它吗?

答案1

我假设您正在查看包含子进程使用的 CPU 时间的条目之一stat。如果是这样,times(2) 手册页中的注释解释了这一点...

当 wait(2) 或 waitpid(2) 返回其进程 ID 时,会添加终止子进程(及其后代)的时间。

相关内容