Como Limitar o Tempo e o Uso de Memória de Processos no Linux

O script de 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 ultrapassar os limites e notificando você com a mensagem predefinida.

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

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

$ perl -v
Check Perl Version in Linux

Em seguida, clone o repositório de timeout em 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

Vamos agora ver como o script de 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 se 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 stress-ng foram encerrados após apenas 1,16 segundos. Isso ocorre porque o consumo de memória combinado dos VMS (438660 kilobytes) é maior do 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, da seguinte forma.

$ ./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 interrupções.

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

Você pode monitorar o limite de memória RSS (tamanho do 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 Github do timeout: 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 o ‘top’ no Modo de Lote
  2. CPUTool – Limitar e Controlar a Utilização da CPU de Qualquer Processo no Linux
  3. Como Limitar o Uso da CPU de um Processo no Linux com a Ferramenta CPULimit

O script timeout é um programa simples de monitoramento de recursos que basicamente 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ários abaixo.

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