Limite e controle a utilização da CPU por qualquer processo no Linux com CPULimit.
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
Introdução
CPULimit é uma ferramenta de linha de comando simples e poderosa para limitar e controlar a utilização da CPU por qualquer processo em um determinado limite e permite a interrupção da execução do processo se a carga do sistema ultrapassar aquele limite definido.
Como funciona?
A fim de limitar o uso de CPU, o CPULimit envia os comandos SIGSTOP e SIGCONT para processos e este é determinado pela carga do sistema. Ele depende do conteúdo de /proc para ler PIDs e suas medidas de uso de CPU.
Instalação
A instalação do CPULimit é muito simples. Em sistemas baseados em Debian, faça:
$ sudo apt install cpulimit
Já para o CentOS/RHEL, temos:
# yum install epel-release # yum install cpulimit
Uso
Faremos o seguinte comando:
$ sudo dd if=/dev/zero of=/dev/null &
Ele vai apenas enviar o nada para lugar algum!
Basicamente pegar os zeros de /dev/zero e enviá-los a /dev/null, gerando um uso de CPU para demonstração e benchmark. Não haverá qualquer perda de dados aqui.
Com o comando ‘top’, verifique que o uso de CPU pelo comando dd é de 100%.
Agora, faremos uso do CPULimit propriamente dito.
A flag –cpu-limit (ou -c) é usada para definir uma porcentagem de uso para um processo ou grupo de processos e -p é usado para especificar um PID. O comando a seguir limitará o comando dd (PID 8275) a 50% de uso de um núcleo de CPU:
$ sudo cpulimit --pid 17918 --limit 50
Após executar esse comando, verifique novamente pelo ‘top’ que o uso de CPU pelo processo dd agora é de 50%:
Executando uma segunda vez, limitamos seu uso para 20% da seguinte maneira:
$ sudo cpulimit --pid 17918 --limit 20
OBS: O shell não espera qualquer comando do usuário enquanto o CPULimit estiver executando. Para finalizar o processo use “Ctrl C”.
Para jogar um processo CPULimit como background, use:
$ sudo cpulimit --pid 17918 --limit 20 --background
Para definir um grupo de processos executando diversas instâncias, exemplo, num servidor:
$ sudo pidof apache2
9592 3643 3642 3641 3640 3638 3637 1780
Faça:
$ sudo cpulimit --cpu-limit 20 -P 1780
OBS: Use a flag -p para “pid” (1 processo) e -P para “process group” (árvore de processos). Ambos com a flag -c (–cpu-limit).
Limitando carga de CPU
A flag -l (‘L’ minusculo ou –load-limit) é usada para limitar a carga de CPU de um processo ou grupo de processos.
Nesse caso usamos sempre opção fracionada.
No exemplo abaixo, a carga máxima será de 3.5.
Se o processo do proximo exemplo, no caso, do rsync (backup de um diretório), exceder a carga de 3.5 de CPU, ele será limitado, assim ele nunca vai passar daquele ponto causando grande consumo de recursos de sistema.
$ sudo cpulimit --load-limit 3.5 --rsync -av /home/nathandrake /backup/`date +%Y-%m-%d`/
Para mais detalhes:
$ man cpulimit
#UrbanCompassPony
Referência Bibliográfica:
Onlyzy
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.