No puedes hacer eso como un usuario normal. Pero puede configurar un cgroup como root y hacerlo configurable por su usuario.
Si aún no tiene los controladores predeterminados de cgroups montados, por ejemplo, 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
Crea un cgroup:
$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}
Ahora puede modificar la configuración de su cgroup como usuario normal:
$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus
Agregue un proceso a ese grupo:
$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks
O cree un subgrupo:
$ 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
falla para mírm -r
intentaría eliminar los archivos primero, lo que falla. Usermdir
para eliminar un cgroup.rmdir
hasta que eltasks
archivo esté vacío. root necesitaría mirar el archivo de tareas en el subgrupo, y hacer eco de cada pid allí en el archivo de tareas del grupo de raíz (/dev/cpuset/tasks
en mi cuadro RHEL 6.7 [kernel 2.6.32-358], pero parece que/sys/fs/cgroup/cpuset/tasks
podría ser apropiado aquí).