Sysctl
| Fiche express | |
|---|---|
| Domaine | Configuration du noyau à chaud (interface /proc/sys/)
|
| Commande | sysctl, /etc/sysctl.conf, /etc/sysctl.d/*.conf
|
| Contexte | Linux — tout système |
| Voir aussi | Performance réseau (sysctl) (tuning réseau détaillé) |
sysctl lit et modifie les paramètres du noyau Linux exposés sous /proc/sys/ : chaque paramètre est en réalité un fichier virtuel, et la commande n'est qu'une façade pratique pour le lire ou l'écrire sans manipuler ces fichiers à la main. Elle couvre des domaines très divers — mémoire virtuelle, réseau, limites du système, sécurité — et permet d'ajuster le comportement du noyau sans recompiler ni redémarrer.
Mécanisme : /proc/sys/
Chaque paramètre correspond à un fichier sous /proc/sys/, dont le chemin donne directement le nom du paramètre en remplaçant les / par des . : /proc/sys/vm/swappiness devient vm.swappiness, /proc/sys/net/core/somaxconn devient net.core.somaxconn. Lire ou écrire ce fichier directement produit exactement le même effet qu'un appel à sysctl — la commande évite juste de retenir les chemins et gère en plus la syntaxe des fichiers de persistance.
cat /proc/sys/vm/swappiness # lecture directe du fichier virtuel
echo 10 > /proc/sys/vm/swappiness # écriture directe, équivalent à sysctl -w
sysctl vm.swappiness # même lecture, via la commande
sysctl -w vm.swappiness=10 # même écriture, via la commande
Afficher les paramètres (sysctl -a)
sysctl -a liste tous les paramètres disponibles avec leur valeur courante — pratique pour chercher un réglage par mot-clé ou vérifier l'état actuel avant de modifier quoi que ce soit.
sysctl -a # tous les paramètres et leurs valeurs actuelles
sysctl -a | grep swappiness # filtrer sur un mot-clé
sysctl vm.swappiness # lire un seul paramètre
sysctl net.ipv4.ip_forward
Modifier à chaud (sysctl -w)
sysctl -w applique un changement immédiatement, mais uniquement en mémoire : la valeur est perdue au prochain redémarrage. C'est l'outil de choix pour tester un réglage avant de le rendre permanent.
sysctl -w vm.swappiness=10 # applique à chaud, non persistant
sysctl -w net.ipv4.ip_forward=1
Persistance (/etc/sysctl.conf, /etc/sysctl.d/)
Pour qu'un réglage survive à un redémarrage, il doit être écrit dans un fichier de configuration : historiquement /etc/sysctl.conf, ou — approche plus moderne et modulaire recommandée sur les distributions actuelles — un fichier dédié dans /etc/sysctl.d/ (un fichier par thème ou par outil, plus facile à gérer que d'éditer un unique fichier partagé). Après modification d'un de ces fichiers, sysctl -p recharge la configuration sans redémarrer.
echo "vm.swappiness = 10" >> /etc/sysctl.d/99-clipsy-tuning.conf
sysctl -p /etc/sysctl.d/99-clipsy-tuning.conf # recharge un fichier précis
sysctl --system # recharge tous les fichiers sysctl.d et sysctl.conf
Exemple : vm.swappiness
vm.swappiness contrôle la propension du noyau à utiliser le swap plutôt que de libérer du cache mémoire, sur une échelle de 0 à 100. C'est un bon exemple du compromis à arbitrer avec sysctl : une valeur basse privilégie la réactivité immédiate (le noyau évite le swap et garde les données en RAM) mais peut mener à des situations d'OOM si la mémoire physique vient à manquer, tandis qu'une valeur haute laisse le noyau swapper plus volontiers pour préserver du cache disque, au prix de latences si des pages swappées doivent être rechargées.
sysctl vm.swappiness # valeur actuelle (défaut typique : 60)
sysctl -w vm.swappiness=0 # évite le swap au maximum (test, non persistant)
sysctl -w vm.swappiness=100 # swappe plus volontiers (test, non persistant)
Voir aussi
- Performance réseau (sysctl) — paramètres réseau détaillés (buffers TCP, congestion, files d'attente de connexions)