Como limitar o tempo e o uso de memória de processos no Linux

O script timeout é um programa de monitoramento de recursos útil para limitar o tempo e o consumo de memória de processos no Linux. Ele permite que você execute programas sob controle e aplique limites de tempo e memória, encerrando o programa ao violar esses parâmetros.

Nenhuma instalação é necessária, basta executar um comando juntamente com seus argumentos usando o programa timeout e ele monitorará o consumo de memória e tempo do comando, interrompendo o processo se ele exceder os limites e notificando-o com a mensagem predefinida.

Para executar este script, você deve ter o Perl 5 instalado no seu sistema Linux e o sistema de arquivos /proc montado.

Para verificar a versão instalada do Perl no seu sistema Linux, execute o seguinte comando.

$ perl -v
Check Perl Version in Linux

Em seguida, clone o repositório timeout para o seu sistema usando o comando git, depois mova-se para o repositório local usando o comando cd e invoque-o como um comando Linux comum.

$ cd ~/bin
$ git clone https://github.com/pshved/timeout.git
$ cd timeout

Agora vamos ver como o script timeout funciona.Limitação Básica de Memória (100M de Memória Virtual):

Limitação Básica de Memória (100M de Memória Virtual):

Este primeiro exemplo mostra como limitar o uso de memória de um processo para 100M de memória virtual, usando a bandeira -m. A unidade padrão para memória é em kilobytes.

Aqui, o comando stress-ng executa 4 estressores de memória virtual (VMS) que combinam para usar 40% da memória disponível por 10 minutos. Assim, cada estressor usa 10% da memória disponível.

$ ./timeout -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m
Limiting Memory of Process

Considerando a saída do comando timeout acima, os processos de trabalho do stress-ng foram encerrados após apenas 1,16 segundos. Isso ocorre porque o consumo de memória combinado dos VMS (438660 kilobytes) é maior que o uso permitido de memória virtual para o stress-ng e seus processos filhos.

Limitação Básica de Tempo de Processo:

Para habilitar a limitação de tempo de processo, use a bandeira -t como mostrado.

$ ./timeout -t 4 stress-ng --vm 4 --vm-bytes 40% -t 10m
Time Limiting of Process

No exemplo acima, quando o tempo stress-ng CPU+SYS excede o valor definido de 4, os processos de trabalho são encerrados.

Limitar Tempo e Memória de Processo

Você também pode limitar tanto memória quanto tempo ao mesmo tempo, como segue.

$ ./timeout -t 4 -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

O Timeout também suporta algumas opções avançadas, como --detect-hangups, que habilita a detecção de hangups.

$ ./timeout --detect-hangups -m 100000 stress-ng --vm 4 --vm-bytes 40% -t 10m

Você pode monitorar o limite de memória RSS (tamanho de conjunto residente) usando a opção --memlimit-rss ou -s.

$ ./timeout -m 100000 -s  stress-ng --vm 4 --vm-bytes 40% -t 10m

Além disso, para retornar o código de saída ou o sinal+128 de um processo, use a opção --confess ou -c conforme mostrado.

$ ./timeout -m 100000 -c  stress-ng --vm 4 --vm-bytes 40% -t 10m

Para mais informações e exemplos de uso, consulte o repositório do timeout no Github: https://github.com/pshved/timeout.

Você também pode achar os seguintes artigos relacionados igualmente úteis:

  1. Como Encontrar os 15 Principais Processos por Uso de Memória com ‘top’ no Modo Lote
  2. CPUTool – Limitar e Controlar a Utilização de CPU de Qualquer Processo no Linux
  3. Como Limitar o Uso de CPU de um Processo no Linux com a Ferramenta CPULimit

O script timeout é um programa simples de monitoramento de recursos que essencialmente restringe o tempo e o consumo de memória de processos no Linux. Você pode nos fornecer feedback sobre o script timeout através do formulário de comentário abaixo.

Source:
https://www.tecmint.com/limit-time-and-memory-usage-of-linux-process/