如何以非 root 用户身份创建和使用cgroups?
例如,我可以完全作为非 root 用户:
?
我第一次在这里问,但我没有得到完整的答案。我也问过 stackoverflow,但这个问题被关闭为题外话。
小智 19
作为普通用户,您不能这样做。但是您可以以 root 身份设置一个 cgroup,并使其由您的用户配置。
如果您还没有通过例如 systemd 安装默认的 cgroups 控制器:
$ sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ sudo mkdir /sys/fs/cgroup/cpuset
$ sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset
Run Code Online (Sandbox Code Playgroud)
创建一个 cgroup:
$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}
Run Code Online (Sandbox Code Playgroud)
您现在可以以普通用户身份修改 cgroup 的配置:
$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus
Run Code Online (Sandbox Code Playgroud)
向该组添加一个进程:
$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks
Run Code Online (Sandbox Code Playgroud)
或者创建一个子组:
$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks
Run Code Online (Sandbox Code Playgroud)