Cómo limitar el uso de la CPU de un proceso en Linux

Cómo limitar el uso de la CPU de un proceso en Linux
En su vida útil de Linux, debe haber visto algunos procesos tomar todos los ciclos de CPU (uso de CPU del 90-99%), lo que hace que su computadora sea casi insensible hasta que termine. Eso puede estar bien si el proceso tarda unos segundos en completarse. Pero, ¿y si lleva mucho tiempo?? Eso no es muy agradable sentarse y mirar su computadora que no responde durante minutos y horas, correcto? Bueno, Linux tiene muchas herramientas increíbles para hacer estas no muy bueno procesos a lindo procesos.

Puede establecer cuánta CPU se permite tener un solo proceso. Si el proceso realmente necesita mucha potencia de CPU, puede ejecutar algunos comandos para darle todos los ciclos de CPU inactivos (ciclos de CPU que no necesita). De esa manera, nunca tendrás que sentarte y mirar tu computadora que no responde por mucho tiempo.

En este artículo, le mostraré cómo limitar el uso de la CPU de un proceso en Linux. Voy a usar CentOS 7 en este artículo. Pero cualquier distribución moderna de Linux debería funcionar. Entonces empecemos.

Limitar el uso de la CPU con Niza y Renice:

En Linux, las prioridades de cada procesos de ejecución se pueden cambiar. Puede establecer prioridades más altas en el proceso que es más importante para usted que un proceso que acaparan su CPU sin ninguna buena razón.

Cada proceso en Linux tiene un buen valor. El valor de NICE determina qué proceso tiene prioridades más altas y cuáles tienen más bajos. Un buen valor puede ser entre -20 a 19. Un proceso con el buen valor de -20 tendrá la más alta prioridad y utilizará la mayoría de los ciclos de CPU. Un proceso con el buen valor 19 tendrá la prioridad más baja y usará la CPU cuando no hay otros procesos que lo usen solo.

Hay dos formas de establecer el buen valor de un proceso. Puede comenzar un proceso con el lindo comandar para establecer un buen valor al comenzar el proceso. O puedes usar el re bueno comando establecer un buen valor después de que haya comenzado un proceso.

Para establecer un buen valor cuando comience un proceso, ejecute el proceso de la siguiente manera:

$ nice -n nice_value command_to_run

NOTA: Aquí Bonito_value puede ser cualquier cosa de -20 a 19 y Command_to_run es cualquier comando que desee ejecutar con el buen valor de Bonito_value.

Por ejemplo, digamos, quieres ejecutar el dormir comando con el buen valor de 14. Ejecute el comando de la siguiente manera:

$ nice -n 14 Sleep 40000 y

Ahora puede verificar si el buen valor se establece correctamente utilizando el comando superior. Puede enumerar todos los procesos que inició (como su usuario de inicio de sesión) con el siguiente comando:

$ ps -fl

Como puede ver, el buen valor del proceso se establece en 14.

Ahora, si desea cambiar el buen valor de sus procesos existentes, entonces todo lo que necesita es el ID de proceso (PID) del proceso del que desea cambiar el buen valor. Puedes usar el ps aux comando o el arriba Comandar para encontrar la identificación del proceso o PID.

Entonces puedes correr re bueno Comando de la siguiente manera para cambiar el buen valor de un proceso existente:

$ sudo renice -n new_nice_value -p process_pid

Como puede ver, se cambia el buen valor del proceso con PID 6422.

Limitar el uso de la CPU con CGROUPS:

La forma completa de CGROUPS es Condulado GRAMOrupias. Es una característica del núcleo de Linux utilizada para limitar los recursos para procesar grupos como (CPU, memoria, permisos y muchos más) en Linux.

Todo lo que tiene que hacer es crear un nuevo grupo de procesos y agregar sus procesos a los que desea limitar los recursos, a ese grupo. Simple!

Las herramientas de administración de CGROUPS no se instalan en CentOS 7 por defecto. Pero está disponible en el repositorio oficial de paquetes de Centos 7.

Primero actualice el caché del repositorio de paquetes YUM con el siguiente comando:

$ sudo yum makecache

Ahora instale herramientas de administración de CGroups con el siguiente comando:

$ sudo yum install libcgroup-gools

Ahora presiona Y y luego presiona .

Debe instalarse.

Puede limitar el uso de la CPU de un solo grupo. Por ejemplo, puede usar CGROUPS para indicar un proceso dentro de un CGROUP para que usemos 100 ms de cada 1000 ms (o .1S de cada 1S) de tiempo de CPU.

Primero cree un CGROUP con el siguiente comando:

$ sudo cgcreate -g cpu:/cpulimit

NOTA: Aquí, cpulimit es el nombre del grupo que controla el UPC uso.

Ahora tienes que configurar UPC.CFS_PERIOD_US y UPC.cfs_quota_us propiedad en el cpulimit grupo.

Para este ejemplo, se deben establecer 1000 ms (milisegundos) o 1000000US (microsegundos) UPC.CFS_PERIOD_US propiedad y 100 ms o 100000us deben establecerse en el UPC.cfs_quota_us propiedad.

Ejecute los siguientes comandos para establecer estas propiedades en el cpulimit grupo:

$ sudo cgset -r CPU.CFS_PERIOD_US = 1000000 CPULIMIT
$ sudo cgset -r CPU.CFS_QUIT_US = 100000 CPULIMIT

Ahora puede ejecutar el siguiente comando para verificar si todas las propiedades están configuradas correctamente:

$ sudo cgget -g CPU: CPULIMIT

NOTA: Aquí, cpulimit es el nombre del cgroup y UPC es el recurso que estoy limitando.

Como se puede ver, UPC.CFS_PERIOD_US y UPC.cfs_quota_us están configurados correctamente.

Ahora sea cualquier proceso al que agregue cpulimit Cgroup usará 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) de los ciclos totales de la CPU.

Ahora para limitar la CPU de un proceso, inicie el programa o el comando con cgexec como sigue:

$ sudo cgexec -g cpu: cpulimit your_command

NOTA: Aquí, Tu_Command puede ser cualquier comando válido de Linux.

Para demostrar que en realidad funciona, primero voy a ejecutar el siguiente comando sin CGROUPS y luego con CGROUPS y le mostraré los resultados.

$ dd if =/dev/cero of = out bs = 1m

Como puede ver, sin CGROUPS, el comando usa el 90% de la CPU total.

Luego, ejecuté el mismo comando con CGroups de la siguiente manera:

$ sudo cgexec -g cpu: cpulimit dd if =/dev/cero of = out bs = 1m

Como puede ver, el uso de la CPU es del 10% al máximo. El proceso no está utilizando más que eso.

Así es como usa CGROUPS para limitar el uso de la CPU de un proceso en Linux. Gracias por leer este artículo.

Referencias:

[1] https: // acceso.sombrero rojo.com/documentation/en-us/rojo_hat_enterprise_linux/6/html/resource_management_guide/sec-cpu

[2] https: // Linux.morir.net/hombre/1/agradable

[3] https: // Linux.morir.net/hombre/8/Renice