我有一个Embedded Linux(Kernel 2.6.37)
运行ARM
。有一个默认值top
来自busybox 1.13.2
. 我建立了一个procps-ng 3.3.11
通过交叉编译来运行它Linux
。我发现该过程的%cpu
输出top
来自busybox
和procps-ng
是不同的。
比如%cpu
一个进程,procps-ng top
显示30%左右,但busybox top
只显示10%左右。%cpu
从procps-ng top
和的总数busybox top
是相同的。然后我阅读了和
的计算源代码。我发现他们对一个进程的计算公式确实不同。 busybox
procps-ng
%cpu
- busybox top:
CPU% = s->pcpu/sum(s->pcpu) * busy_cpu_ticks/total_cpu_ticks
(pcpu is delta of sys+user time between samples)
- procps-ng top:
CPU% = s->pcpu/total_cpu_ticks
为什么两个项目选择不同的计算公式?他们是为不同的应用案例设计的吗?谢谢!