【发布时间】:2023-03-22 05:15:01
【问题描述】:
我有一个Embedded Linux(Kernel 2.6.37) 在ARM 上运行。 busybox 1.13.2 中有一个默认的 top。我通过交叉编译构建了一个procps-ng 3.3.11 以在这个Linux 上运行。我发现从busybox 和procps-ng 输出的过程%cpu 通过top 是不同的。
例如,一个进程的%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
为什么两个项目选择不同的计算公式?他们是为不同的应用案例设计的吗? 谢谢!
【问题讨论】:
标签: linux linux-kernel embedded-linux busybox procps