comunidades

Controlar el uso de la CPU del proceso con nice y cpulimit[Linux].

No importa cuán rápido sea su máquina Linux, siempre habrá algunas tareas que consumen mucho tiempo de CPU. Todo, desde la codificación de vídeo hasta la ejecución de modelos matemáticos, puede hacer que la CPU se ejecute 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, entonces 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 congela, ya que siempre programará el tiempo de la CPU para otras tareas y cosas como el escritorio seguirán funcionando, pero mucho más lentamente. El programador no tiene forma de saber que desea que la tarea intensiva de la CPU se ejecute con una prioridad menor o que limite el tiempo de su CPU. Sin embargo, hay algunas herramientas que se pueden utilizar para controlar el uso de la CPU de proceso para estas tareas hambrientas de 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á el rendimiento de la CPU mientras está funcionando. Para instalar matho-prime en Ubuntu o en un Pi de frambuesa:

sudo apt-get install mathomatic-primes

Comencemos la tarea y veamos el uso de la CPU:

matho-primes 0 99999999999999> p.txt &

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.

Esto le dice a matho-primes que genere una lista de 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 a la shell que ejecute el programa en segundo plano, lo que significa que regresará a la línea de comandos inmediatamente después de iniciar la tarea.

Ahora ejecute el comando superior y observe la cantidad de CPU que está siendo utilizada por el generador de números primos.

Controlar el uso de la CPU del proceso con nice y cpulimit[Linux].


Ahora matemos esa tarea y veamos cómo podemos lanzarla con una prioridad menor. Salga de la parte superior presionando q, luego escriba fg para poner los cebos matemáticos en primer plano y luego presione «Ctrl + C» para forzar la salida del programa.

Ahora inicie el programa de nuevo pero al principio del comando agregue la palabra nice:

nice matho-primes 0 999999999999> p.txt &

nice es una herramienta que le dice a Linux que programe esta tarea con una prioridad menor. La amabilidad oscila entre -20 (programación más favorable) y 19 (menos favorable). Por defecto, nice programará la tarea con una precisión de 10. Por defecto, las tareas normales se inician con una precisión de cero. Esto significa que una tarea con una amabilidad de 10 será vista como de menor prioridad y se le darán menos recursos de CPU.

Ahora podemos iniciar un segundo de estos generadores de números primos para emular otras tareas que quieras hacer en tu máquina (como navegar por la web o escribir un documento). Este tendrá una amabilidad normal, ya que el uso del escritorio debe ser una prioridad mayor que la de ejecutar el generador de números primarios.

matho-primes 0 999999999999> p2.txt &

Tenga en cuenta que la salida de este archivo se redirige a p2.txt. La salida desde arriba se verá algo así:

Controlar el uso de la CPU del proceso con nice y cpulimit[Linux].


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

cpulimit

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

Para instalarlo escriba:

sudo apt-get install cpulimit

Ahora ejecute de nuevo el generador de números primos intensivo de la CPU y anote su número PID usando este comando:

ps | grep matho-prime

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 proceso matho-primes. Una mirada con la parte superior mostrará algo como esto:

Controlar el uso de la CPU del proceso con nice y cpulimit[Linux].


Ir más allá

Hay un comando que acompaña a nice llamado renice que cambiará la amabilidad de un proceso existente. Intentando usar top o ps con grep para obtener el PID de un proceso y usar renice +19 16299 para establecer la prioridad al mínimo posible (donde 16299 es el PID del proceso).

Siéntase libre de añadir en la discusión en el comentario de abajo.

Fuente: este post proviene de Vida Tecno, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Etiquetas:

Recomendamos