我正在尝试使用 cgroups v2 限制进程的 CPU 使用率。层次结构已经创建并设置了限制,我只需要将 pid 写入 cgroup.procs 文件即可。路径是/sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs
.一切我的文件夹s 的权限是drwxr-xr-x myuser mygroup
. cgroup.procs 文件的权限为-rwxrwxrwx myuser mygroup
。然而,当尝试执行以下命令时:
sudo -H -u myuser bash -c 'echo some_existing_pid > /sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs'
我收到以下错误:
bash: line 1: echo: write error: Permission denied
可能的原因是什么?
操作系统:Ubuntu 22.04
答案1
我的第一个猜测是你不允许移动进程在......之外他们原来的cgroup。内核使用的规则是,为了将进程从 cgroup A 迁移到 cgroup B,您必须首先拥有将其迁移到所在 cgroup 的权限。共同祖先A 和 B 两者。
(我可能会建议使用 systemd 内置的 cgroup 层次结构管理,即创建 .slice 单元来定义层次结构,然后通过 . 将进程移动到 .scope 单元中systemd-run
。)