Kin*_*gua 5 python linux virtualization numa docker
我有一个 Intel Xeon Phi 64 核 CPU,具有 16GB片上内存,设置为 NUMA 节点 1。我想将 Docker 容器内运行的进程绑定到此 NUMA 节点,但出现错误:
root@Docker$ sudo numactl --membind 1 python script.py
Error: set_mempolicy: Operation not permitted
setting membind: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我也尝试将整个 Docker mothership 绑定到 NUMA 节点 1,但没有成功:
localhost$ sudo numactl --membind 1 docker run xyz /bin/bash
Run Code Online (Sandbox Code Playgroud)
这不会给出任何错误,但显示没有使用片上内存。
我的问题是:如何成功将进程绑定到 NUMA 节点 1?谢谢!
尝试向容器授予欺骗性命名的CAP_SYS_NICE功能,这允许进程“为任意进程设置 CPU 关联性”[ ref ]:
docker run --cap-add SYS_NICE <other arguments>
Run Code Online (Sandbox Code Playgroud)
这是一种更安全的方法,--privileged但仍然应该能够满足您的需求。
您需要获取哪些 cpu 属于 1 numa 节点:
$ lscpu | grep node1
NUMA node1 CPU(s): 8-15,24-31
为 docker 创建 cpuset:
$ 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/。
| 归档时间: |
|
| 查看次数: |
7223 次 |
| 最近记录: |