如何创建和使用
cgroups作为非root用户?
例如,我可以完全作为非root用户:
>创建一个可以访问一个cpu的cgroup
>在该cgroup中创建一个新进程
?
我第一次问here,但我没有得到完整的答案.我也是asked on stackoverflow,但这个问题已经被关闭了.
解决方法
您不能以普通用户身份执行此操作.但您可以将root用户设置为cgroup,并使其可由用户配置.
如果您还没有安装默认的cgroups控制器,例如systemd:
$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}
$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