我在 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 时,会添加终止子进程(及其后代)的时间。