我想检查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%?
答案 0 :(得分:2)
14%的利用率是指一个核心的14%,即140毫微米。所有Linux工具都显示与一个内核相关的cpu利用率。因此,如果您的应用程序使用两个内核-那么它将使用200%cpu。另外,“一个核心”的定义可能会有所不同,具体取决于您是否启用了超线程。