有一种方法可以将--cpus-cpuset和--cpuset-mems传递给docker swarm

问题描述

我一直在浏览文档,似乎无法将Docker swarm中的进程隔离到特定的内核,例如使用numactlcpuset--cpus时。在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是否禁止了此级别的控制?我也在看K8,它似乎有相同的局限性。

谢谢

解决方法

当前不支持此功能,它是issue on GitHub,人们应为此功能投票。