我有一个Embedded Linux(Kernel 2.6.37)
在ARM
上运行。从busybox 1.13.2
有一个默认top
。我通过交叉编译构建procps-ng 3.3.11
以运行在Linux
上。我发现这个过程的%cpu
通过top
输出的busybox
和procps-ng
是不同的。不同进程的%cpu通过busybox和procps的顶部输出
例如,一个进程的%cpu
,procps-ng top
显示约30%,但busybox top
只显示约10%。 procps-ng top
和busybox top
的总数为%cpu
是相同的。
然后我看了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
为什么这两个项目选择不同的计算公式?他们是否为不同的应用案例而设计? 谢谢!