Sous Linux, le swap est un espace sur le disque utilisé comme extension de la mémoire RAM lorsque celle-ci est saturée. Par défaut, le noyau Linux commence à swapper dès que l’utilisation de la RAM atteint environ 60 %, ce qui peut entraîner des ralentissements sur les disques durs (HDD) en raison des lectures/écritures fréquentes, et accélérer l’usure des SSD à cause des cycles d’écriture. Ce tutoriel explique pourquoi ce comportement par défaut peut poser problème, comment augmenter le seuil de swappiness (pour retarder l’utilisation du swap), et comment réduire l’usage du swap pour optimiser les performances et prolonger la durée de vie de vos disques. Suivez ce guide pas à pas pour configurer votre système Linux de manière efficace !
⚠️ Avertissement : Les modifications des paramètres système peuvent affecter la stabilité. Sauvegardez vos données et testez les changements dans un environnement non critique.
Comprendre le Swap et le Paramètre Swappiness
Le swap permet à Linux de déplacer des pages mémoire rarement utilisées de la RAM vers le disque, libérant ainsi de la mémoire pour les processus actifs. Le paramètre swappiness, qui varie de 0 à 100 (ou 200 dans les noyaux récents), contrôle l’équilibre entre l’utilisation de la RAM et du swap :
- vm.swappiness = 60 (par défaut) : Le système commence à swapper dès que la RAM est utilisée à 60 %, même si de la mémoire est encore disponible.
- vm.swappiness = 10 : Le swap est utilisé seulement quand la RAM est presque saturée, réduisant les accès disque.
- vm.swappiness = 0 : Le swap est presque désactivé, sauf en cas de nécessité absolue (peut causer des erreurs OOM sur les systèmes à faible RAM).
Problèmes du swappiness par défaut :
- Ralentissements sur HDD : Les lectures/écritures fréquentes sur un disque dur mécanique sont lentes, entraînant des latences perceptibles.
- Usure des SSD : Les écritures répétées réduisent la durée de vie des SSD en consommant leurs cycles d’écriture limités.
- Performance : Le swap est moins efficace que la RAM, ce qui peut dégrader les performances sur les systèmes avec beaucoup de RAM.
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un système Linux (par exemple, Ubuntu 22.04, Debian 12, ou Fedora).
- Un accès administrateur (sudo) pour modifier les paramètres système.
- Un terminal pour exécuter les commandes.
- Une sauvegarde des fichiers système critiques (par exemple,
/etc/sysctl.conf
). - De la RAM suffisante (au moins 8 Go recommandé) pour réduire la dépendance au swap.
Astuce : Vérifiez votre configuration actuelle du swap :
cat /proc/sys/vm/swappiness
Une sortie de 60
indique la valeur par défaut.
Étape 1 : Vérifier l’Utilisation Actuelle du Swap
Avant de modifier les paramètres, évaluez l’utilisation du swap sur votre système.
1.1 Afficher l’utilisation de la mémoire et du swap
Exécutez la commande suivante pour voir la mémoire et le swap utilisés :
free -h
Exemple de sortie :
total used free shared buff/cache available
Mem: 15Gi 7.2Gi 5.0Gi 1.2Gi 3.5Gi 7.8Gi
Swap: 2.0Gi 0.5Gi 1.5Gi
Si le swap est utilisé (0.5Gi
dans cet exemple) alors que la RAM a encore de l’espace libre (5.0Gi
), cela indique un swappiness trop agressif.
1.2 Identifier les processus utilisant le swap
Utilisez la commande top
ou htop
pour voir les processus consommant du swap :
htop
Dans htop
, appuyez sur F2
, ajoutez la colonne SWAP
, et triez pour identifier les processus gourmands. Cela peut vous aider à optimiser les applications avant de modifier le swap.
Étape 2 : Modifier le Paramètre Swappiness
Pour retarder l’utilisation du swap et augmenter le seuil d’utilisation de la RAM, réduisez la valeur de vm.swappiness
.
2.1 Tester une nouvelle valeur temporairement
Modifiez swappiness
temporairement pour tester l’impact :
sudo sysctl vm.swappiness=10
Vérifiez la nouvelle valeur :
cat /proc/sys/vm/swappiness
Une sortie de 10
confirme le changement. Cette modification est temporaire et sera réinitialisée au redémarrage.
2.2 Rendre la modification permanente
Pour appliquer la valeur de manière permanente :
- Éditez le fichier de configuration
/etc/sysctl.conf
:
sudo nano /etc/sysctl.conf
- Ajoutez ou modifiez la ligne suivante à la fin du fichier :
vm.swappiness=10
- Enregistrez (
Ctrl+O
,Enter
,Ctrl+X
) et appliquez les changements :
sudo sysctl -p
Recommandation : Une valeur de 10
est un bon compromis pour les systèmes avec 8 Go de RAM ou plus. Pour les systèmes avec moins de 4 Go, essayez 20
pour éviter les erreurs OOM (Out of Memory). Testez différentes valeurs pour trouver le meilleur équilibre.
Étape 3 : Ajuster la Pression du Cache (Facultatif)
Le paramètre vm.vfs_cache_pressure
contrôle la priorité donnée à la mise en cache des fichiers par rapport à la mémoire des processus. Une valeur élevée peut pousser le système à swapper plus tôt. Par défaut, il est à 100
.
3.1 Modifier vfs_cache_pressure
Pour réduire la pression sur le cache :
- Testez temporairement :
sudo sysctl vm.vfs_cache_pressure=50
- Vérifiez :
cat /proc/sys/vm/vfs_cache_pressure
- Rendez permanent en ajoutant dans
/etc/sysctl.conf
:
vm.vfs_cache_pressure=50
- Appliquez :
sudo sysctl -p
Note : Une valeur de 50
réduit la priorité du cache, favorisant la mémoire des processus. Soyez prudent, car une valeur trop basse peut affecter les performances des systèmes de fichiers.
Étape 4 : Réduire l’Usage du Swap sur SSD
Pour minimiser l’usure des SSD, configurez le swap sur un disque HDD si possible ou optimisez son utilisation.
4.1 Déplacer le Swap vers un HDD (Si Applicable)
Si vous avez un HDD et un SSD, déplacez le swap sur le HDD :
- Désactivez le swap actuel :
sudo swapoff -a
- Créez un fichier swap sur le HDD (par exemple,
/mnt/hdd/swapfile
) :
sudo fallocate -l 2G /mnt/hdd/swapfile
sudo chmod 600 /mnt/hdd/swapfile
sudo mkswap /mnt/hdd/swapfile
- Activez le nouveau swap :
sudo swapon /mnt/hdd/swapfile
- Mettez à jour
/etc/fstab
pour rendre permanent :
sudo nano /etc/fstab
Ajoutez :
/mnt/hdd/swapfile none swap sw 0 0
- Vérifiez :
swapon --show
4.2 Optimiser pour SSD
Si le swap reste sur un SSD :
- Réduisez la taille du swap (par exemple, 1-2 Go pour 16 Go de RAM) pour limiter les écritures.
- Activez TRIM pour optimiser les performances SSD :
sudo systemctl enable fstrim.timer
Étape 5 : Surveiller et Tester les Performances
Après avoir modifié les paramètres, surveillez l’impact sur les performances.
5.1 Surveiller l’utilisation du swap
Vérifiez régulièrement l’utilisation :
watch -n 5 free -h
Cette commande actualise l’utilisation toutes les 5 secondes. Si le swap reste peu utilisé, vos modifications sont efficaces.
5.2 Tester les performances
Simulez une charge mémoire pour tester le comportement :
stress-ng --vm 4 --vm-bytes 80% --timeout 60s
Installez stress-ng
si nécessaire (sudo apt install stress-ng
). Surveillez avec htop
pour voir si le swap est utilisé prématurément.
Étape 6 : Dépannage et Bonnes Pratiques
Pour éviter les problèmes :
- Erreurs OOM : Si le système plante avec un swappiness trop bas, augmentez légèrement la valeur (par exemple,
20
) ou ajoutez de la RAM. - Performances dégradées : Si les applications sont lentes, vérifiez si le cache est trop réduit (
vm.vfs_cache_pressure
) et ajustez. - Swap non détecté : Assurez-vous que le fichier swap est activé :
swapon --show
- SSD : Surveillez l’usure du SSD avec
smartctl
:
sudo apt install smartmontools
sudo smartctl -a /dev/nvme0
- Support : Consultez Ask Ubuntu ou Reddit r/linuxadmin pour des conseils communautaires.
Conclusion
Le swap sous Linux est une fonctionnalité essentielle, mais son comportement par défaut (swappiness à 60 %) peut entraîner des ralentissements sur HDD et une usure prématurée des SSD. En réduisant vm.swappiness
à 10, en ajustant vm.vfs_cache_pressure
, et en optimisant la configuration pour SSD ou HDD, vous pouvez minimiser l’usage du swap, améliorer les performances, et prolonger la durée de vie de vos disques. Ce tutoriel vous a guidé à travers la vérification de l’utilisation, la modification des paramètres, et la surveillance des résultats. Testez vos réglages et ajustez-les selon vos besoins pour un système Linux optimal.
Des questions ou des problèmes ? Partagez-les dans les commentaires ou rejoignez la communauté sur Reddit r/linux ou Ask Ubuntu. Bonne optimisation !
Ajouter un commentaire