Como posso criar e usar cgroups do Linux como um usuário não-root?

16

Como posso criar e usar cgroups como usuário não-root?

Por exemplo, posso, inteiramente como usuário não raiz:

  • crie um cgroup com acesso a uma CPU
  • crie um novo processo nesse cgroup

?

Pedi pela primeira vez aqui , mas não recebi uma resposta completa . Eu também perguntou em stackoverflow , mas a questão foi encerrada como off topic.

    
por Adam Monsen 14.02.2013 / 20:00

3 respostas

13

Você não pode fazer isso como um usuário normal. Mas você pode configurar um cgroup como root e torná-lo configurável pelo seu usuário.

Se você ainda não tiver os controladores cgroups padrão montados, por exemplo, 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

Crie um cgroup:

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

Agora você pode modificar a configuração do seu cgroup como um usuário normal:

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

Adicione um processo a esse grupo:

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

Ou crie um 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
    
por 12.07.2013 / 20:14
1

Se você estiver usando o Ubuntu, você (o usuário root) pode instalar o cgroup-lite e adicionar o que você precisa ao /etc/cgconfig.conf, incluindo quais usuários podem mudar o cgroup configuração. Ele é executado na inicialização.

Falha em você (o usuário root) poder adicionar seu próprio script para ser executado durante a inicialização.

    
por 22.01.2014 / 13:40
0

Há uma série de artigos sobre LWN nos cgroups, veja parte 1 , ou procure a busca por lá. O Systemd inclui um conjunto de ajudantes para gerenciar (processos engaiolados por) cgroups.

    
por 18.02.2013 / 03:22

Tags