Linux
如何以非 root 使用者身份創建和使用 Linux cgroup?
如何以非 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