在docker的CPU使用率计算是什么:TotalUsage,SystemUsage,PercpuUsage和计算是什么意思?

我看到在docker来源的CPU计算,但我不明白什么是确切的

  1. TotalUsage
  2. SystemUsage
  3. PercpuUsage

为什么cpuDelta除以SystemDelta ,为什么然后乘以PercpuUsage

该文件说cpuDelta

//计算读数之间容器的CPU使用情况的变化

systemDelta

//计算整个系统在读数之间的变化

所以不应该将这些三angular洲的总和除以在该三angular洲时间的总CPU(或总纳秒)? 毕竟container同时使用了cpuDeltacpuDelta

更新 :我想我得到它的总容量是容器的使用量,而SystemUsage不是容器使用的系统CPU,而是整个系统超出了容器的CPU,这就是为什么他们分开。

在问题18615有类似的讨论,导致PR 13627“更新”docker统计“计算”

我认为cpuPercent = (cpuDelta / systemDelta) * float64(len(v.CpuStats.CpuUsage.PercpuUsage))是正确的,因为:

  • cpuDelta是所有核心和总共消耗的时间
  • systemDelta也是所有内核消耗的总时间,

所以(cpuDelta / systemDelta)是每个核心的平均CPU使用率,所以需要乘以CPU核心数量来计算总的CPU使用率。

例如,在4核系统上,cpu使用率可以在0到400%之间,因此必须乘以核心数量。