在/proc/<pid>/stat中,我为所有进程添加了用户cpu、系统cpu、子用户和子系统cpu。我从以前的样本中取了一个三角图。
在我将用户、/proc/stat和系统CPU之和之后,这应该是整个机箱的总和。我再来一次三角洲。
来自进程的总和几乎总是略大于整个处理器的总和,我不知道为什么。
发布于 2019-01-17 17:11:57
有几个原因可以解释为什么会是这样,最明显的一个原因是,每个过程的会计使用不同的逻辑来计算不同的事情。
两个具体例子:
stat有一个nice列,它计算用户在漂亮任务上花费的时间(较低的优先级)--您没有指定使用它,所以我猜您没有加起来。在此过程中,这将被计算为标准的用户时间。iowait时间--也是您没有考虑的时间--很可能在流程stat中被计算为系统时间。但是,在iowait时间中计算也是个坏主意,因为它对实际时间的计算非常不可靠,正如man proc所解释的:iowait (自从Linux2.5.41) (5)等待I/O完成的时间。此值不可靠,原因如下:
最后,我必须指出,我相信这类会计是没有用的,因为它永远不可能准确到足以达到任何严重的目的-系统和处理计数器是在系统的不同部分为不同的目的处理的,而且永远无法与任何有用的程度相匹配。
https://unix.stackexchange.com/questions/494868
复制相似问题