【问题标题】:docker container not distributing load evenly among assigned cpu sdocker 容器没有在分配的 cpu 之间平均分配负载
【发布时间】:2021-01-17 14:59:35
【问题描述】:

我有一个容器化的微服务(即运行 docker 容器),我已为其分配了 8 个 cpu 内核作为 docker 桌面上的资源(请参阅附图)。但我怀疑所有的 cpu (0,1,2...7) 不能均匀地分担负载,因此我测试的微服务的响应时间并没有像预期的那样减少。我还尝试通过命令 docker run --cpuset-cpus="0-7" -p 8081:8080 myimage-docker 分配 cpu。对于 cpuset 中的每个 cpu,我想以 cpu 使用百分比来查看它的利用率统计信息。是否有一个 docker 命令可以让我在 docker 容器运行期间一次查看所有 8 个 cpu 的利用率。有点像..

cpu0 - 12.5%
cpu1 - 12.5%
cpu2 - 12.5%
cpu3 - 12.5%
cpu4 - 12.5%
cpu5 - 12.5%
cpu6 - 12.5%
cpu7 - 12.5%

【问题讨论】:

    标签: docker cpu-usage cpuset


    【解决方案1】:

    这是衡量负载在 CPU 之间分布的均匀程度的方法。

    使用此命令在 Moby VM 中获取 shell:

    docker run -it --rm --privileged --pid=host justincormack/nsenter1
    

    然后运行这个命令:

    mpstat -P ALL 1 100
    

    这将在 100 秒内每秒测量每 CPU 的使用情况。之后,它将显示每个核心的平均值。

    【讨论】:

    • 我使用了 docker run --rm --privileged --pid=host -p 8081:8080 myimage-docker 之类的命令。如何在“--pid=host”中找到主机的值。请您详细说明一下。此外,mpstat -P ALL 1 100 似乎是一个 linux 命令,但我需要它的 windows 等效命令。
    • 不,我的意思是按照上面的字面意思输入命令。 --pid=host 关闭 pid 命名空间。 Moreover, the mpstat -P ALL 1 100 seems a linux command Docker for Windows 使用 Linux VM 在其中运行容器。事实上,你确实需要一个 Linux 命令。
    • 所以你的意思是我应该通过 ssh 进入 docker 容器。像 docker exec -it /bin/bash 这样的命令在容器中获取一个 bash shell,然后运行 ​​mpstat -P ALL 1 100 命令。对吗?
    • 不,我的意思是您需要进入 Moby VM,而不是该 VM 中的容器。参见例如here.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多