Limitar o uso de recursos do processo no AL2023 usando cgroups - Amazon Linux 2023

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Limitar o uso de recursos do processo no AL2023 usando cgroups

Embora seja recomendável usar Controle de recursos com systemd, esta seção aborda o uso básico dos utilitários libcgroup-tools básicos para limitar o uso da CPU e da memória pelos processos. Ambos os métodos são alternativas ao uso do utilitário cpulimit, encontrado anteriormente em EPEL.

O exemplo abaixo abrange a execução do teste de estresse stress-ng (do pacote stress-ng) enquanto limita o uso de CPU e memória usando utilitários do pacote libcgroup-tools e os ajustáveis em sysfs.

Usar libcgroup-tools na linha de comandos para limitar o uso de recursos
  1. Instale o pacote libcgroup-tools.

    [ec2-user ~]$ sudo dnf install libcgroup-tools
  2. Crie um cgroup com os controladores memory e cpu, e dê a ele um nome (our-example-limits). Use as opções -a e -t para permitir que o usuário ec2-user controle os ajustáveis do cgroup.

    [ec2-user ~]$ sudo cgcreate -a ec2-user -t ec2-user -g memory,cpu:our-example-limits

    Agora existe um diretório /sys/fs/cgroup/our-example-limits/ que contém arquivos que podem ser usados para controlar cada ajustável.

    nota

    O Amazon Linux 2 usa cgroup-v1 em vez de cgroup-v2, que é usado no AL2023. No AL2, os caminhos sysfs são diferentes, e haverá diretórios /sys/fs/cgroup/memory/our-example-limits e /sys/fs/cgroup/cpu/our-example-limits pertencentes a ec2-user que conterão arquivos que podem ser usados para controlar os limites de cgroup.

  3. Limite o uso de memória por todos os processos em cgroup a 100 milhões de bytes.

    [ec2-user ~]$ echo 100000000 > /sys/fs/cgroup/our-example-limits/memory.max
    nota

    O Amazon Linux 2 usa cgroup-v1 em vez de cgroup-v2, que é usado pelo Amazon Linux 2023. Isso significa que alguns ajustáveis são diferentes. Para limitar o uso de memória no AL2, o ajustável abaixo é usado em vez disso.

    [ec2-user ~]$ echo 10000000 > /sys/fs/cgroup/memory/our-example-limits/memory.limit_in_bytes
  4. Limite o uso de CPU por todos os processos em cgroup a 10%. O formato do arquivo cpu.max é $MAX $PERIOD, limitando o grupo a consumir $MAX para cada $PERIOD.

    [ec2-user ~]$ echo 10000 100000 > /sys/fs/cgroup/our-example-limits/cpu.max

    O Amazon Linux 2 usa cgroup-v1 em vez de cgroup-v2, que é usado pelo Amazon Linux 2023. Isso significa que alguns ajustáveis são diferentes, incluindo como limitar o uso da CPU.

  5. O exemplo abaixo executa stress-ng (que pode ser instalado executando dnf install -y stress-ng) em our-example-limits cgroup. Enquanto o comando stress-ng está em execução, você pode usar top para observar a limitação em 10% do tempo da CPU.

    [ec2-user ~]$ sudo cgexec -g memory,cpu:our-example-limits stress-ng --cpu 1
  6. Remova cgroup.

    [ec2-user ~]$ sudo cgdelete -g memory,cpu:our-example-limits

A documentação de kernel do Linux para cgroup-v2 contém muitos detalhes sobre como esse mecanismo funciona. A documentação dos controladores cpu e memory abrange os detalhes de como usar cada opção ajustável.