为什么挂起的进程在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

在某些版本的ps%CPU列显示了整个过程的平均CPU使用率。 其他人实现了衰退的平均值( http://www.google.com/search?q=ps+cpu+decaying+average ),但即使如此,在暂停平均值降到0之后,您也必须稍等一会。

POSIX说 :

PCPU

最近使用的CPU时间与同一时间内CPU时间的比率,以百分比表示。 在这方面“近期”的含义是没有说明的。 可用CPU时间以未指定的方式确定。

理由是:

pcpu字段表示可用的CPU时间以未指定的方式确定。 这是因为很难expression一种在所有可能的机器体系结构中都有用的algorithm。 这个价值的历史同行试图显示在最近的过去,如前一分钟的使用百分比。 通常,所有过程的这些值不会达到100%。 鼓励实施向用户提供该领域的数据,以帮助他们识别当前影响系统性能的过程。