Linux 6.6 agora permite rastrear uso de CPU Cgroup, saiba como ativar a opção CONFIG_CGROUP_CPUACCT

Linux 6.6 agora permite rastrear uso de CPU Cgroup, saiba como ativar a opção CONFIG_CGROUP_CPUACCT

Uma das novidades mais interessantes da versão 6.6 do kernel Linux é a possibilidade de rastrear as estatísticas de uso de CPU dos grupos de controle (cgroups). Os cgroups são uma ferramenta que permite agrupar e gerenciar os recursos do sistema, como CPU, memória, disco e rede, para um conjunto de processos. Com essa funcionalidade, os administradores de sistemas podem monitorar e limitar o consumo de recursos por cada cgroup, garantindo uma melhor alocação e isolamento.

Para habilitar o rastreamento das estatísticas de uso de CPU dos cgroups, é necessário ativar a opção CONFIG_CGROUP_CPUACCT no menu de configuração do kernel. Essa opção cria um subsistema chamado cpuacct, que fornece informações sobre o tempo total de CPU utilizado por cada cgroup. Essas informações podem ser acessadas através do sistema de arquivos virtual /sys/fs/cgroup/cpuacct, onde cada cgroup tem um diretório correspondente. Dentro de cada diretório, há dois arquivos principais: cpuacct.stat e cpuacct.usage.

Neste post, vamos explicar como ativar a opção CONFIG_CGROUP_CPUACCT e como usar os arquivos cpuacct.stat e cpuacct.usage para obter as estatísticas de uso de CPU dos cgroups. Atenção, se você não é um administrador de sistemas Linux e não sabe o que fazer a seguir, recomendamos encarar este post como informativo.

Como ativar a opção CONFIG_CGROUP_CPUACCT?

Para ativar a opção CONFIG_CGROUP_CPUACCT, é preciso recompilar o kernel Linux com essa opção habilitada. O processo de recompilação do kernel pode variar dependendo da distribuição Linux utilizada, mas em geral envolve os seguintes passos:

  • Baixar o código-fonte do kernel Linux 6.6 do site oficial: https://www.kernel.org/
  • Descompactar o arquivo baixado em um diretório de sua escolha
  • Entrar no diretório do kernel e executar o comando make menuconfig para abrir o menu de configuração
  • Navegar até a seção General setup e selecionar a opção Control Group support
  • Dentro dessa opção, selecionar a opção CPU accounting controller for Control Groups
  • Salvar as alterações e sair do menu
  • Executar o comando make para compilar o kernel
  • Executar o comando make modules_install para instalar os módulos do kernel
  • Executar o comando make install para instalar o kernel
  • Reiniciar o sistema para usar o novo kernel

Como usar os arquivos cpuacct.stat e cpuacct.usage?

Os arquivos cpuacct.stat e cpuacct.usage estão localizados no sistema de arquivos virtual /sys/fs/cgroup/cpuacct, que é montado automaticamente pelo kernel quando a opção CONFIG_CGROUP_CPUACCT está ativada. Cada cgroup tem um diretório correspondente nesse sistema de arquivos, com os mesmos nomes e hierarquias definidos pelo administrador do sistema. Por exemplo, se o administrador criou dois cgroups chamados webserver e database, eles terão os seguintes diretórios:

/sys/fs/cgroup/cpuacct/webserver
/sys/fs/cgroup/cpuacct/database

Dentro de cada diretório, há dois arquivos principais: cpuacct.stat e cpuacct.usage. O arquivo cpuacct.stat mostra o tempo total de CPU utilizado pelo cgroup em dois campos: user e system. O campo user representa o tempo gasto em modo usuário, enquanto o campo system representa o tempo gasto em modo kernel. Os valores são expressos em unidades de USER_HZ, que normalmente equivalem a 1/100 segundos. Por exemplo, se um cgroup chamado webserver tem o seguinte conteúdo no arquivo cpuacct.stat:

user 12345
system 6789

Isso significa que o cgroup webserver utilizou 123,45 segundos de CPU em modo usuário e 67,89 segundos de CPU em modo kernel.

O arquivo cpuacct.usage mostra o tempo total de CPU utilizado pelo cgroup em nanossegundos. Esse valor inclui tanto o tempo em modo usuário quanto em modo kernel, e também leva em conta o número de CPUs disponíveis no sistema. Por exemplo, se um cgroup chamado database tem o seguinte conteúdo no arquivo cpuacct.usage:

123456789000

Isso significa que o cgroup database utilizou 123,456789 segundos de CPU, considerando todas as CPUs do sistema.

Com essas informações, os administradores de sistemas podem obter uma visão mais detalhada do uso de CPU dos cgroups, podendo identificar quais grupos estão consumindo mais recursos e tomar medidas para otimizar o desempenho e a eficiência do sistema.