2008 / 01 / 24
Swappiness
Avec l'introduction de la version 2.6, la nouvelle variable "swappiness" a été ajoutée dans le sous-système de management de mémoire du noyau Linux et un réglage a été créé. Six mois plus tard, un débat entre les développeurs du noyau a été signalé dans KernelTrap, suivi d'une longue discussion sur Slashdot.
Des valeurs élevées de swappiness vont amener le noyau à remplacer le code d'une application en faveur d'une autre application ou même du cache du système de fichiers. La valeur par défaut est 60 (voir mm/vmscan.c):
1 /* 2 * linux/mm/vmscan.c 3 * 4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 5 * .../... 102 103 /* 104 * From 0 .. 100. Higher means more swappy. 105 */ 106 int vm_swappiness = 60; 107 long vm_total_pages; /* The total number of pages which the VM controls */ 108Même à l'heure actuelle, en janvier 2008, la plupart des distributions Linux ne changent pas cette valeur.
Mauvaises performances Linux
J'ai observé qu'avec la valeur de swappiness par défaut, Linux devient paresseux ; une station de travail se bloque momentanément quand on passe d'une application à une autre bien qu'il y ait plus de mémoire qu'il n'en faut pour les deux, ou un serveur Web a besoin de temps pour se réveiller avant de pouvoir servir une page, sont des exemples typiques. Un autre symptôme d'une valeur élevée de swappiness est le disque qui est constamment actif quelque soit la charge sur la machine, tak, tak, tak...J'ai utilisé des serveurs et des stations de travail sans aucun problème, et en fait avec de meilleures performances avec "swappiness = 0". Vous devriez bien sûr lire plus sur le sujet surtout le commentaire au début de ce correctif .
Comment changer la valeur de swappiness
Pour changer sa valeur après un redémarrage, ajouter la ligne suivante:
vm.swappiness = 0dans le fichier /etc/sysctl.conf. Vous pouvez alors mettre à jour le système avec la commande:
sysctl -w vm.swappiness=0ou
echo 0 >/proc/sys/vm/swappiness
Pour vérifier la valeur actuelle sur un système en marche:
sysctl vm.swappinessou
cat /proc/sys/vm/swappiness