¿Establecer un nivel agradable más alto para un proceso es una forma efectiva de reducir su impacto en la carga del sistema / tiempo de CPU?

10

Tengo un trabajo cron rsync que empuja la carga del servidor y activa alertas de monitor. Si configuro el trabajo para que se ejecute con un alto nivel agradable, ¿eso reduciría efectivamente el impacto que tiene en los valores de carga del sistema?

Gregg Leventhal
fuente
Para rsync, sería más efectivo usar sus interruptores para reducir la compresión o limitar el uso del ancho de banda.
Nemo

Respuestas:

9

No reducirá su carga.

Solo permitirá que otros procesos usen el tiempo de CPU con mayor frecuencia si existe una posible contención de recursos (varios procesos "compiten" por no tener suficiente tiempo de CPU disponible).

Totor
fuente
9

Cambiar el valor agradable no reducirá directamente la carga del sistema. Sin embargo, puede usarse para dejar más recursos disponibles para los procesos restantes, lo que sospecho es lo que realmente desea.

De http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

Kernel decide cuánto tiempo de procesador se requiere para un proceso basado en el buen valor. El rango de valor agradable posible es: -20 a 20. Un proceso que tiene un valor agradable de -20 es una prioridad muy alta. El proceso que tiene un buen valor de 20 es de muy baja prioridad.

Entonces, sí, desea ejecutar el trabajo cron a un nivel más alto que los otros procesos si desea asegurarse de que otros procesos tengan prioridad.

Para hacer esto, desea que su script cron se ejecute así:

/bin/nice -n 10 /path/to/cron-script

Esto ejecutará el script cron a un nivel de aumento aumentado en 10. Probablemente desee probar un poco para encontrar un buen equilibrio (juego de palabras no intencionado) entre los procesos restantes y el tiempo de ejecución del script.

Vea también ¿Cómo es un buen trabajo? y http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ para más detalles.

M_dk
fuente
5

Cambiar el buen nivel de un proceso es poco probable que afecte el valor de carga del sistema. El valor de carga del sistema es la longitud promedio de la cola de ejecución , que es básicamente el número de procesos que desean usar la CPU.

Si está ejecutando un proceso vinculado a la CPU (rsync no lo está, pero solo por ejemplo), siempre querrá usar el tiempo de la CPU cuando haya algo disponible. Como siempre quiere ejecutarse, aportará un valor de carga de 1.0 al valor de carga del sistema. No importa cuál sea el nivel agradable del proceso, porque la longitud promedio de la cola de ejecución no se ve afectada por el orden de los procesos en la cola de ejecución.

Greg Hewgill
fuente
Esto es importante para recordar. Si ejecuta muchos procesos optimizados, la carga del sistema se verá muy alta, incluso si de hecho no se ralentiza el trabajo real. En algunos casos, la carga revela un problema real, es decir, que Linux no puede permitir que el proceso ingenioso use todos los recursos que realmente podría usar sin problemas (todos se quedan esperando la mayor parte del tiempo sin ganancia).
Nemo
3

Puede considerar 3 formas de reducir el impacto de su proceso en la carga del sistema / tiempo de CPU:

  • Use el nicecomando para reducir manualmente la prioridad de la tarea.
  • Use el cpulimitcomando para pausar repetidamente el proceso para que no exceda un cierto límite.
  • Use Linux built-in control groups, un mecanismo que le dice al planificador que limite la cantidad de recursos disponibles para el proceso.

Recursos

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

RafaSashi
fuente
Definitivamente desea utilizar cgroups para equilibrar los recursos del sistema. Eso permite particionar los recursos como desee (CPU, memoria, disco IO, ancho de banda del disco) y en situaciones de baja carga, incluso los procesos de "baja prioridad" obtienen el máximo rendimiento a diferencia de los trucos de modo de usuario que a menudo terminan ralentizando el proceso de baja prioridad todo el tiempo.
Mikko Rantalainen