有一种方法可以将 --cpus-cpuset 和 --cpuset-mems 传递给 docker swarm
There is a way to pass --cpus-cpuset and --cpuset-mems to docker swarm
我正在查看文档,似乎无法将 Docker swarm 中的进程隔离到特定核心,例如当您使用 numactl 或 cpuset--cpu秒。在 docker run 中,您可以这样做(16 cpu 机器,在 8-15 的第二个插槽上使用 8 cpus):
/usr/bin/docker run --detach --name myproc --cpus 8 --cpuset-cpus 8-15 --cpuset-mems 1 -- privateregistry:5000/myimage:v1 -c '/bin/myverycpuintensiveprocess.sh'
而且我可以确认进程不会从一个核心跳到另一个核心,而是固定在 CPUS 8-15 上。他们也将使用插槽 1 中的内存。
从“create service”文档中我看到最接近的是“--reserve-cpu”和--reserve-memory,但这只是为了控制容器放置。
Docker Swarm 是否禁止这种级别的控制?我也在看 K8s,它似乎也有同样的局限性。
谢谢,
目前不支持,这是一个issue on GitHub,人们应该为这个功能投票。
我正在查看文档,似乎无法将 Docker swarm 中的进程隔离到特定核心,例如当您使用 numactl 或 cpuset--cpu秒。在 docker run 中,您可以这样做(16 cpu 机器,在 8-15 的第二个插槽上使用 8 cpus):
/usr/bin/docker run --detach --name myproc --cpus 8 --cpuset-cpus 8-15 --cpuset-mems 1 -- privateregistry:5000/myimage:v1 -c '/bin/myverycpuintensiveprocess.sh'
而且我可以确认进程不会从一个核心跳到另一个核心,而是固定在 CPUS 8-15 上。他们也将使用插槽 1 中的内存。
从“create service”文档中我看到最接近的是“--reserve-cpu”和--reserve-memory,但这只是为了控制容器放置。
Docker Swarm 是否禁止这种级别的控制?我也在看 K8s,它似乎也有同样的局限性。
谢谢,
目前不支持,这是一个issue on GitHub,人们应该为这个功能投票。