Estou tentando limitar o uso da CPU de um processo usando cgroups v2. A hierarquia já está criada e os limites definidos, só preciso escrever o pid no arquivo cgroup.procs. O caminho é /sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs
. Todas as permissões de myfoldersdrwxr-xr-x myuser mygroup
são . As permissões do arquivo cgroup.procs são -rwxrwxrwx myuser mygroup
. Ainda, ao tentar executar o seguinte comando:
sudo -H -u myuser bash -c 'echo some_existing_pid > /sys/fs/cgroup/system.slice/myfolder/myfolder/myfolder/cgroup.procs'
Estou tendo o erro a seguir:
bash: line 1: echo: write error: Permission denied
Qual pode ser uma possível razão para isso?
SO: Ubuntu 22.04
Meu primeiro palpite é que você não tem permissão para mover processos para fora de seu cgroup original. A regra usada pelo kernel é que, para migrar um processo do cgroup A para o cgroup B, você deve primeiro ter permissões para migrá-lo para o cgroup que é o ancestral comum de A e B.
(Eu provavelmente recomendaria usar o gerenciamento de hierarquia cgroup interno do systemd, ou seja, criar unidades .slice para definir a hierarquia e, em seguida, mover processos para unidades .scope via
systemd-run
.)