Ajustes automáticos del sistema con tuned en Centos y RHEL

En el artículo de hoy vamos a hablar de la herramienta tuned, que está disponible para sistemas RHEL y Centos. Se trata de un ‘daemon’ o servicio, que se encarga de realizar ajustes de manera automática en el sistema operativo de manera dinámica, en función del uso.

¿Qué es y cómo funciona tuned?

Tal y como he indicado en el párrafo anterior, a medida que el sistema operativo, incluido sus servicios, van funcionando, se encarga de recopilar información al respecto, para a posteriori realizar ajustes en este. Con más detalle podemos decir que, para cada subsistema de hardware, un complemento, en forma de monitor específico, recopila datos periódicamente. Esta información es utilizada por los complementos de ajuste, para cambiar la configuración del sistema, por ejemplo, a modo de ahorro de energía más bajo o más alto, con el fin de adaptarse al uso actual.

Ejemplos de estos complementos de monitoreo y ajuste, sería para la CPU, la red ethernet o los dispositivos de disco duro.

Tuned ofrece perfiles predefinidos para manejar casos de uso comunes, como alto rendimiento, baja latencia o ahorro de energía. Se pueden modificar las reglas ajustadas a cada perfil y personalizar cómo ajustar un dispositivo en particular. Más adelante, en esta entrada, hablaremos de ellos.

La herramienta está instalada por defecto en las versiones de Red Hat Enterprise Linux 7 y Centos 7. En versiones anteriores hay que instalarlo.

Instalación de tuned

Ya he comentado que en versiones anteriores a la 7, se debe instalar. Para ello sólo hemos de escribir:

  1. yum install tuned

Para añadirlo al inicio, en estas versiones, debemos realizar los siguientes pasos:

  1. chkconfig –add tuned
  2. chkconfig tuned on
  3. service tuned start

Aunque ya viene preinstalado en las versiones 7, debemos activar el servicio:

  1. systemctl enable tuned
  2. systemctl start tuned

En ambos casos, los ficheros de configuración son los mismos:

  • /etc/tuned – Carpeta con los ficheros de configuración
  • /etc/tuned/tuned-main.conf – Fichero de configuración principal
  • /usr/lib/tuned – Carpeta con todos los perfiles

Trabajando con tuned

Una vez ya lo hemos activado, podemos empezar a trabajar con él utilizando la herramienta “tune-adm”, que como indica su página de man es una “herramienta de línea de comandos, para cambiar entre diferentes perfiles de ajuste” Una ejemplo de uso sería ver que perfil tenemos activo:

  1. [root@servcentos-test]# tuned-adm active
  2. Current active profile: virtual-guest

Por lo que nos indica que tenemos cargado el perfil de anfitrión de máquina virtual. Además esta herramienta nos permite crear nuestro propio perfil a medida. Incluso podemos crear un perfil en base a uno de los existentes. Todos estos perfiles, tal como he indicado antes se ubican en /usr/lib/tuned y los perfiles definidos por el usuario en /etc/tuned

Para listar los perfiles existentes utilizamos “tuned-adm list”, con el resultado:

  1. [root@servcentos-test ~]# tuned-adm list
  2. Available profiles:
  3. - balanced                    - General non-specialized tuned profile
  4. - desktop                     - Optimize for the desktop use-case
  5. - latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
  6. - network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
  7. - network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
  8. - powersave                   - Optimize for low power consumption
  9. - throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
  10. - virtual-guest               - Optimize for running inside a virtual guest
  11. - virtual-host                - Optimize for running KVM guests
  12. Current active profile: virtual-guest

Si queremos cambiar el perfil por uno diferente, utilizamos “tune-adm profile nombre-de -perfil”, así:

  1. [root@servcentos-test]# tuned-adm profile  latency-performance
  2. [root@servcentos-test]# tuned-adm active
  3. Current active profile: latency-performance

Si queremos utilizar el perfil recomendado, escribiremos:

  1. tune-adm recommend

Crear nuestros propios perfiles para tuned

En este caso el sistema operativo que estoy utilizando es un Centos 7. Primero de todo creamos una nueva carpeta en /etc/tuned, así:

  1. mkdir /etc/tuned/nueva-performance/

Editamos el fichero con la siguiente información:

  1. [main]
  2. Include=latency-perfomance
  3. Summary=Perfil de pruebas que incluye latency-perfomance

Lo que hemos hecho es crear un nuevo perfil de pruebas, que copia el de “latency-performance”

Una vez creado ya lo podemos ver listado:

  1. [root@servcentos-list]# tuned-adm list
  2. Available profiles:
  3. - balanced                    - General non-specialized tuned profile
  4. - desktop                     - Optimize for the desktop use-case
  5. - latency-performance         - Optimize for deterministic performance at the cost of increased power consumption
  6. - network-latency             - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
  7. - network-throughput          - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
  8. - nueva-performance           - Perfil de pruebas que incluye latency-perfomance
  9. - powersave                   - Optimize for low power consumption
  10. - throughput-performance      - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
  11. - virtual-guest               - Optimize for running inside a virtual guest
  12. - virtual-host                - Optimize for running KVM guests
  13. Current active profile: latency-performance

De manera dinámica

Podemos ajustar la configuración de “tuned”, para que sea dinámica. Para ello debemos editar el fichero principal de configuración e indicar lo siguiente:

  1. root@servcentos-test]# vi /etc/tuned/tuned-main.conf
  2. #Dynamicaly tune devices, if disabled only static tuning will be used.
  3. dynamic_tuning = 1

Al realizar los cambios debemos guardar el fichero y reiniciar el demonio:

  1. systemctl restart tuned

Podemos ver los logs ubicados en /var/log/tuned/tuned.log

  1. [root@servcentos-test]# tail -f /var/log/tuned/tuned.log
  2. 2018-06-27 19:01:39,296 INFO     tuned.daemon.controller: starting controller
  3. 2018-06-27 19:01:39,298 INFO     tuned.daemon.daemon: starting tuning
  4. 2018-06-27 19:01:39,313 INFO     tuned.plugins.base: instance cpu: assigning devices cpu2, cpu3, cpu0, cpu1
  5. 2018-06-27 19:01:39,335 INFO     tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu2'
  6. 2018-06-27 19:01:39,351 INFO     tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu3'
  7. 2018-06-27 19:01:39,367 INFO     tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu0'
  8. 2018-06-27 19:01:39,382 INFO     tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu1'
  9. 2018-06-27 19:01:39,391 INFO     tuned.plugins.plugin_cpu: setting new cpu latency 1
  10. 2018-06-27 19:01:39,508 INFO     tuned.plugins.plugin_sysctl: reapplying system sysctl
  11. 2018-06-27 19:01:39,522 INFO     tuned.daemon.daemon: static tuning from profile 'latency-performance' applied

Espero que el artículo os sea de utilidad en algún momento, os dejo aquí las fuentes consultadas:

Certdepot.net – RHEL7: Apply a tunning profile to a server