Linux

如何以非 root 使用者身份創建和使用 Linux cgroup?

  • September 4, 2021

如何以非 root 使用者身份創建和使用cgroup ?

例如,我可以完全作為非 root 使用者:

  • 創建一個可以訪問一個 CPU 的 cgroup
  • 在該 cgroup 中創建一個新程序

?

我首先在這裡問,但我沒有收到完整的答案。我也在stackoverflow 上問過,但這個問題被關閉為題外話了。

作為普通使用者,您不能這樣做。但是您可以將 cgroup 設置為 root,並使其可由您的使用者配置。

如果您還沒有通過例如 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

創建一個 cgroup:

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

您現在可以作為普通使用者修改 cgroup 的配置:

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

向該組添加一個程序:

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

或者創建一個子組:

$ 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

引用自:https://serverfault.com/questions/478946