Docker 守护进程如何知道可用的硬件资源?

Docker 守护进程如何知道可用的硬件资源?

我们在 VMWare 虚拟机管理程序上的 RedHat VM 上运行 Docker。当我们向 VM 添加更多虚拟核心 (vCPU) 时,RedHat 可以看到额外的资源并可以处理它,但无法处理 Docker 正在运行或启动的容器。它们只能使用CPU0 至 CPU7并且 CPU8 至 CPU15 是完全不受任何容器触及。Docker 检查未返回 CPU 限制。重新启动虚拟机也无助于解决这个问题。cadvisor 容器还报告只有 8 个核心可用。有人知道如何修复它吗?Docker 是否将原始 CPU 数量保存在某处?Docker 守护进程如何知道可用的核心数量?

答案1

我们解决了这个问题。有一个技巧可以让 docker 知道热插拔 CPU。我们不知道为什么旧设置在重启后仍然存在。以下命令是解决方案:

for c in $(compgen -G '/sys/fs/cgroup/cpuset/system.slice/docker-*'); do echo 0-15 > ${c}/cpuset.cpus ; done

相关内容