38.3. Paramètres de la mémoire virtuelle
Les paramètres de la mémoire virtuelle sont répertoriés dans le répertoire /proc/sys/vm
.
Les paramètres de mémoire virtuelle disponibles sont les suivants :
vm.dirty_ratio
-
Est une valeur en pourcentage. Lorsque ce pourcentage de la mémoire totale du système est modifié, le système commence à écrire les modifications sur le disque avec l'opération
pdflush
. La valeur par défaut est20
pour cent. vm.dirty_background_ratio
-
Une valeur en pourcentage. Lorsque ce pourcentage de la mémoire totale du système est modifié, le système commence à écrire les modifications sur le disque en arrière-plan. La valeur par défaut est
10
. vm.overcommit_memory
Définit les conditions qui déterminent si une demande de mémoire importante est acceptée ou refusée. La valeur par défaut est
0
.Par défaut, le noyau vérifie si une demande d'allocation de mémoire virtuelle est compatible avec la quantité de mémoire disponible (swap total) et ne rejette que les demandes importantes. Dans le cas contraire, les allocations de mémoire virtuelle sont accordées, ce qui signifie qu'elles autorisent le surengagement de la mémoire.
Réglage de la valeur du paramètre
overcommit_memory
:-
Lorsque ce paramètre est fixé à
1
, le noyau n'effectue aucune gestion de surcharge de la mémoire. Cela augmente le risque de surcharge de la mémoire, mais améliore les performances pour les tâches nécessitant beaucoup de mémoire. -
Lorsque ce paramètre est défini sur
2
, le noyau refuse les demandes de mémoire égales ou supérieures à la somme de l'espace d'échange total disponible et du pourcentage de RAM physique spécifié dansovercommit_ratio
. Cela réduit le risque de surutilisation de la mémoire, mais n'est recommandé que pour les systèmes dont l'espace d'échange est plus grand que la mémoire physique.
-
Lorsque ce paramètre est fixé à
vm.overcommit_ratio
-
Spécifie le pourcentage de RAM physique pris en compte lorsque
overcommit_memory
est défini sur2
. La valeur par défaut est50
. vm.max_map_count
-
Définit le nombre maximal de zones de la carte mémoire qu'un processus peut utiliser. La valeur par défaut est
65530
. Augmentez cette valeur si votre application a besoin de plus de zones de carte mémoire. vm.min_free_kbytes
Définit la taille du pool de pages libres réservées. Il est également responsable de la définition des seuils
min_page
,low_page
, ethigh_page
qui régissent le comportement des algorithmes de récupération de pages du noyau Linux. Il spécifie également le nombre minimum de kilo-octets à garder libres dans le système. Il calcule une valeur spécifique pour chaque zone de mémoire basse, qui se voit attribuer un nombre de pages libres réservées proportionnel à sa taille.Réglage de la valeur du paramètre
vm.min_free_kbytes
:- L'augmentation de la valeur du paramètre réduit effectivement la mémoire utilisable de l'ensemble de travail de l'application. Par conséquent, vous ne devriez l'utiliser que pour les charges de travail pilotées par le noyau, où les tampons des pilotes doivent être alloués dans des contextes atomiques.
La diminution de la valeur du paramètre peut rendre le noyau incapable de répondre aux demandes du système, si la mémoire devient très sollicitée dans le système.
AvertissementLes valeurs extrêmes peuvent nuire aux performances du système. En fixant la valeur de
vm.min_free_kbytes
à un niveau extrêmement bas, on empêche le système de récupérer la mémoire de manière efficace, ce qui peut entraîner des pannes du système et l'impossibilité de gérer les interruptions ou d'autres services du noyau. Cependant, une valeur trop élevée devm.min_free_kbytes
augmente considérablement l'activité de récupération du système, entraînant une latence d'allocation due à un faux état de récupération directe. Cela peut entraîner l'entrée immédiate du système dans un état de mémoire insuffisante.Le paramètre
vm.min_free_kbytes
définit également un filigrane de récupération de page, appelémin_pages
. Ce filigrane est utilisé comme facteur pour déterminer les deux autres filigranes de mémoire,low_pages
ethigh_pages
, qui régissent les algorithmes de récupération des pages.
/proc/PID/oom_adj
Si un système manque de mémoire et que le paramètre
panic_on_oom
est fixé à0
, la fonctionoom_killer
tue les processus, en commençant par le processus qui a la valeuroom_score
la plus élevée, jusqu'à ce que le système se rétablisse.Le paramètre
oom_adj
détermine leoom_score
d'un processus. Ce paramètre est défini pour chaque identifiant de processus. Une valeur de-17
désactiveoom_killer
pour ce processus. Les autres valeurs valables sont comprises entre-16
et15
.
Les processus créés par un processus ajusté héritent de l'adresse oom_score
de ce processus.
vm.swappiness
La valeur de permutation, comprise entre
0
et200
, détermine dans quelle mesure le système favorise la récupération de la mémoire dans le pool de mémoire anonyme ou dans le pool de mémoire du cache de pages.Réglage de la valeur du paramètre
swappiness
:- Des valeurs plus élevées favorisent les charges de travail basées sur les fichiers tout en éliminant la mémoire anonyme de la RAM des processus les moins activement accédés. Ceci est utile pour les serveurs de fichiers ou les applications de streaming qui dépendent des données, des fichiers dans le stockage, pour résider dans la mémoire afin de réduire la latence d'E/S pour les demandes de service.
Des valeurs faibles favorisent les charges de travail basées sur le mappage anonyme tout en récupérant le cache de page (mémoire mappée sur fichier). Ce paramètre est utile pour les applications qui ne dépendent pas fortement des informations du système de fichiers et qui utilisent fortement la mémoire privée et allouée dynamiquement, telles que les applications mathématiques et de calcul, et quelques superviseurs de virtualisation matérielle comme QEMU.
La valeur par défaut du paramètre
vm.swappiness
est60
.AvertissementEn définissant
vm.swappiness
sur0
, on évite agressivement d'échanger la mémoire anonyme sur un disque, ce qui augmente le risque que les processus soient tués par la fonctionoom_killer
en cas de charge de travail intensive en termes de mémoire ou d'entrées/sorties.
Ressources supplémentaires
-
sysctl(8)
page de manuel - Réglage des paramètres du noyau liés à la mémoire