【问题标题】:different process's %cpu output via top from busybox and procps-ng来自busybox和procps-ng的不同进程的%cpu输出
【发布时间】:2023-03-22 05:15:01
【问题描述】:

我有一个Embedded Linux(Kernel 2.6.37)ARM 上运行。 busybox 1.13.2 中有一个默认的 top。我通过交叉编译构建了一个procps-ng 3.3.11 以在这个Linux 上运行。我发现从busyboxprocps-ng 输出的过程%cpu 通过top 是不同的。

例如,一个进程的%cpuprocps-ng top显示约30%,而busybox top仅显示约10%。 %cpuprocps-ng topbusybox 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  

为什么两个项目选择不同的计算公式?他们是为不同的应用案例设计的吗? 谢谢!

【问题讨论】:

    标签: linux linux-kernel embedded-linux busybox procps


    【解决方案1】:

    已经和 procps-ng 团队讨论过这个问题,这里是重点:

    2016 年 12 月 28 日下午 3:12,Craig Small 写道:
    可能有不同的方式来看待这个问题。我要说的第一件事是busybox应该是模仿或模仿主程序应该做的事情,所以如果busybox和真实程序之间存在差异,我会说busybox是错误的。就像busybox ls 打印文件与真正的ls 不同。

    让我们再看看这个公式:

    • 忙箱顶:
      CPU% = s->pcpu/sum(s->pcpu) * busy_cpu_ticks/total_cpu_ticks
      (pcpu 是样本之间的 sys+user 时间的增量)

    • procps-ng 顶部:
      CPU% = s->pcpu/total_cpu_ticks

    现在让我们重新安排一下:

    • 忙箱顶:
      CPU% = s->pcpu/total_cpu_ticks * busy_cpu_ticks/sum(s->pcpu)
      CPU% = top_CPU% * busy_cpu_ticks/sum(s->pcpu)
      (pcpu 是样本之间的 sys+user 时间的增量)

    这就是区别。 busybox 将busy_cpu_ticks/sum(s->pcpu) 与 top 计算出的比率相加。这个比率可以写成:

    RATIO = Sum(Usr + Nice + System + Irq + sirq + steal) / Sum(Usr + System)

    您可以在busybox 源代码中的read_cpu_jiffy 中看到这一点。我不 了解这个比率试图做什么或为什么需要它。尤其是当您尝试模拟的程序没有它时。

    procps top 表示在这个周期内可用的 jiffies 总数中,X% 被这个程序使用了。 busybox 在那里放了一些奇怪的缩放比例。因此,如果一个进程在其系统和用户部分中使用 10% 的 CPU,top 显示 10%。如果对于那个周期,进程有 50% 的时间在用户和系统中,busybox 将显示 20% (10% x 100/50)。

    我不知道他们为什么这样做。

    更多详情请参考讨论链接:
    discussion: different process's %cpu output via top from busybox and procps-ng

    【讨论】:

      猜你喜欢
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2017-03-25
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2021-08-17
      相关资源
      最近更新 更多