我有一个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是相同的。然后我阅读了和
的计算源代码。我发现他们对一个进程的计算公式确实不同。 busyboxprocps-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
为什么两个项目选择不同的计算公式?他们是为不同的应用案例设计的吗?谢谢!