Docker 容器 CPU 用法

Docker Container CPU Usage

我正在使用 docker 远程 API 检索我的 运行 容器的统计信息。对于 CPU 用法,我得到例如:

"cpu_stats": {
    "cpu_usage": {
      "total_usage": 13039191340,
      "percpu_usage": [
        13039191340
      ],
      "usage_in_kernelmode": 420000000,
      "usage_in_usermode": 10480000000
    },
    "system_cpu_usage": 8.8930204e+14,
    "throttling_data": {
      "periods": 0,
      "throttled_periods": 0,
      "throttled_time": 0
    }
  }

如何计算 CPU 使用百分比?当我将 "usage_in_kernelmode" 除以 "total_usage" 时,我得到与 docker stats 命令类似的结果,但这是正确的方法吗?

谢谢:)

最终,它归结为您要衡量的 CPU 使用情况。

使用状态是循环的。用户周期是那些花在执行应用程序上的周期,包括在用户 space 中执行的系统应用程序(如守护进程)。内核周期是那些用于执行 基础 OS 或驱动程序功能的周期。非基本 OS 功能在用户 space 中执行。下落不明的周期可能是空闲周期,那些没有做任何有用的事情。

所以总 CPU 使用百分比是 (kernel+user)/(idle+kernel+user)*100。用户CPU使用量为(user))/(idle+kernel+user)*100。您可以猜出系统使用百分比的等式。

system_cpu_usage 让我很困惑。如果它不是 total_usage,而是指总周期数,则用它替换 (idle+kernel+user)。令我困惑的是,如果 system_cpu_usage 是总使用量,那么 total_usage 到底是什么?