Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.8. Movendo um Processo para um Grupo de Controle

Mova um processo em um cgroup executando o comando cgclassify:
~]# cgclassify -g cpu,memory:group1 1701
A sintáxe para cgclassify é: cgclassify -g subsystems:path_to_cgroup pidlist, onde:
  • subsystems é uma lista separada por vírgula de subsistemas ou * para iniciar o processo nas hierarquias associadas com todos os subsistemas disponíveis. Note que se os cgroups do mesmo nome existirem um múltiplas hierarquias, a opção -g move os processos em cada um desses grupos. Certifique-se que o cgroup exista dentro de cada uma das hierarquias cujos subsistemas você especifica aqui.
  • path_to_cgroup é o caminho para o cgrupo dentro de sua hierarquia
  • pidlist é uma lista separada por espaços do process identifier (PIDs)
Você também pode adicionar a opção --sticky antes do pid para manter qualquer processo filho no mesmo cgroup. Se você não definir esta opção e o daemon cgred estiver rodando, os processos filhos serão alocados aos cgroups baseados nas configurações encontradas em /etc/cgrules.conf. O próprio processo, no entanto, ficará no grupo de controle no qual você iniciou.
Ao usar o cgclassify, você poderá mover diversos processos simultaneamente. Por exemplo, este comando muda os processos com PIDs 1701 e 1138 para o cgroup group1/:
~]# cgclassify -g cpu,memory:group1 1701 1138
Observe que os PIDs a serem movidos são separados por espaços e que os grupos especificados devem estar em hierarquias diferentes.

Método alternativo

Para mover um processo para um cgroup diretamente, grave seu PID no arquivo tasks do cgroup. Por exemplo, para mover um processo com o PID 1701 para um cgroup em /cgroup/lab1/group1/:
~]# echo 1701 > /cgroup/lab1/group1/tasks

2.8.1. O Daemon cgred

O Cgred é um daemon que move tarefas para cgroups de acordo com os parâmetros definidos no arquivo /etc/cgrules.conf. Entradas no arquivo /etc/cgrules.conf podem tomar uma ou duas formas:
  • user hierarchies control_group
  • user:command hierarchies control_group
Por exemplo:
maria			devices		/usergroup/staff
Esta entrada especifica que qualquer processo que pertence ao usuário chamado maria acessará o subsistema de dispositivos de acordo com os parâmetros especificados no cgroup /usergroup/staff. Para associar comandos específicos aos cgroups específicos, adicione o parâmetro command como se segue:
maria:ftp		devices		/usergroup/staff/ftp
A entrada agora especifica que quando o usuário chamado maria usa o comando ftp, o processo é automaticamente movido ao cgroup /usergroup/staff/ftp na hierarquia que contém o subsistema devices. Note, entretanto, que o daemon move o processo ao cgroup somente depois que a condição apropriada é cumprida. Portanto, o processo ftp poderá rodar por um curto período no grupo incorreto. Além disso, se o processo rapidamente gera filhos enquanto no grupo incorreto, estes filhos não poderão ser movidos.
Entradas no arquivos /etc/cgrules.conf podem incluir a seguinte nota extra:
  • @ — quando pré-fixado para user, indica um grupo ao invés de um usuário individual. Por exemplo, @admins são usuários no grupo admins.
  • * — representa "todos". Por exemplo, * no campo subsystem representa todos os subsistemas.
  • % — representa um item igual ao item na linha acima. Por exemplo:
    @adminstaff		devices		/admingroup
    @labstaff		%		%