cpulimit - Limitando o uso da CPU por processo
Seu desktop (ou servidor) está redondo, até que aparece aquele processo morcego que suga todas as energias de sua CPU. Seu PC virou
uma carroça, e agora? O cpulimit é a solução! Vamos aprender a usar este simples utilitário?
uma carroça, e agora? O cpulimit é a solução! Vamos aprender a usar este simples utilitário?
cpulimit
Conforme descrição do artigo, cpulimit é um utilitário que nos permite limitar o uso da CPU por processo. Ele nos fornece algumas formas de
identificar o
processo desejado, seja por nome do processo, PID ou caminho do executável.
Para instalar o programa em distribuições derivadas do Debian GNU/Linux, use o seguinte comando:
sudo apt-get install cpulimit
Em CentOS ou distribuições baseadas em RPM:
# yum install cpulimit
Para baixar o código-fonte, visite a página oficial do projeto no github:
Ou use o comando abaixo:
wget -C https://github.com/opsengine/cpulimit/archive/master.zip
Para compilar e instalar via código-fonte:
unzip master.zip
$ cd cpulimit-master
Em distribuições GNU/Linux compile com:
make
Já no FreeBSD:
gmake
Em seguida, instale o binário (root required):
# cp src/cpulimit /usr/bin
Quero limitar o consumo de CPU do Skype para no máximo 40% da CPU. Vamos descobrir o PID do Skype:
pidof skype
6916
E então:
cpulimit -p 6916 -l 40
Agora, vamos supor que todos os dias o gzip torne seu desktop lento quando vai fazer aquele mega backup diário. Vamos limitar seu consumo usando o caminho do executável desta vez:
which gzip
/bin/gzip
cpulimit -P /bin/gzip -l 10
Como não temos pressa com relação ao tempo que o backup leva para ser feito, limitei o uso para 10%.
E agora o morcego maior do meu desktop, o Dropbox:
top
Vamos usar o nome do processo dessa vez:
cpulimit -e dropbox -l 30
Olha o resultado:
top
Bem melhor, né?!
Q: Devo usar root ou usuário comum para executar o cpulimit?
R: O programa roda normalmente como usuário comum, mas você só conseguirá limitar carga de processos cujo dono é o seu próprio usuário.
Até a próxima!
Para instalar o programa em distribuições derivadas do Debian GNU/Linux, use o seguinte comando:
sudo apt-get install cpulimit
Em CentOS ou distribuições baseadas em RPM:
# yum install cpulimit
Para baixar o código-fonte, visite a página oficial do projeto no github:
Ou use o comando abaixo:
wget -C https://github.com/opsengine/cpulimit/archive/master.zip
Para compilar e instalar via código-fonte:
unzip master.zip
$ cd cpulimit-master
Em distribuições GNU/Linux compile com:
make
Já no FreeBSD:
gmake
Em seguida, instale o binário (root required):
# cp src/cpulimit /usr/bin
Sintaxe
Sua sintaxe é bem simples. Vamos a exemplos práticos.Quero limitar o consumo de CPU do Skype para no máximo 40% da CPU. Vamos descobrir o PID do Skype:
pidof skype
6916
E então:
cpulimit -p 6916 -l 40
Agora, vamos supor que todos os dias o gzip torne seu desktop lento quando vai fazer aquele mega backup diário. Vamos limitar seu consumo usando o caminho do executável desta vez:
which gzip
/bin/gzip
cpulimit -P /bin/gzip -l 10
Como não temos pressa com relação ao tempo que o backup leva para ser feito, limitei o uso para 10%.
E agora o morcego maior do meu desktop, o Dropbox:
top
Vamos usar o nome do processo dessa vez:
cpulimit -e dropbox -l 30

Olha o resultado:
top
Bem melhor, né?!
Q: Devo usar root ou usuário comum para executar o cpulimit?
R: O programa roda normalmente como usuário comum, mas você só conseguirá limitar carga de processos cujo dono é o seu próprio usuário.
Até a próxima!
Só adicionando existe um pacote pronto no FreeBSD.
pkg install cpulimit
Tem um outro detalhe bem importante eu trilhei as chamadas no programa do cpulimit, e ele tem que acessar o diretório /proc. Por questões de segurança e conveniência do FreeBSD, este não vem o com proc montando logo se faz necessário colocar no fstab, para montar ou montar manualmente.
mount -t procfs proc /proc
ou
echo 'proc /proc procfs rw 0 0' > /etc/fstab
Eu sinceramente na minha workstation em particular, não deixo o proc montado no FreeBSD, por não existir necessidade.
Abraços, espero ter ajudado com algo .. ;)
Referências:
[1] http://www.cyberciti.biz/faq/howto-freebsd-mount-procfs/ - FreeBSD Mount /proc File System Command