2.5. Tuned et Ktune

Tuned est un démon qui surveille l'utilisation des composants système et ajuste dynamiquement les paramètres de système en se basant sur les informations de ce suivi. Le paramétrage dynamique permet aux divers composants du système d'être utilisés différemment pendant la durée d'activité de n'importe quel système. Par exemple, le disque dur est beaucoup utilisé lors du démarrage et de la connexion, mais très peu lorsque l'utilisateur travaille avec des applications telles que OpenOffice ou avec de clients email. De la même manière, le CPU et les périphériques réseau sont utilisés de différentes manières à différents moments. Tuned surveille l'activitéde ces composants et réagit à leurs changements d'utilisation.
Exemple pratique : considérez une station de travail de bureau typique. La plupart du temps, l'interface réseau Ethernet sera inactive. Seuls quelques emails entreront ou sortiront de temps en temps, et/ou quelques pages web seront chargées. Pour ce type de charges, l'interface réseau n'a pas besoin de s'exécuter à sa vitesse normale tout le temps (ce qui est le cas par défaut). Tuned possède un plugin de suivi et paramétrage pour les périphériques réseau, celui-ci peut détecter une activité faible, et automatiquement rabaisser la vitesse de cette interface, résultant ainsi en une plus basse vitesse. Si l'activité de l'interface augmente de manière drastique sur une longue période, par exemple lorsqu'une image DVD est en cours de téléchargement ou lorsqu'un email avec un gros attachement est ouvert, Tuned s'en rendra compte et ajustera la vitesse de l'interface au maximum de manière à fournir la meilleure performance possible lorsque l'activité est tant importante. Ce principe est aussi utilisé pour d'autres plugins pour CPU et disques durs.
Les périphériques réseau ne sont pas configurés pour se comporter de cette manière par défaut car les changements de vitesse peuvent mettre quelques secondes à prendre effet, ceux-ci peuvent ainsi avoir un impact direct et visible sur l'expérience utilisateur. Des considérations similaires s'appliquent aux plugins de paramétrage du CPU et du disque dur. Lorsqu'un disque dur est arrêté, celui-ci peut prendre quelques secondes pour se remettre en marche, ce qui résulte en un manque de réactivité du système pendant cette période. L'effet secondaire sur la latence est plus léger pour le plugin du CPU, et même s'il est mesurable, il n'est quasiment pas remarquable par l'utilisateur.
Aux côtés de tuned, nous vous offrons aussi ktune. Ktune fut présenté dans Red Hat Enterprise Linux 5.3 en tant que framework et service pour optimiser la performance d'une machine dans des cas d'utilisation spécifiques. Depuis, ktune a été amélioré à un tel point que nous l'utilisons maintenant comme la partie statique de notre framework de paramétrage général. ktune est principalement utilisé dans les différents profils prédéfinis dans la Section 2.5.2, « Tuned-adm ».
Installez le paquetage tuned et ses scripts systemtap associés avec la commande :
yum install tuned
L'installation du paquetage tuned installe aussi un exemple de fichier de configuration sur /etc/tuned.conf et active le profil par défaut.
Démarrez tuned en exécutant :
service tuned start
Pour lancer tuned à chaque fois que la machine démarre, exécutez :
chkconfig tuned on
Tuned possède des options supplémentaires que vous pouvez utiliser lorsque vous l'exécutez manuellement. Les options disponibles sont :
-d, --daemon
démarre Tuned comme un démon plutôt que sur l'avant-plan.
-c, --conffile
utilise un fichier de configuration avec le nom et chemin spécifié, par exemple, --conffile=/etc/tuned2.conf. Le défaut est /etc/tuned.conf.
-D, --debug
utilise le plus haut niveau de journalisation.

2.5.1. Le fichier tuned.conf

Le fichier tuned.conf contient des paramètres de configuration pour tuned. Par défaut, il se trouve sur /etc/tuned.conf, mais vous pouvez spécifier un nom et un emplacement différent en démarrant tuned avec l'option --conffile.
Le fichier de configuration doit toujours contenir une section [main] qui définit les paramètres généraux pour tuned. Le fichier contient ensuite une section pour chaque plugin.
La section [main] contient les options suivantes :
interval
l'intervalle, en secondes, auquel tuned devrait suivre et paramétrer le système. La valeur par défaut est 10.
verbose
spécifie si la sortie doit être verbeuse ou non. La valeur par défaut est False.
logging
spécifie la priorité minimum des messages à journaliser. Dans un ordre descendant, les valeurs acceptables sont : critical, error, warning, info, et debug. La valeur par défaut est info.
logging_disable
spécifie la priorité maximum des messages à journaliser, tout message avec cette priorité ou avec une priorité plus basse ne sera pas journalisé. Dans un ordre descendant, les valeurs acceptables sont : critical, error, warning, info, et debug. La valeur notset désactive cette option.
Chaque plugin possède sa propre section, spécifiée avec le nom du plugin dans des crochets. Par exemple : [CPUTuning]. Chaque plugin peut posséder ses propres options, mais les options suivantes s'appliquent à tous les plugins :
enabled
spécifie si le plugin est activé ou non. La valeur par défaut est True.
verbose
spécifie si la sortie doit être verbeuse ou non. Si ce n'est pas défini pour ce plugin, la valeur est héritée de [main].
logging
spécifie la priorité minimum des messages à journaliser. Si ce n'est pas défini pour ce plugin, la valeur est héritée de [main].
Exemple de fichier de configuration :
[main]
interval=10
pidfile=/var/run/tuned.pid
logging=info
logging_disable=notset

# Disk monitoring section

[DiskMonitor]
enabled=True
logging=debug

# Disk tuning section

[DiskTuning]
enabled=True
hdparm=False
alpm=False
logging=debug

# Net monitoring section

[NetMonitor]
enabled=True
logging=debug

# Net tuning section

[NetTuning]
enabled=True
logging=debug

# CPU monitoring section

[CPUMonitor]
# Enabled or disable the plugin. Default is True. Any other value
# disables it.
enabled=True

# CPU tuning section

[CPUTuning]
# Enabled or disable the plugin. Default is True. Any other value
# disables it.
enabled=True