Puede establecer la cantidad de CPU que puede 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á que sentarse y mirar fijamente su computadora que no responde por mucho tiempo.
En este artículo, le mostraré cómo limitar el uso de 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 CPU con nice y renice:
En Linux, las prioridades de cada proceso en ejecución se pueden cambiar. Puede establecer prioridades más altas para el proceso que es más importante para usted que un proceso que está acaparando su CPU sin una buena razón.
Cada proceso en Linux tiene un buen valor. El valor de nice determina qué proceso tiene mayor prioridad y cuál tiene menor. Buen valor puede estar entre -20 y 19. Un proceso con el valor agradable de -20 tendrá la máxima prioridad y utilizará la mayoría de los ciclos de CPU. Un proceso con el valor agradable 19 tendrá la prioridad más baja y usará la CPU cuando ningún otro proceso la esté usando solo.
Hay dos formas de establecer el valor agradable de un proceso. Puede iniciar un proceso con el bonito comando para establecer un valor agradable al iniciar el proceso. O puede usar el re bueno comando para establecer un valor agradable después de que ha comenzado un proceso.
Para establecer un valor agradable al iniciar un proceso, ejecute el proceso de la siguiente manera:
$ agradable -n NICE_VALUE COMMAND_TO_RUNNOTA: Aquí NICE_VALUE puede ser cualquier cosa desde -20 a 19 y COMMAND_TO_RUN es cualquier comando que desee ejecutar con el buen valor de NICE_VALUE.
Por ejemplo, digamos que desea ejecutar el dormir comando con el buen valor de 14. Ejecute el comando de la siguiente manera:
$ agradable -n 14 duermen 40000 y
Ahora puede verificar si el valor agradable está configurado correctamente usando 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 valor agradable del proceso se establece en 14.
Ahora, si desea cambiar el valor agradable de sus procesos existentes, entonces todo lo que necesita es el ID de proceso (PID) del proceso del cual desea cambiar el valor agradable. Puedes usar el ps aux comando o el cima comando para encontrar el ID de proceso o PID.
Entonces puedes correr re bueno comando de la siguiente manera para cambiar el valor agradable 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 CPU con CGROUPS:
La forma completa de GRUPOS es Control GRAMOgrupos. Es una característica del kernel de Linux que se utiliza 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 los procesos a los que desea limitar los recursos a ese grupo. Sencillo!
Las herramientas de administración de CGROUPS no están instaladas en CentOS 7 de forma predeterminada. Pero está disponible en el repositorio oficial de paquetes de CentOS 7.
Primero actualice la caché del repositorio de paquetes YUM con el siguiente comando:
$ sudo yum makecache
Ahora instale las herramientas de administración de CGROUPS con el siguiente comando:
$ sudo yum instalar libcgroup-tools
Ahora presiona y y luego presione
Debe estar instalado.
Puede limitar el uso de CPU de un solo grupo. Por ejemplo, puede usar CGROUPS para decirle a un proceso dentro de un CGROUP que use, digamos, 100 ms de cada 1000 ms (o .1 s de cada 1 s) de tiempo de CPU.
Primero crea un CGROUP con el siguiente comando:
$ sudo cgcreate -g cpu: / cpulimitNOTA: 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, 1000 ms (milisegundos) o 1000000us (microsegundos) deben establecerse en UPC.cfs_period_us propiedad y 100ms o 100000us deben establecerse en la 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_quota_us = 100000 cpulimit
Ahora puede ejecutar el siguiente comando para verificar si todas las propiedades están configuradas correctamente:
$ sudo cgget -g cpu: cpulimitNOTA: 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 cual sea el proceso que agregue cpulimit CGROUP utilizará 1/10th (100000/1000000 = 1/10 = 0.1 = 10%) del total de ciclos de CPU.
Ahora para limitar la CPU de un proceso, inicie el programa o comando con cgexec como sigue:
$ sudo cgexec -g cpu: cpulimit YOUR_COMMANDNOTA: Aquí, TU_MANDA puede ser cualquier comando válido de Linux.
Para demostrar que realmente funciona, primero ejecutaré el siguiente comando sin CGROUPS y luego con CGROUPS y le mostraré los resultados.
$ dd if = / dev / zero 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 / zero of = out bs = 1M
Como puede ver, el uso de la CPU es del 10% como máximo. El proceso no está usando más que eso.
Así es como usa CGROUPS para limitar el uso de CPU de un proceso en Linux. Gracias por leer este artículo.
Referencias:
[1] https: // acceso.sombrero rojo.com / documentation / en-us / red_hat_enterprise_linux / 6 / html / resource_management_guide / sec-cpu
[2] https: // linux.morir.net / man / 1 / nice
[3] https: // linux.morir.net / man / 8 / renice