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:
yum install tuned
Para añadirlo al inicio, en estas versiones, debemos realizar los siguientes pasos:
chkconfig –add tuned
chkconfig tuned on
service tuned start
Aunque ya viene preinstalado en las versiones 7, debemos activar el servicio:
systemctl enable tuned
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:
[root@servcentos-test]# tuned-adm active
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:
[root@servcentos-test ~]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest
Si queremos cambiar el perfil por uno diferente, utilizamos “tune-adm profile nombre-de -perfil”, así:
[root@servcentos-test]# tuned-adm profile latency-performance
[root@servcentos-test]# tuned-adm active
Current active profile: latency-performance
Si queremos utilizar el perfil recomendado, escribiremos:
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í:
mkdir /etc/tuned/nueva-performance/
Editamos el fichero con la siguiente información:
[main]
Include=latency-perfomance
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:
[root@servcentos-list]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- nueva-performance - Perfil de pruebas que incluye latency-perfomance
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
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:
root@servcentos-test]# vi /etc/tuned/tuned-main.conf
#Dynamicaly tune devices, if disabled only static tuning will be used.
dynamic_tuning = 1
Al realizar los cambios debemos guardar el fichero y reiniciar el demonio:
systemctl restart tuned
Podemos ver los logs ubicados en /var/log/tuned/tuned.log
[root@servcentos-test]# tail -f /var/log/tuned/tuned.log
2018-06-27 19:01:39,296 INFO tuned.daemon.controller: starting controller
2018-06-27 19:01:39,298 INFO tuned.daemon.daemon: starting tuning
2018-06-27 19:01:39,313 INFO tuned.plugins.base: instance cpu: assigning devices cpu2, cpu3, cpu0, cpu1
2018-06-27 19:01:39,335 INFO tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu2'
2018-06-27 19:01:39,351 INFO tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu3'
2018-06-27 19:01:39,367 INFO tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu0'
2018-06-27 19:01:39,382 INFO tuned.plugins.plugin_cpu: setting energy_perf_bias 'performance' on cpu 'cpu1'
2018-06-27 19:01:39,391 INFO tuned.plugins.plugin_cpu: setting new cpu latency 1
2018-06-27 19:01:39,508 INFO tuned.plugins.plugin_sysctl: reapplying system sysctl
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: