Docker统计与Linux ps与实际CPU利用率

时间:2019-05-16 09:55:49

标签: linux docker

我想检查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%?

1 个答案:

答案 0 :(得分:2)

14%的利用率是指一个核心的14%,即140毫微米。所有Linux工具都显示与一个内核相关的cpu利用率。因此,如果您的应用程序使用两个内核-那么它将使用200%cpu。另外,“一个核心”的定义可能会有所不同,具体取决于您是否启用了超线程。