回答:
通常のユーザーとしてはできません。ただし、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
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
rm -r
最初にファイルを削除しようとしますが、失敗します。rmdir
cgroupを削除するために使用します。
rmdir
までできませんtasks
。rootはサブグループ内のタスクファイルを確認し、そこにある各pidをルートcgroupのタスクファイルにエコーする必要があります(/dev/cpuset/tasks
RHEL 6.7 [kernel 2.6.32-358]ボックスにありますが、/sys/fs/cgroup/cpuset/tasks
ここでは適切なように見えます)。
rm -r
私にとって失敗