¿Puedo limitar el uso de CPU de una sola aplicación?

Respuestas:

16

Solo como una alternativa a cpulimit:

Puede iniciar clamscan con el comando nice, p. Ej.

nice -n 19 clamscan.

Ver man nicepara más detalles.

No NO limitar la CPU, pero lo hace bajar la prioridad del proceso.

También hay reniceque alterar la prioridad de los procesos en ejecución.

Clausi
fuente
2
Parece que todavía funciona comiendo mucha CPU ...
Pitto
44
Mientras ningún otro proceso requiera cputime, clamscan obtiene mucho de él. Pero tan pronto como otro proceso (que tiene una prioridad más alta) necesite cputime, clamscan no tiene ninguna posibilidad. cpulimit limita el cputime absoluto, y nice limita el cputime relativo.
Clausi
2
+1. niceing es el camino tradicional a seguir, y por buenas razones.
loevborg
¿Hay alguna herramienta para definir un valor agradable predeterminado para que se ejecuten determinadas aplicaciones? Preferiblemente, una herramienta que le permite comparar todos sus ajustes preestablecidos uno al lado del otro.
Jonny Asmar
19

Instalar cpulimit

sudo apt-get install cpulimit

Proporciona diferentes métodos para limitar el uso de CPU de un proceso, foopor ejemplo, 20%

  • Por su nombre-proceso: sudo cpulimit -e foo -l 20.

  • Por su nombre de ruta absoluto: sudo cpulimit -P /usr/bin/foo -l 20

  • Por su PID:

    1. Encontrar el PID del proceso: pidof foo. (digamos, sale 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
fuente
No se encontró ningún proceso de destino ... ¿Tal vez es porque tengo un script para ejecutar clamscan? hago: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto
@Pitto: ha introducido un comando incorrecto, /etc/cron.hourly/virusscanno es un proceso. Si necesitas limitar clamscan, corre sudo cpulimit -e clamscan -l 15.
Sid
Oh! ¡Derecho! Entonces debería comenzar cpulimit al inicio en rc.local, ¿verdad?
Pitto
2
sudoNo es necesario que el proceso no sea un proceso del sistema. Solo como una nota
Anwar
¡Esta sería una solución realmente ordenada si se usa programáticamente! ¿Admite búsquedas basadas en patrones?
Jonny Asmar
4

Este iba a ser un comentario sobre la respuesta de Clausi (que creo que es la más "correcta" desde el punto de vista de la administración del sistema, en mi opinión), pero se convirtió en algo demasiado grande para caber en el cuadro de comentarios.

  • Clamscan tiene una cantidad fija de trabajo que hacer, por lo que limitarlo a una velocidad determinada significa que llevará más tiempo. Mantendrá la CPU en contención durante más tiempo.

  • Permitir que se ejecute lo más rápido posible significa que usa su CPU al máximo. Hacerlo muy "agradable" significa que permitirá que otros procesos hagan su trabajo antes que el suyo. Esto significa que si hay muchos otros procesos ocupados, sí, llevará mucho tiempo hacer su propio trabajo, pero si no hay nada allí, solo se reducirá a través de su carga de trabajo.

Oli
fuente
3

Si está ejecutando clamd con systemd, puede usar la CPUQuotaopción.

Edite /lib/systemd/system/clamav-daemon.servicepara incluir esta línea en la [Service]sección:

CPUQuota=20%

Luego reinicie el servicio

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