X

Mejorar el rendimiento de un sistema operativo de escritorio Linux

A continuación detallaré una serie de modificaciones en la configuración que les ayudarán a mejorar el rendimiento de su sistema operativo Linux. Las modificaciones que aplicaremos modificarán la gestión de la memoria de nuestro equipo y el funcionamiento del disco duro.

Las mejoras serán claramente palpables en equipos no actuales o que sean escasos en recursos. Si disponen de máquinas modernas difícilmente notarán una mejora.

Nota: Las modificaciones son para aplicar en ordenadores personales. No están pensadas para aplicar en servidores de gran capacidad que tengan gran cantidad de usuarios y una carga importante.

MODIFICAR LA GESTIÓN DE LA MEMORIA PARA MEJORAR EL RENDIMIENTO

Para aprovechar mejor la memoria de nuestro equipo les recomiendo realicen lo siguiente. Abran un terminal y ejecuten el siguiente comando:

sudo nano /etc/sysctl.conf

Cuando se abra el editor de texto nano vayanse al final del archivo y peguen el siguiente código:

vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.watermark_scale_factor = 200
vm.dirty_ratio = 3

Una vez pegado el código ya pueden guardar los cambios, cerrar el fichero y reiniciar el equipo. Una vez reiniciado el equipo deberían ser capaces de ver una mejora en el rendimiento y desempeño de su equipo. A continuación les daré una breve explicación de lo que hace cada uno de los parámetros de la memoria que hemos modificado.

Mejorar el rendimiento modificando el valor swappiness

El valor predeterminado de sawppiness es 60. Con la siguiente línea lo reducimos a 10.

vm.swappiness = 10

Al tener un valor inferior nuestro sistema operativo hará un uso mucho menor de la memoria de intercambio. Como el uso de la memoria de intercambio será menor, la fluidez en la ejecución y uso de los programas debería ser mejor. Si quieren más información sobre el funcionamiento de la memoria Swap pueden consultar el siguiente enlace:

Cambiar el valor de ”cache_pressure” para incrementar el rendimiento

El valor predeterminado de la variable cache pressure es 100. Mediante el siguiente código los reducimos a 50.

vm.vfs_cache_pressure = 50

Bajando el valor reduciremos la frecuencia con que la memoria RAM libera el espacio ocupado en cachear inodos y dentries. De este modo reducimos el intercambio de información entre el disco duro y la memoria RAM y por lo tanto mejoraremos el rendimiento del equipo.

Mejorar el rendimiento del equipo con la variable “vm.watermark_scale_factor”

La variable vm.watermark_scale_factor determina el momento en que se activa el demonio Kswapd y se inicia la paginación. También determina la cantidad de información en la memoria que será paginada al disco.

Mediante la siguiente la siguiente línea de código modificamos el valor estándar de 10 y lo incrementamos a 200:

vm.watermark_scale_factor = 200
Nota: El valor máximo es 1000.

Cambiando el valor de 10 a 200 conseguimos que el proceso de paginación se inicie antes. Si el valor es 200, cuando quede un 2% de RAM libre se iniciará Kswapd para paginar datos de la memoria RAM al disco duro.

Esta característica ayuda a sistemas que no van sobrados de memoria RAM. Si un equipo modesto trabaja con el valor por defecto (10) significa que la paginación se iniciará cuando solo quede un 0,1% de memoria RAM libre. Esta situación extrema puede hacer que equipos modestos se cuelguen o congelen por falta de recursos y memoria disponible.

Mejorar el rendimiento del ordenador con la variable “vm.dirty_ratio”

El valor por defecto de vm.dirty_ratio es de 40. En nuestro caso lo hemos reducido a 3 mediante el siguiente código:

vm.dirty_ratio = 3

Reduciendo el valor, los datos presentes en la memoria que se han modificado y por lo tanto son diferentes a los almacenados en el disco duro, se esrcriben al disco con una frecuencia más alta, pero en cada transferencia la cantidad paginada será mucho menor.

De este modo, en el caso que la velocidad de escritura de nuestro disco duro sea lenta y/o en el caso que la CPU sea poco potente notaremos una mejora de rendimiento en nuestro equipo.

MEJORAR EL RENDIMIENTO ACTIVANDO LA CACHE DE ESCRITURA DE LA UNIDAD DE ALMACENAMIENTO

Habilitando la cache de escritura de nuestra unidad de almacenamiento, las operaciones se realizarán más rápido.

Al activar la cache de escritura se pueden iniciar procesos sin tener que esperar que la información de la memoria RAM se escriba en el disco duro. De esta forma conseguiremos un mayor rendimiento. No obstante hay que tener en cuenta que una pérdida de energía o un error en el equipo pueda ocasionar la pérdida de la información de los datos almacenados en la cache y que por lo tanto aun no se han escrito en el disco duro.

Nota: A priori no me preocuparía por la posibilidad de pérdida de información. Todos los sistemas Windows activan la cache de escritura por defecto.

Instrucciones para activar la cache de escritura en disco

La forma más sencilla para activar la cache de escritura de nuestra unidad de almacenamiento es con la utilidad gnome-disk. Para su instalación tenemos que ejecutar el siguiente comando en la terminal:

sudo apt install gnome-disk-utility

Una vez instalada la utilidad realizamos lo siguiente:

  1. Abrimos la aplicación que acabamos de instalar. La aplicación la encontraréis en el menú de vuestra distro. En el caso que no la encontréis la podéis abrir ejecutando el comando gnome-disks en la terminal.
  2. Seleccionamos la unidad de almacenamiento en que tenemos instalado el sistema operativo.
  3. Acto seguido clicamos en icono de opciones de la unidad y cuando se despliegue el menú clicamos en la opción Configuración de la unidad…

A continuación clicamos en la pestaña cache de escritura. Acto seguido activen la cache de escritura y presionen el botón Aceptar.

Una vez realizadas las modificaciones que hemos indicado reinicien el ordenador. A partir de estos momentos deberían nota una mejora importante en su sistema operativo.

MEJORAR EL RENDIMIENTO PRECARGANDO INFORMACIÓN EN LA MEMORIA CON PRELOAD

A grandes rasgos Preload precarga procesos y librerías de las aplicaciones que acostumbramos a usar en la memoria RAM. De este modo las aplicaciones se abrirán de forma más rápida y fluida y notaremos un mejor desempeño de nuestro ordenador. Para instalar Preload en Debian y en distribuciones derivadas de Debian tan solo tienen que ejecutar el siguiente comando:

sudo apt install preload

Una vez finalizada la instalación ejecutaremos los siguientes comandos para asegurar que Preload se inicie de forma automática cada vez que reiniciamos el equipo:

sudo service preload start
sudo service preload enable

Una vez ejecutados los comando reinicien el equipo. Después de reiniciar el equipo Preload debería estar contribuyendo a mejorar el rendimiento de nuestro equipo. Si quieren más información acerca de preload pueden leer el siguiente enlace:

¿POR QUÉ LINUX NO USA LAS OPCIONES QUE CITO EN ARTÍCULO DE FORMA PREDETERMINADA?

La configuración por defecto de las distros GNU-Linux está pensada para trabajar con servidores de gran capacidad que tienen una cantidad limitada de RAM y recursos. Obviamente este no es el caso de un ordenador de escritorio en que la mayoría de casos es usado para que un solo usuario realice tareas simples.

Además hay que tener presente que las distros se configuran para ser compatibles con el 100% de los equipos y existen características, como por ejemplo la cache de escritura de disco, que no están disponibles en todos los hardware.

OTRAS ACCIONES PARA MEJORAR EL RENDIMIENTO DEL EQUIPO

Siguiendo los pasos de este artículo es más que probable que noten una mejora importante en el rendimiento. No obstante hay otros puntos que deberían tener en cuenta para que el rendimiento de su equipo sea óptimo. Algunos de estos puntos son los siguientes:

  1. Hay comprobar que no se autoinicien aplicaciones que no usamos. Una aplicación cargada en memoria y que no usamos está consumiendo recursos que no podrán usar el resto de programas que si usamos. La gran mayoría de entornos de escritorio disponen de interfaces gráficas para controlar los programas y aplicaciones que se autoinician con el ordenador.
  2. También es interesante tener conocimiento de los demonios y/o servicios que se ejecutan en nuestro ordenador. En el caso que haya servicios y demonios que no usemos los deberíamos deshabilitar para evitar el consumo inútil de recursos. A modo de ejemplo, si su ordenador no tiene bluetooth deberíamos desactivar todos los demonios relacionados con la gestión del bluetooth.
  3. Existen otras herramientas no citadas en el post que pueden ayudar a mejorar el rendimiento de nuestro equipo. Algunos de ellas son Zram, Prelink, Zswap, etc.

RESULTADOS OBTENIDOS EN MI CASO

En mi caso dispongo de un equipo con pocos recursos. Después de aplicar las configuraciones del artículo he conseguido mejorar notablemente el rendimiento del equipo.

Antes de aplicar la configuración del artículo notaba que el equipo se congelaba en determinadas situaciones como por ejemplo al navegar. Pero con las soluciones citadas en el artículo todos los problemas de rendimiento que tenia han desaparecido.

Fuentes

https://docs.gluster.org/en/latest/Administrator-20Guide/Linux-20Kernel-20Tuning/

https://major.io/2008/08/07/reduce-disk-io-for-small-reads-using-memory/

https://www.vertica.com/kb/Tuning-Linux-Dirty-Data-Parameters-for-Vertica/Content/BestPractices/Tuning-Linux-Dirty-Data-Parameters-for-Vertica.htm

https://javaworks.wordpress.com/2013/08/27/performance-impact-of-dirty-pages-in-linux/

Categorías: Linux

Ver los comentarios (18)

    • Hola,

      Yo estoy en testing y el paquete está disponible.

      He mirado en la web de Debian y está disponible en testing, sid, Oldstable y Oldoldstable. Desconozco porque no está disponible en Buster.

      Saludos

  • Hola Joan. Estupendo tutorial para aplicar en mi viejo portátil con Linux Mint jeje.

    Pero me ha surgido una duda. Con el parámetro vm.swappiness, bajando el número aumentamos la ram que se utilizará antes de hacer swapping, con 10 se supone que mas o menos cuando quede un 10% de ram libre empezara el swapping y luego tenemos el parámetro wm.watermark_scale_factor que usamos para que se active antes el daemon kswapd que con el valor 200 se activa cuando queda un 2% de ram libre y aquí esta mi duda. ¿Qué parámetro de estos 2 prevalece para iniciar el swapping, vm.swappiness cuando quede el 10% de ram libre o wm.watermark_scale_factor cuando quede el 2% de ram libre?

    Saludos.

    • Hola

      Sin ser ningún experto y leyendo las fuentes que he dejado entiendo que son cosas distintas. La swappines da una indicación al kernel de la tendencia que tiene seguir al intercambiar datos de memoria a disco. Por ejemplo a valores bajos el kernel tendrá tendencia a mantener más datos en la memoria y a valores altos lo contrario. El valor de Swappines no da una indicación de cuando se iniciará la paginación o finalizará la paginación.

      Cuando el valor de swappiness es 10 no significa que que cuando quede un 10% de memoria libre se empezará a swapear. La fuente que diga esto está equivocada.

      Saludos

  • Estupendo artículo.

    Yo, además añadiría PRELINK, que facilita que los ejecutables tengan más " a mano " las librerías necesarias para ejecutarse, con lo que el tiempo de arranque y ejecución de éstos se incrementa bastante.

    Un saludo!!!

  • Excelente tutorial. No es fácil encontrar Buenos tutoriales en español con explicaciones detalladas sin que sean copias de otros. Muy claro. Muy práctico. Muchas gracias

  • Y el zswap como lo dejamos? yo lo tengo en 20, como viene por defecto:

    sudo nano /sys/module/zswap/parameters/max_pool_percent
    20

  • Muy buen tutorial pero en Debian 10.2 Buster no aparece "preload" pero el resto lo pude configurar y si se nota mejora en el rendimiento. Solo conocía el dato para mejorar la swap. Muchas gracias, Coloqué en mi página tu enlace a la tuya para que lo lea más gente.

  • Me parece un artículo fenomenal, la verdad. Tengo varios proyectos, y dado que cada vez más la velocidad de carga de un sistema es un factor clave, y dado que tener visitas aumenta la necesidad de recursos, tener opciones de mejora del rendimiento del servidor fuera de las típicas acciones como usar opcache, keep alive, etc, se agradecen muchísimo,
    mil gracias :)

    • Hola

      Gracias por tu comentario. Las mejoras que se proponen en el artículo van dirigidas a usuarios de escritorio. Dudo mucho que las configuraciones indicadas sean las adecuadas para un servidor que tenga una carga elevada.

      Saludos

  • Enhorabuena por este post y por tu blog en general, es muy útil, sencillo y a la vez profesional. ¡Gracias por compartirlo!

  • Pasaba por aquí para agradecer, muchas gracias por todo. Aunque debo confesar mi precaución pues todo lo relatado aquí de alguna manera fuerza el desempeño normal del OS y si mejora unas tareas de alguna forma debe afectar otras. Por ejemplo, Preload ayuda a la gestión de memoria pero va en detrimento del consumo en CPU pues no deja de ser un demonio en segundo plano de mediano peso que eleva su trabajo. Observaré estas modificaciones al archivo sysctl en mi sistema. De nuevo muchas gracias.

    • Las modificaciones que haces tan solo son parámetros que puedes restablecer de forma fácil. Por lo tanto en caso que funcione puedes volver a la configuración estándar. Y no se está forzando nada. Lo único que se hace es cambiar parámetros de configuración. El consumo de RAM de Preload es ridículo. En mi caso solo 6MB

      Saludos

  • Lo acabo de configurar y si noté un cambio, Abrí la terminal con top, otra actualizando con apt, abrí info del sistema (de KDE), abrí Brave browser con whatsapp y facebook y también habilite KDE Connect, y obviamente ejecutándose en el entorno Plasma (con animaciones y transparencia desactivadas) con solo 2GB de RAM y 5GB SWAP, y solo se me colgo durante medio segundo. Cuando las cerre todas de golpe después de aplicar esta config más zram, y eso que busque esta página porque ayer en la noche se me colgo con solo una pestaña abierta de Brave con Facebook,

Artículos Relacionados