如何numactl成员内的Docker容器中的进程?
我有一个带有16GB 片上内存的英特尔至强融核64内核CPU设置为NUMA节点1.我想将在Docker容器中运行的进程绑定到此NUMA节点,但是出错:
root@Docker$ sudo numactl --membind 1 python script.py Error: set_mempolicy: Operation not permitted setting membind: Operation not permitted
我也尝试将整个Docker母舰绑定到NUMA节点1,但没有运气:
localhost$ sudo numactl --membind 1 docker run xyz /bin/bash
这不会给出任何错误,但是不会显示片上存储器的使用情况。
我的问题是:如何将一个进程绑定到NUMA节点1? 谢谢!
-
你需要得到哪个cpus属于1个numa节点:
$ lscpu | grep node1
NUMA node1 CPU(s): 8-15,24-31
-
为docker创buildcpuset:
$ cgcreate -g cpuset:docker
$ echo 8-15 > /sys/fs/cgroup/cpuset/docker/cpuset.cpus
-
如果您只想在特定NUMA节点上运行某些容器,请执行以下操作:
cgcreate -g cpuset:my-cgroup
echo 8-15 > /sys/fs/cgroup/cpuset/my-cgroup/cpuset.cpus
-
Docker允许将新的容器放在不同的cgroup下:
docker run -it --rm --cgroup-parent=/my-cgroup/ ubuntu bash
有关更多信息,请参阅https://sthbrx.github.io/blog/2016/07/27/get-off-my-lawn-separating-docker-workloads-using-cgroups/ 。