为什么暂停的进程在 ps 中显示 CPU 使用率很高?

为什么暂停的进程在 ps 中显示 CPU 使用率很高?

有时当某个进程被暂停(处于 T 状态)时,输出会ps显示该进程使用了​​异常数量的 CPU%。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
cossey    8697 26.9  0.0   8808   672 pts/3    T    09:25   0:22 gzip

这是一个错误吗ps

答案1

在某些版本的 中ps,该%CPU列显示进程整个生命周期的平均 CPU 使用率。其他版本则采用衰减平均值 (http://www.google.com/search?q=ps+cpu+decaying+average),但即使这样,您在暂停后也必须等待一段时间才能使平均值降至 0。

POSIX 说

处理器

最近使用的 CPU 时间与同一时间段内可用的 CPU 时间之比,以百分比表示。此处“最近”的含义未指定。可用的 CPU 时间以未指定的方式确定。

理由如下:

pcpu 字段表示可用的 CPU 时间以未指定的方式确定。这是因为很难表达一种适用于所有可能的机器架构的算法。该值的历史对应物试图显示最近(例如前一分钟)的使用百分比。通常,所有进程的这些值加起来不等于 100%。鼓励实现向用户提供此字段中的数据,以帮助他们识别当前影响系统性能的进程。

相关内容