Red Hat Training

A Red Hat training course is available for RHEL 8

44.2. O que são controladores de recursos do kernel

A funcionalidade dos grupos de controle é habilitada pelos controladores de recursos do kernel. A RHEL 8 suporta vários controladores para control groups version 1 (cgroups-v1) e control groups version 2 (cgroups-v2).

Um controlador de recursos, também chamado de subsistema de grupo de controle, é um subsistema de kernel que representa um único recurso, como tempo de CPU, memória, largura de banda de rede ou E/S de disco. O kernel Linux fornece uma gama de controladores de recursos que são montados automaticamente pelo sistema systemd e pelo gerenciador de serviços. Encontre uma lista dos controladores de recursos atualmente montados no arquivo /proc/cgroups.

Os seguintes controladores estão disponíveis para cgroups-v1:

  • blkio - pode estabelecer limites no acesso de entrada/saída de e para os dispositivos de bloco.
  • cpu - pode ajustar os parâmetros do Agendador de Programação Completamente Justo (CFS) para as tarefas do grupo de controle. Ele é montado junto com o controlador cpuacct na mesma montagem.
  • cpuacct - cria relatórios automáticos sobre os recursos da CPU utilizados por tarefas em um grupo de controle. É montado junto com o controlador cpu na mesma montagem.
  • cpuset - pode ser usado para restringir as tarefas do grupo de controle para executar somente em um subconjunto específico de CPUs e para direcionar as tarefas para usar a memória somente em nós de memória especificados.
  • devices - pode controlar o acesso a dispositivos para tarefas em um grupo de controle.
  • freezer - pode ser usado para suspender ou retomar tarefas em um grupo de controle.
  • memory - pode ser usado para estabelecer limites no uso de memória por tarefas em um grupo de controle e gera relatórios automáticos sobre os recursos de memória utilizados por essas tarefas.
  • net_cls - tags pacotes de rede com um identificador de classe (classid) que permite ao controlador de tráfego Linux (o comando tc ) identificar pacotes que se originam de uma determinada tarefa do grupo de controle. Um subsistema de net_cls, o net_filter (iptables), também pode usar esta tag para realizar ações em tais pacotes. O net_filter marca tomadas de rede com um identificador de firewall (fwid) que permite que o firewall Linux (através do comando iptables ) identifique pacotes originados de uma tarefa específica do grupo de controle.
  • net_prio - estabelece a prioridade do tráfego na rede.
  • pids - pode estabelecer limites para uma série de processos e seus filhos em um grupo de controle.
  • perf_event - pode agrupar tarefas para monitoramento pelo utilitário de monitoramento e relatórios de desempenho perf.
  • rdma - pode estabelecer limites para os recursos específicos de Remote Direct Memory Access/InfiniBand em um grupo de controle.
  • hugetlb - pode ser usado para limitar o uso de páginas de memória virtual de grande tamanho por tarefas em um grupo de controle.

Os seguintes controladores estão disponíveis para cgroups-v2:

  • io - Um acompanhamento para blkio de cgroups-v1.
  • memory - Um acompanhamento para memory de cgroups-v1.
  • pids - O mesmo que pids em cgroups-v1.
  • rdma - O mesmo que rdma em cgroups-v1.
  • cpu - Um acompanhamento para cpu e cpuacct de cgroups-v1.
  • cpuset - Suporta apenas a funcionalidade central (cpus{,.effective}, mems{,.effective}) com uma nova funcionalidade de partição.
  • perf_event - O suporte é inerente, nenhum arquivo de controle explícito. Você pode especificar um v2 cgroup como parâmetro para o comando perf que irá traçar o perfil de todas as tarefas dentro desse cgroup.
Importante

Um controlador de recursos pode ser usado tanto em uma hierarquia cgroups-v1 quanto em uma hierarquia cgroups-v2, não simultaneamente em ambas.

Recursos adicionais

  • Para mais informações sobre controladores de recursos em geral, consulte a página do manual cgroups(7).
  • Para descrições detalhadas dos controladores de recursos específicos, consulte a documentação no diretório /usr/share/doc/kernel-doc-<kernel_version>/Documentation/cgroups-v1/.
  • Para mais informações sobre cgroups-v2, consulte a página do manual cgroups(7).