我有一個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
爲什麼這兩個項目選擇不同的計算公式?他們是否爲不同的應用案例而設計? 謝謝!