linux - Docker Stats vs Linux ps vs 实际 CPU 利用率
问题描述
我想检查 docker 容器的 CPU 利用率。我的服务器配置如下:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
Stepping: 4
CPU MHz: 2500.000
BogoMIPS: 5000.00
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 33792K
NUMA node0 CPU(s): 0-3
我使用了该docker stats
命令,它显示 14.39% CPU 使用率。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
4a0da79c0648 k8s_test-test-6b9c748fff-bcch5_default_2d80f075-6d77-11e9-b2a1-0267bc34ef6c_3 14.39% 130MiB / 15.06GiB 0.80% 0B / 0B 321MB / 16.4kB 10
然后我使用以下命令找到了容器的 PID:
docker inspect 4a0da79c0648 --format '{{.State.Pid}}, {{.ID}}'
然后使用 Linux 命令查找 CPU 使用率。
while sleep 1; do ps --no-headers -o '%cpu,%mem' -p 14188; done
输出如下:
Cpu Mem
14.7 0.7
14.7 0.7
14.7 0.7
CPU利用率百分比的输出都不同。另外它与我的 4 CPU 机器相比如何,14% 的利用率意味着 680 milicpu 吗?是 1 CPU 14% 还是 4 CPU 14%?
解决方案
14% 的利用率意味着一个核心的 14%,即 140 毫核。所有 Linux 工具都显示与一个内核相关的 CPU 利用率。因此,如果您的应用程序使用两个内核 - 那么它使用 200% 的 cpu。此外,“一个核心”的定义可能会有所不同,具体取决于您是否启用了超线程。
推荐阅读
- javascript - 如何在表单内向 jquery 数据表中添加行?
- java - 运行项目时获取 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- javascript - 简化写日期
- visual-studio - 未实现的错误(颤振)
- html - 图像网格图像中的问题
- javascript - 单击按钮时如何在另一个页面中弹出引导警报
- regex - 正则表达式匹配车把表达式和默认值
- python - Pandas:将浮点列转换为 int,同时保留 NaN
- xml - 很难使用 xmllint 在我的 xml 文件中搜索信息
- dax - 带滤波器的功率枢轴标准偏差