Controle el uso de la CPU del proceso con nice y cpulimit

No importa cuán rápida sea su máquina Linux, siempre habrá algunas tareas que consumirán mucho tiempo de CPU. Todo, desde la codificación de video hasta la ejecución de modelos matemáticos, puede hacer que la CPU funcione al 100 %. Esto está bien si la máquina no está haciendo nada más. Pero si es su escritorio principal o se usa como servidor, ejecutar una tarea que maximice su CPU hará que la máquina sea lenta y difícil de usar. La belleza de un sistema operativo multitarea es que la máquina no se congelará, ya que siempre programará el tiempo de la CPU para otras tareas y cosas como el escritorio seguirán funcionando, pero mucho más lento. El programador no tiene forma de saber que desea que la tarea intensiva de CPU se ejecute con una prioridad más baja o que limite su tiempo de CPU. Sin embargo, hay algunas herramientas que se pueden usar para controlar el uso de la CPU del proceso para estas tareas que consumen muchos recursos.

Para emular una tarea intensiva de CPU, podemos usar una herramienta llamada matho-prime que genera una lista de números primos. Si le pide que genere una lista lo suficientemente grande, maximizará la CPU mientras está funcionando. Instalar matho-prime en Ubuntu o en un uso de Raspberry Pi:

sudo apt-get install mathomatic-primes

Comencemos la tarea y veamos el uso de la CPU:

matho-primes 0 9999999999 > p.txt &

esto dice matho-primes ¡para generar una lista de números primos de cero a nueve mil novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve! La salida se redirige al archivo. p.txt. El ampersand al final le dice al shell que ejecute el programa en segundo plano, lo que significa que volverá al símbolo del sistema inmediatamente después de comenzar la tarea.

Ahora ejecuta el top comando y observe la cantidad de CPU que utiliza el generador de números primos.

Matho-primes-max-cpu

Ahora eliminemos esa tarea y veamos cómo podemos iniciarla con una prioridad más baja. Salida top presionando qluego escriba fg traer matho-primes al primer plano y luego presione «Ctrl + C» para forzar la salida del programa.

Ahora inicie el programa nuevamente pero al comienzo del comando agregue la palabra nice:

nice matho-primes 0 9999999999 > p.txt &

nice es una herramienta que le dice a Linux que programe esta tarea con una prioridad más baja. La amabilidad varía de -20 (programación más favorable) a 19 (menos favorable). Por defecto nice programará la tarea con una amabilidad de 10. Por defecto, las tareas normales se inician con una amabilidad de cero. Esto significa que una tarea con una amabilidad de 10 se considerará de menor prioridad y se le asignarán recursos de CPU con menos frecuencia.

Ahora podemos iniciar un segundo de estos generadores de números primos para emular otras tareas que desea realizar en su máquina (como navegar por la web o escribir un documento). Este tendrá una amabilidad normal, ya que usar el escritorio debería ser una prioridad mayor que ejecutar el generador de números primos.

matho-primes 0 9999999999 > p2.txt &

Tenga en cuenta que la salida de este archivo se redirige a p2.txt. La salida de top se verá algo como esto:

matemáticos-primos-agradables

Como puede ver, el proceso con mayor amabilidad recibe menos tiempo de CPU. Esto significa que si inicia una tarea intensiva de CPU con niceno hará que su máquina se sienta lenta ni que responda lentamente.

límite de cpu

Hay otro comando llamado «cpulimit» que, en lugar de cambiar la prioridad de programación, detiene temporalmente un proceso para asegurarse de que no exceda el uso de CPU deseado.

Para instalarlo escribe:

sudo apt-get install cpulimit

Ahora vuelva a ejecutar el generador de números primos con uso intensivo de la CPU y anote su número PID con este comando:

La primera columna de la salida es el PID. Ahora limite el uso de la CPU de ese proceso de esta manera:

sudo cpulimit -b -l 50 -p 16299

Donde 16299 es el PID del matho-primes proceso. una mirada con top mostrará algo como esto:

Matho-primos-cpulimit

Ir más lejos

Hay un comando complementario para nice llamó renice que cambiará la amabilidad de un proceso existente. tratando de usar top o ps con grep para obtener el PID de un proceso y utilizar renice +19 16299 para establecer la prioridad a la menor posible (donde 16299 es el PID del proceso).

Siéntase libre de agregar en la discusión en el comentario a continuación.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *