Depuis le noyau 2.6.28, Linux utilise un de Split les moins récemment utilisés (MRU) Page stratégie de remplacement. Les pages avec une source de système de fichiers, telles que le texte du programme ou les bibliothèques partagées, appartiennent au cache de fichiers. Les pages sans système de fichiers s'appellent des pages anonymes et consistent en des données d'exécution telles que l'espace de pile réservé aux applications, etc. En règle générale, les pages appartenant au cache de fichiers coûtent moins cher à expulser de la mémoire (car elles peuvent être simplement relues à partir du disque en cas de besoin). . Etant donné que les pages anonymes n’ont pas de sauvegarde de système de fichiers, elles doivent rester en mémoire aussi longtemps qu’elles sont nécessaires à un programme, sauf s’il existe un espace d’échange pour les stocker.
Il est fréquent de penser qu’une partition de swap ralentirait votre système. Ne pas avoir de partition d'échange ne signifie pas que le noyau n'expulsera pas les pages de la mémoire, cela signifie simplement que le noyau a moins de choix quant aux pages à expulser. La quantité d’échange disponible n’affectera pas son utilisation.
Linux peut faire face à l'absence d'espace d'échange car, par défaut, la politique de comptabilisation de la mémoire du noyau peut surcharger la mémoire . L'inconvénient est que lorsque la mémoire physique est épuisé, et le noyau ne peut pas échanger des pages anonymes sur le disque, le hors-mémoire-killer mécanisme (OOM-killer) va commencer tuer la mémoire monopolisant processus « voyous » pour libérer de la mémoire pour d'autres processus.
L' vm.swappiness
option est un modificateur qui modifie l'équilibre entre permutation des pages de cache de fichiers en faveur des pages anonymes. Le cache de fichier se voit attribuer une valeur de priorité arbitraire de 200 à partir de laquelle vm.swappiness
modificateur est déduit ( file_prio=200-vm.swappiness
). Les pages anonymes, par défaut, commencent par 60 ( anon_prio=vm.swappiness
). Cela signifie que, par défaut, les poids de priorité sont modérément favorables aux pages anonymes ( anon_prio=60
, file_prio=200-60=140
). Le comportement est défini mm/vmscan.c
dans l'arborescence des sources du noyau.
A partir vm.swappiness
de 100
, les priorités seraient égales ( file_prio=200-100=100
, anon_prio=100
). Cela serait logique pour un système lourd en E / S s'il n'est pas voulu que les pages du cache de fichiers soient expulsées au profit de pages anonymes.
Inversement, définir le vm.swappiness
sur 0
empêchera le noyau d'expulser des pages anonymes au profit de pages du cache de fichiers. Cela peut être utile si la plupart des programmes se cachent eux-mêmes, ce qui peut être le cas avec certaines bases de données. Dans les systèmes de bureau, cela pourrait améliorer l'interactivité, mais l'inconvénient est que les performances d'E / S vont probablement en souffrir.
La valeur par défaut a très probablement été choisie comme milieu intermédiaire approximatif entre ces deux extrêmes. Comme pour tout paramètre de performance, les ajustements vm.swappiness
doivent être basés sur des données de référence comparables aux charges de travail réelles, et non pas seulement à un instinct.