Pesquisa de site

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


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

Não é necessária instalação, basta executar um comando junto com seus argumentos usando o programa timeout e ele monitorará o consumo de memória e tempo do comando, interrompendo o processo caso ultrapasse os limites, e avisará com o pré-definido mensagem.

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

Em seguida, clone o repositório timeout em seu sistema usando o comando git, depois vá para o repositório local usando o comando cd e invoque-o como um comando normal do Linux.

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

Vejamos agora como funciona o script timeout.

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 a 100M de memória virtual, usando o sinalizador -m. A unidade padrão de memória é 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 utiliza 10% da memória disponível.

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

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 combinado de memória do VMS (438660 quilobytes) é maior que o uso permitido de memória virtual para stress-ng e seu filho processos.

Limitação básica de tempo do processo:

Para ativar a limitação de tempo do processo, use o sinalizador -t conforme mostrado.

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

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

Limitando o tempo e a memória do processo

Você também pode limitar a memória e o tempo de uma só vez, como segue.

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

O tempo limite também oferece suporte a algumas opções avançadas, como --detect-hangups, que permite a detecção de desligamentos.

./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 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 obter mais informações e exemplos de uso, consulte o repositório timeout do 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 em lote
  2. CPUTool – Limite e controle 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 essencialmente restringe o tempo e o consumo de memória dos processos no Linux. Você pode nos dar feedback sobre o script timeout através do formulário de comentários abaixo.