You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Docker容器相对于CPU配额的使用率?

获取容器相对于CPU配额的使用率

原生Docker命令方案

首先,docker stats默认显示的CPU%是容器占用宿主机总CPU的百分比,它不会直接输出容器相对于自身CPU配额的使用率。不过你可以手动计算这个值:

假设宿主机总共有N个CPU核心,你给容器设置的CPU配额是--cpus=C(比如C=0.5),那么这个配额对应的宿主机CPU占比上限是 C/N * 100%。

拿实际场景举例:

  • 宿主机是1核CPU
  • 容器设置--cpus=0.5,即最多使用宿主机50%的CPU
  • docker stats显示容器的CPU%为49.5%
  • 计算相对使用率:49.5 / (0.5*100) = 99% —— 这就是容器在自身配额内的使用率

如果想自动化这个计算,你可以写个简单的Shell脚本,解析docker stats的输出(或者用docker inspect获取容器的CPU配额配置)来自动完成计算。

使用cadvisor + Prometheus的方案

这是更适合长期监控的优雅方案,能轻松实现可视化和告警:

cadvisor会自动收集容器的CPU相关核心指标,其中关键的几个是:

  • container_cpu_usage_seconds_total:容器累计使用的CPU时间(通过rate()函数可以计算出每秒的CPU使用量)
  • container_spec_cpu_quota和container_spec_cpu_period:Docker实现CPU硬限制的底层参数(当你设置--cpus=C时,Docker会自动将quota设为C * period,默认period是100000微秒)

通过PromQL查询,你可以直接得到容器相对于自身配额的使用率:

100 * rate(container_cpu_usage_seconds_total[1m]) / (container_spec_cpu_quota / container_spec_cpu_period)

这个查询的逻辑是:用容器每秒实际使用的CPU时间,除以它每秒被允许使用的最大CPU时间,再乘以100得到百分比。

额外补充:如果想判断容器是否因为CPU配额被限流,可以查看container_cpu_cfs_throttled_seconds_total指标,这个指标累计了容器被CPU限流的时间,数值越高说明容器越频繁地触及CPU配额上限。

内容的提问来源于stack exchange,提问作者Nitul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:37:42