如何设置 Docker 容器的 CPU 优先级(niceness)?

kov*_*van 12 docker

我的一个容器总是很忙,并且正在从其他需要响应且仅不时处于活动状态的容器(网络服务器)中占用 CPU。

我想降低消耗 CPU 的容器的 CPU 优先级,以便在其他容器需要 CPU 时,它不会被阻塞。

我该怎么做呢?我已经在网上搜索了一段时间,但我找不到答案。

我试过用 运行容器--entrypoint='nice 10 mybinary',但结果--entrypoint只能运行二进制文件,不能运行 shell 命令。

Jan*_*raj 11

您可以在容器级别限制 CPU 资源。我建议--cpu-shares 512用于您的情况。

https://docs.docker.com/config/containers/resource_constraints/

将此标志设置为大于或小于默认值 1024 的值以增加或减少容器的权重,并使其访问主机 CPU 周期的更大或更小比例。这仅在 CPU 周期受限时强制执行。当有足够的 CPU 周期可用时,所有容器都会根据需要使用尽可能多的 CPU。这样,这是一个软限制。--cpu-shares 不会阻止容器在 swarm 模式下被调度。它优先考虑可用 CPU 周期的容器 CPU 资源。它不保证或保留任何特定的 CPU 访问。

  • 为什么推荐512? (4认同)