У меня есть Embedded Linux(Kernel 2.6.37)
, работающий на ARM
. По умолчанию top
от busybox 1.13.2
. И я построю procps-ng 3.3.11
через кросс-компиляцию для запуска на этом Linux
. Я обнаружил, что процесс %cpu
через top
, полученный от busybox
и procps-ng
, отличается.% process% cpu output from top from 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
Почему два проекта выбирают другую формулу расчета? Они предназначены для разных случаев применения? Спасибо!