gpt4 book ai didi

performance - Docker容器CPU使用率监控

转载 作者:行者123 更新时间:2023-12-02 19:14:42 29 4
gpt4 key购买 nike

根据 docker 的文档。我们可以使用 docker stats 命令获取 docker 容器的 CPU 使用率。CPU % 列将给出容器正在使用的主机 CPU 的百分比。

假设我限制容器使用主机单个 CPU 的 50%。我可以根据 https://docs.docker.com/config/containers/resource_constraints/ 通过 --cpus=0.5 选项指定 50% 的单 CPU 核心限制

我们如何通过任何 docker 命令从允许的 CPU 内核中获取容器的 CPU% 使用率?例如。在 50% 的单 CPU 内核中,99% 被使用。

有没有办法用cadvisor或者prometheus搞定?

最佳答案

How can we get the CPU% usage of container out of allowed CPU core by any docker command? E.g. Out of 50% Single CPU core, 99% is used.

Docker 有 docker stats 命令显示 CPU/内存使用情况和一些其他统计数据:

CONTAINER ID   NAME                                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O         PIDS
c43f085dea8c foo_test.1.l5haec5oyr36qdjkv82w9q32r 0.00% 11.15MiB / 100MiB 11.15% 7.45kB / 0B 3.29MB / 8.19kB 9

虽然它确实显示了关于开箱即用限制的内存使用情况,但 CPU 还没有这样的功能。可以使用一个脚本来即时计算值来解决这个问题,但我宁愿选择第二个选项。

Is there any way to get it with cadvisor or prometheus?

是的,有:

irate(container_cpu_usage_seconds_total{cpu="total"}[1m]) 
/ ignoring(cpu)
(container_spec_cpu_quota/container_spec_cpu_period)

第一行是一个典型的 irate 函数,计算容器使用了多少 CPU 秒数。它带有标签 cpu="total",第二部分没有,这就是为什么有 ignoring(cpu)

底线计算一个容器允许使用多少个 CPU 内核。有两个指标:

container_spec_cpu_quota - 实际配额值。该值是根据您设置为限制并乘以 container_spec_cpu_period 的 CPU 内核分数计算得出的。

container_spec_cpu_period - 来自 CFS Scheduler它就像一个配额值的单位。

我知道一开始可能很难理解,请允许我举个例子解释一下:

Consider that you have container_spec_cpu_period set to the default value, which is 100,000 microseconds, and container CPU limit is set to half a core (0.5). In this case:

container_spec_cpu_period 100,000
container_spec_cpu_quota 50,000 # =container_spec_cpu_period*0.5

With CPU limit set to two cores you will have this:

container_spec_cpu_quota  200,000

因此,通过一个除以另一个,我们得到了 CPU 内核的分数,然后在另一个除法中使用它来计算使用了多少限制。

关于performance - Docker容器CPU使用率监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63813491/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com