cgroups: É possível limitar o uso da CPU pelo nome do processo em vez de pelo pid

0

Como sabemos, cgroups pode limitar o uso de processos da CPU. Aqui está um exemplo:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND          
30142 root      20   0  104m 2520 1024 R 99.7  0.1  14:38.97 sh

Eu tenho um processo, cujo pid é 30142. Eu posso limitá-lo como abaixo:

mkdir -p /sys/fs/cgroup/memory/foo
echo 1048576 >  /cgroup/memory/foo/memory.limit_in_bytes
echo 30142 > /cgroup/memory/foo/tasks

Como podemos ver, se eu quiser limitar um processo, eu tenho que primeiro executá-lo e então eu poderia limitá-lo de acordo com o seu pid. É possível limitar um processo de acordo com o seu nome? É possível limitar um processo antes de executá-lo?

    
por Yves 18.09.2018 / 04:46

1 resposta

0

Os grupos de controle são baseados em pid e não há uma maneira direta de limitar processos por nome. (Como os grupos de controle são hierárquicos, isso faz sentido: um grupo também contém os filhos futuros dos processos de seus membros, por padrão, e fazer com que eles se anexem novamente a outro grupo com base em seu nome seria surpreendente.)

A maneira típica de usar grupos de controle é anexar um processo pai a eles e depois confiar no fato de que os filhos herdam o grupo de seus pais. No entanto, existe uma ferramenta que permitirá iniciar um processo em um determinado grupo, cgexec :

cgexec -g memory:foo yourcommand

Em Debian você encontrará isso em cgroup-tools .

    
por 18.09.2018 / 09:24