为了进行一些基准测试,我需要为整个系统设置 CPUAffinity,将所有进程限制在某些核心上,比如前 10 个核心。这样,我就可以执行任务集来覆盖 CPUAffinity,并在不在 CPUAffinity 列表中的核心上进行基准测试。
这样做的原因是为了确保在对软件进行基准测试期间,我们不会受到其他用户或操作系统本身的任何干扰。
在我将服务器从 ubuntu 20.04 升级到 ubuntu 22.04 之前,CPUAffinity 一直运行良好。Docker 之前已安装,但它不会干扰 systemd cgroups。但现在它确实会干扰,并以某种方式将 init affinity 设置为所有核心。
我尝试将 docker 的 cgroup-driver 设置为 systemd,但没有用。我可能也错误地看待了这个问题。
要重现此问题,您只需安装带有 ubuntu server 22.04 的 VM,同时安装 docker。现在,即使您在 /etc/systemd/system.conf 中设置 CPUAffinity,它也不会起作用。要解决此问题,您必须完全删除 docker 和 snapd。
对于我来说,需要docker,所以我尝试解决这个问题。
还有一个有趣的事实,ubuntu 22.04 桌面版似乎没有这个问题。但我没有确认它是否默认安装了 docker/snap。
无论如何感谢您的帮助。
答案1
有两个软件包引发了问题,
- SNAP(LXD)
- Docker
卸载两者之后,行为恢复正常。
我已经用 podman 替换了 docker,但如果在 podman 中以 root 身份运行容器,问题仍然会再次出现 :-)