以非 root 用户身份使用 cgroup v2 限制 CPU 使用:权限被拒绝

以非 root 用户身份使用 cgroup v2 限制 CPU 使用:权限被拒绝

我正在尝试使用 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。)

相关内容