Posso limitar o uso da CPU de um único aplicativo?

16

Existe uma maneira de parar o ClamScan de comer a CPU do meu servidor?

Pitto
fonte

Respostas:

16

Apenas como uma alternativa ao cpulimit:

Você pode iniciar o clamscan com o comando nice, por exemplo

nice -n 19 clamscan.

Veja man nicepara detalhes.

Ele não limitar a CPU, mas ele faz baixar a prioridade do processo.

Também há renicepara alterar a prioridade dos processos em execução.

clausi
fonte
2
Parece que ele ainda funciona comer um monte de cpu ...
Pitto
4
Enquanto nenhum outro processo requer cputime, clamscan recebe um lote do mesmo. Mas assim que outro processo (que tem uma prioridade mais alta) precisa cputime, clamscan não tem chance. cpulimit limita cputime absoluta, e os limites agradáveis cputime relativa.
Clausi
2
+1. niceing é a maneira tradicional de ir, e por boas razões.
loevborg
Existem ferramentas para definir um bom valor padrão para executar aplicativos específicos? De preferência, uma ferramenta que permite comparar todas as suas predefinições lado a lado.
Jonny Asmar
19

Instalar cpulimit

sudo apt-get install cpulimit

Ele fornece métodos diferentes para limitar o uso da CPU de um processo, fooou seja, 20%

  • Por seu processo-name: sudo cpulimit -e foo -l 20.

  • Pelo nome absoluto do caminho: sudo cpulimit -P /usr/bin/foo -l 20

  • Por seu PID:

    1. Encontre o PID do processo: pidof foo. (digamos, gera 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
fonte
Nenhum processo de destino encontrado ... Talvez seja porque eu tenho um script para executar o clamscan? eu faço: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto
@ Pitto: Você digitou um comando errado, /etc/cron.hourly/virusscannão é um processo. Se você precisa de limite clamscan, execute sudo cpulimit -e clamscan -l 15.
Sid
Oh! Certo! Então eu deveria começar o cpulimit na inicialização do rc.local, certo?
Pitto
2
sudoNão é necessário o processo não é um processo do sistema. Assim como uma nota
Anwar
Esta seria uma solução muito legal se usado programattically! Ele suporta pesquisas baseadas em padrões?
Jonny Asmar
4

Isso seria um comentário sobre a resposta de Clausi (que eu acredito ser a mais "correta" do ponto de vista da administração do sistema, na minha opinião), mas floresceu em algo grande demais para caber na caixa de comentários.

  • O Clamscan tem uma quantidade fixa de trabalho para fazê-lo, limitando-o a uma certa velocidade significa que levará mais tempo. Isso manterá a CPU em disputa por mais tempo.

  • Permitir que ele funcione o mais rápido possível significa que você usa sua CPU ao máximo. Tornar muito "agradável" significa que permitirá que outros processos façam seu trabalho antes do seu. Isso significa que, se houver muitos outros processos ocupados, sim, levará muito tempo para fazer seu próprio trabalho, mas se não houver nada lá, será apenas uma carga de trabalho.

Oli
fonte
3

Se você estiver executando o clamd com systemd, poderá usar a CPUQuotaopção

Edite /lib/systemd/system/clamav-daemon.servicepara incluir esta linha na [Service]seção:

CPUQuota=20%

Em seguida, reinicie o serviço

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Keith
fonte