Cómo limitar el consumo de CPU y memoria en Google Chrome y en otros aplicativos en Linux

Hola a todos,

En este artículo, vamos a abordar un tema que podría interesar a muchos: cómo gestionar o limitar los recursos de nuestros programas en Linux.

¿Pero por qué querríamos hacer esto? Es posible que, como muchos, tu programa más utilizado sea un navegador web, ya sea Chrome o Firefox. Estos navegadores, por lo general, consumen una gran cantidad de recursos, especialmente memoria. Cuantas más pestañas tengas abiertas, más recursos se requieren. Además, utilizan una cantidad considerable de CPU cuando procesan páginas que exigen un alto rendimiento, como Instagram o YouTube.

El problema de no limitar los recursos que asignamos a nuestro navegador es que este puede consumir todo el rendimiento disponible de nuestro sistema. Esto es especialmente problemático en laptops, que tienden a calentarse mucho. Cuando permitimos que el navegador utilice todos los recursos, puede hacer que varios núcleos de nuestro CPU funcionen al 100% durante largos períodos.

Como resultado, la temperatura del equipo puede aumentar significativamente, lo que podría acortar la vida útil de nuestro hardware y dañar la pasta térmica del CPU más rápidamente.

Ahora, surge una pregunta importante: ¿realmente necesitamos que el navegador tenga acceso a todos nuestros recursos para disfrutar de una buena experiencia?

La respuesta es que no necesariamente. Es posible encontrar un equilibrio entre un rendimiento óptimo para nuestras necesidades y el consumo de recursos.

Una herramienta eficaz para lograr esto es el uso de cgroups (grupos de control), que nos permite gestionar y limitar los recursos asignados a diferentes procesos en nuestro sistema Linux.

Creo que es hora de ponernos a jugar.

Para simplificar la configuración, nosotros no trabajaremos directamente con cgroups. En su lugar, nos ayudaremos con systemd, un sistema de inicio y gestión de servicios ampliamente utilizado en las distribuciones modernas de Linux.

Systemd facilita la administración de procesos y proporciona funciones avanzadas como la gestión de servicios, la supervisión de su estado y la configuración de límites de recursos a través de cgroups, lo que lo convierte en una herramienta ideal para nuestro propósito.

Un ejemplo de cómo usar systemd para limitar los recursos de Google Chrome sería el siguiente comando:

systemd-run --user --property=CPUQuota=480% --property=MemoryMax=4G -- google-chrome

Este comando ejecuta Google Chrome con límites de recursos establecidos.

La opción más fácil de comprender es --property=MemoryMax, que nos permite definir la cantidad máxima de memoria que queremos que el proceso utilice.

Para un uso general, Google Chrome suele funcionar sin problemas con 4 GB de RAM. Sin embargo, esto dependerá de cuántas pestañas utilices en el navegador; en general, a más pestañas abiertas, más memoria necesitarás.

En cuanto al límite de CPU, ¿qué significa ese 480%?

Este valor se basa en mi configuración, que tiene un CPU de 4 núcleos físicos pero cada núcleo puede manejar 2 hilos simultáneamente. Por lo tanto, aunque físicamente tiene 4 núcleos, el sistema operativo los ve como 8 núcleos lógicos.

Conociendo esto, he decidido permitir que cada núcleo utilice un máximo del 60% de su capacidad.

Para calcular el porcentaje total, utilizamos la siguiente fórmula:

número de núcleos × 100 × límite

Que en este caso sería:

8 × 100 × 0.60 = 480

Tanto en lo que respecta a la memoria como a los límites que quieras establecer para tu CPU, es fundamental realizar pruebas con tu navegador para verificar si se comporta de manera eficiente dentro de las limitaciones que definas.

Esto dependerá del uso que le des al navegador.

Te recomiendo que, en cada prueba, abras YouTube e Instagram y reproduzcas algunos videos. Observa si hay interrupciones en el sonido o en la reproducción del video.

Si todo funciona sin inconvenientes, puedes concluir que has logrado una configuración óptima, o bien que has asignado más recursos de los que realmente necesita Chrome.

Si este es el caso, no te preocupes; asumiré que has destinado el máximo de recursos que deseas que consuma Chrome.

Ejecutar Google Chrome desde el lanzador de aplicaciones

Para finalizar, ¿cómo podemos ejecutar Google Chrome sin necesidad de hacerlo desde la terminal y hacerlo disponible para todos los usuarios desde el lanzador de aplicaciones de escritorio?

Para lograrlo, modificaremos directamente el archivo:

/usr/share/applications/google-chrome.desktop

Deberás cambiar todas las líneas que comienzan con:

Exec=google-chrome-stable %U

Reemplazándolas por la siguiente línea:

Exec=systemd-run --user --property=CPUQuota=480% -- google-chrome-stable %U

Con este ajuste, todos los usuarios podrán acceder a Google Chrome con los límites de recursos que hemos configurado.

Una consideración importante

Quisiera hacer una última mención importante: todos los archivos que modifiquen en la dirección /usr/share/applications/ serán sobrescritos si la aplicación se actualiza.

Por lo tanto, es recomendable utilizar la ruta:

~/.local/share/applications

para realizar sus modificaciones.

Espero que esta información les sea de mucha ayuda y que disfruten de mi contenido tanto como yo disfruto al escribirlo.

¡Un saludo!


Referencia:

systemd Resource Control

Leave a Reply

Your email address will not be published. Required fields are marked *

Are you human? Please solve:Captcha