Man page - proc_sys_vm(5)

Packages contains this manual

Available languages:

en fr pl ru ro de

Manual

proc_sys_vm

NOM
DESCRIPTION
VOIR AUSSI
TRADUCTION

NOM

/proc/sys/vm/ - Sous-sytÚme de mémoire virtuelle

DESCRIPTION

/proc/sys/vm/

Ce répertoire contient des fichiers de paramétrage de la gestion de mémoire, des tampons et du cache.

/proc/sys/vm/admin_reserve_kbytes (depuis Linux 3.10)

Ce fichier dĂ©finit le montant de mĂ©moire libre (en Kio) qui doit ĂȘtre rĂ©servĂ©e sur le systĂšme pour les utilisateurs ayant la capacitĂ© CAP_SYS_ADMIN .

La valeur par dĂ©faut dans ce fichier est le minimum de [3 % de pages libres, 8 Mio] exprimĂ© en Kio. La valeur par dĂ©faut est destinĂ©e Ă  en fournir assez pour que le superutilisateur puisse se connecter et tuer un processus si nĂ©cessaire, en utilisant le mode « guess » d’allocation excessive de mĂ©moire (overcommit – c’est-Ă -dire 0 dans /proc/sys/vm/overcommit_memory ).

Les systĂšmes qui s’exĂ©cutent dans le mode « overcommit never » (c’est-Ă -dire 2 dans /proc/sys/vm/overcommit_memory ) doivent augmenter la valeur dans ce fichier pour prendre en compte la taille totale de mĂ©moire virtuelle pour les programmes utilisĂ©s pour rĂ©cupĂ©rer (par exemple, login (1), ssh (1) et top (1)). Sinon le superutilisateur pourrait ne pas ĂȘtre capable de se connecter pour rĂ©cupĂ©rer le systĂšme. Par exemple, pour x86-64 une valeur acceptable est 131072 (128 Mio rĂ©servĂ©s).

Le changement de la valeur dans ce fichier prend effet dĂšs qu’une application requiert de la mĂ©moire.

/proc/sys/vm/compact_memory (depuis Linux 2.6.35)

Lorsque 1 est inscrit dans ce fichier, toutes les zones sont compactĂ©es de façon Ă  ce que toute la mĂ©moire libre soit constituĂ©e de blocs contigus si possible. L’effet de cette action est visible en examinant /proc/buddyinfo .

Ce fichier n’est prĂ©sent que si le noyau est configurĂ© avec l’option CONFIG_COMPACTION .

/proc/sys/vm/drop_caches (depuis Linux 2.6.16)

Écrire dans ce fichier force le noyau Ă  libĂ©rer les caches, entrĂ©es de rĂ©pertoire et inƓuds propres de la mĂ©moire, en libĂ©rant ainsi cette mĂ©moire. Ce peut ĂȘtre utile pour les tests de gestion de mĂ©moire et la rĂ©alisation de tests reproductibles de performance de systĂšmes de fichiers. Puisqu’une Ă©criture dans ce fichier fait perdre tous les avantages du cache, cela peut dĂ©grader l’intĂ©gralitĂ© des performances du systĂšme.

Pour libérer les pages de cache, utilisez :

echo 1 > /proc/sys/vm/drop_caches

Pour libĂ©rer les entrĂ©es de rĂ©pertoire et les inƓuds, utilisez :

echo 2 > /proc/sys/vm/drop_caches

Pour libĂ©rer les pages de cache, entrĂ©es de rĂ©pertoire et inƓuds, utilisez :

echo 3 > /proc/sys/vm/drop_caches

Parce que l’écriture dans ce fichier est non destructive, et que les objets sales ne sont pas libĂ©rables, l’utilisateur devrait utiliser la commande sync (8) au prĂ©alable.

/proc/sys/vm/sysctl_hugetlb_shm_group (depuis Linux 2.6.7)

Ce fichier éditable contient un ID de groupe autorisé à allouer de la mémoire en utilisant des pages volumineuses. Si un processus à un ID de groupe de systÚme de fichiers ou tout autre ID de groupe supplémentaire qui correspond à cet ID de groupe, il peut réaliser des allocations de pages volumineuses sans détenir la capacité CAP_IPC_LOCK . Consulter memfd_create (2), mmap (2) et shmget (2).

/proc/sys/vm/legacy_va_layout (depuis Linux 2.6.9)

S’il est diffĂ©rent de zĂ©ro, cela dĂ©sactive la nouvelle disposition de carte mĂ©moire 32 bits. Le noyau utilisera alors la disposition patrimoniale (2.4) pour tous les processus.

/proc/sys/vm/memory_failure_early_kill (depuis Linux 2.6.32)

ContrĂŽler comment tuer les processus lorsqu’une erreur mĂ©moire non corrigĂ©e (typiquement une erreur sur 2 bits dans un module de mĂ©moire), qui ne peut pas ĂȘtre gĂ©rĂ©e par le noyau, est dĂ©tectĂ©e en tĂąche de fond par le matĂ©riel. Dans certains cas (par exemple s’il existe une copie valable de la page sur disque), le noyau est capable de gĂ©rer cette erreur de maniĂšre transparente sans qu’aucune application ne soit touchĂ©e. Mais si le noyau n’a pas de copie Ă  jour des donnĂ©es, il va tuer des processus afin d’empĂȘcher la propagation de la corruption des donnĂ©es.

Ce fichier peut contenir l’une des valeurs suivantes :

1

Tuer dĂšs que la corruption est dĂ©tectĂ©e tous les processus qui ont une projection de la page corrompue et non rechargeable. Notez que cela n’est pas possible avec quelques types de pages, comme les donnĂ©es allouĂ©es en interne par le noyau ou le cache d’échange (swap), mais cela fonctionne avec la majoritĂ© des pages utilisateur.

0

Supprimer la projection de la page corrompue dans tous les processus, et ne tuer les processus que s’ils essaient d’y accĂ©der.

L’action de tuer le processus est effectuĂ©e en envoyant un signal SIGBUS avec si_code mis Ă  BUS_MCEERR_AO . Les processus peuvent gĂ©rer cette situation s’ils le souhaitent ; consulter sigaction (2) pour plus de prĂ©cisions.

Cette fonctionnalitĂ© n’est disponible que sur les architectures/plateformes avec une gestion avancĂ©e de vĂ©rification de la machine et dĂ©pend des possibilitĂ©s du matĂ©riel.

Les applications peuvent modifier individuellement le paramĂštre memory_failure_early_kill avec l’opĂ©ration PR_MCE_KILL de prctl (2).

Ce fichier n’est disponible que si le noyau est configurĂ© avec l’option CONFIG_MEMORY_FAILURE .

/proc/sys/vm/memory_failure_recovery (depuis Linux 2.6.32)

Activer la rĂ©cupĂ©ration d’une erreur mĂ©moire (si la plateforme le permet).

1

Tenter une récupération.

0

Toujours sortir en mode panique sur une erreur mémoire.

Ce fichier n’est disponible que si le noyau est configurĂ© avec l’option CONFIG_MEMORY_FAILURE .

/proc/sys/vm/oom_dump_tasks (depuis Linux 2.6.25)

Activer la production d’une image des tĂąches du systĂšme (Ă  l’exception des threads du noyau) lors des mises Ă  mort sur mĂ©moire saturĂ©e (OOM-killing). L’image contient les informations suivantes pour chaque tĂąche (thread ou processus) : ID de thread, ID utilisateur rĂ©el, ID groupe de threads (ID du processus), taille de la mĂ©moire virtuelle, taille de la mĂ©moire rĂ©sidente, CPU sur lequel la tĂąche Ă©tait ordonnancĂ©e, valeur de oom_adj (voir la description de /proc/ pid /oom_adj ) et le nom de la commande. La production de cette image est utile pour trouver la raison de la mise Ă  mort sur mĂ©moire saturĂ©e et pour identifier la tĂąche dĂ©fectueuse qui en est la cause.

Avec la valeur zĂ©ro, l’information est supprimĂ©e. Sur les trĂšs gros systĂšmes avec des milliers de tĂąches, il peut ĂȘtre impossible de crĂ©er l’image avec les informations d’état de la mĂ©moire pour chacune d’entre elles. Ces systĂšmes ne doivent pas ĂȘtre obligĂ©s de pĂ©naliser leurs performances dans ces cas de pĂ©nurie de mĂ©moire si ces informations ne sont pas souhaitĂ©es.

Pour toute valeur différente de zéro, ces informations sont présentées à chaque fois que le systÚme (OOM-killer) de mise à mort sur mémoire saturée tue réellement une tùche monopolisation la mémoire (memory-hogging).

La valeur par défaut est 0.

/proc/sys/vm/oom_kill_allocating_task (depuis Linux 2.6.24)

Ce fichier active ou désactive la mise à mort de la tùche qui a créé le dépassement de mémoire dans les situations de mémoire saturée.

Avec une valeur de zĂ©ro, l’OOM-killer parcourra la liste entiĂšre des tĂąches et celle Ă  tuer sera sĂ©lectionnĂ©e en fonction d’heuristiques. Cette valeur sĂ©lectionne normalement une tĂąche monopolisant une grosse quantitĂ© de mĂ©moire et qui libĂ©rera beaucoup de mĂ©moire lorsqu’elle sera tuĂ©e.

Avec une valeur diffĂ©rente de zĂ©ro, l’OOM-killer tuera simplement la tĂąche provoquant le dĂ©passement de mĂ©moire. Cela Ă©vite un parcours potentiellement coĂ»teux de la liste des tĂąches.

Si /proc/sys/vm/panic_on_oom est différent de zéro, il est prioritaire sur toute valeur utilisée dans /proc/sys/vm/oom_kill_allocating_task .

La valeur par défaut est 0.

/proc/sys/vm/overcommit_kbytes (depuis Linux 3.14)

Ce fichier Ă©ditable fournit une alternative Ă  /proc/sys/vm/overcommit_ratio pour contrĂŽler CommitLimit quand /proc/sys/vm/overcommit_memory a pour valeur 2. Il permet de spĂ©cifier la quantitĂ© de mĂ©moire rĂ©servĂ©e en plus sous forme de valeur absolue (en ko), plutĂŽt qu’en pourcentage comme ce qui est fait pour overcommit_ratio . Cela permet un contrĂŽle plus fin de CommitLimit sur les systĂšmes ayant des tailles de mĂ©moire extrĂȘmement importantes.

Seul un des deux fichiers overcommit_kbytes ou overcommit_ratio peut avoir un effet. Si overcommit_kbytes a une valeur diffĂ©rente de zĂ©ro, il est utilisĂ© pour calculer CommitLimit , sinon c’est overcommit_ratio qui est utilisĂ©. Écrire une valeur dans un de ces fichiers fera que la valeur dans l’autre fichier sera dĂ©finie Ă  zĂ©ro.

/proc/sys/vm/overcommit_memory

Ce fichier contient le mode pour le comptage de la mémoire virtuelle du noyau. Les valeurs sont :

0 : gestion heuristique du dĂ©passement d’allocation mĂ©moire (c’est la valeur par dĂ©faut)
1 : pas de gestion du dépassement, ne jamais vérifier
2 : toujours vérifier, gestion stricte du dépassement

Dans le mode 0, les appels Ă  mmap (2) utilisant MAP_NORESERVE ne sont pas vĂ©rifiĂ©s et le niveau de vĂ©rification par dĂ©faut est trĂšs faible, avec le risque d’avoir un processus tuĂ© Ă  cause du manque de mĂ©moire (« OOM-killed »).

Dans le mode 1, le noyau prĂ©tend qu’il y a toujours assez de mĂ©moire, jusqu’à ce que la mĂ©moire soit rĂ©ellement Ă©puisĂ©e. Un cas d’utilisation de ce mode est celui des applications de calcul scientifique utilisant de grands tableaux creux. Avant Linux 2.6.0, toute valeur diffĂ©rente de zĂ©ro impliquait le mode 1.

Dans le mode 2 (disponible depuis Linux 2.6), l’espace total d’adresses virtuelles pouvant ĂȘtre allouĂ© ( CommitLimit dans /proc/meminfo ) est calculĂ© ainsi :

CommitLimit = (total_RAM - total_huge_TLB) *

overcommit_ratio / 100 + total_swap

oĂč :

-

total_RAM est la quantité totale de RAM sur le systÚme ;

-

total_huge_TLB est la quantité de mémoire réservée pour les pages volumineuses ;

-

overcommit_ratio est la valeur dans /proc/sys/vm/overcommit_ratio ;

-

total_swap est la quantitĂ© d’espace d’échange.

Par exemple, sur un systĂšme ayant 16 Go de RAM physique et 16 Go d’espace d’échange, aucun espace rĂ©servĂ© pour les pages volumineuses et avec un overcommit_ratio de 50, cette formule renvoie un CommitLimit de 24 Go.

Depuis Linux 3.14, si la valeur dans /proc/sys/vm/overcommit_kbytes est différente de zéro, CommitLimit est calculé ainsi :

CommitLimit = overcommit_koctets + total_swap

Consulter aussi la description dans /proc/sys/vm/admin_reserve_kbytes et /proc/sys/vm/user_reserve_kbytes .

/proc/sys/vm/overcommit_ratio (depuis Linux 2.6.0)

Ce fichier éditable définit un pourcentage de dépassement de mémoire. La valeur par défaut dans ce fichier est 50. Consulter la description de /proc/sys/vm/overcommit_memory .

/proc/sys/vm/panic_on_oom (depuis Linux 2.6.18)

Ce fichier active ou dĂ©sactive le dĂ©clenchement d’une panique dans les situations de mĂ©moire saturĂ©e.

Si ce fichier est configurĂ© Ă  la valeur 0, l’OOM-killer du noyau tuera un processus perturbateur. En gĂ©nĂ©ral, il peut tuer un processus perturbateur sans tuer le systĂšme.

Si ce fichier est configurĂ© Ă  la valeur 1, le noyau paniquera dans une situation de mĂ©moire saturĂ©e. Cependant, si un processus limite les allocations Ă  certains nƓuds en utilisant des politiques de mĂ©moire ( MPOL_BIND de mbind (2)) ou des ensembles de processeurs ( cpuset (7)), et si ces nƓuds voient leur mĂ©moire saturĂ©e, un processus peut ĂȘtre tuĂ© par l’OOM-killer. Aucune panique ne survient dans ce cas. Comme de la mĂ©moire est disponible sur d’autres nƓuds, le systĂšme n’a pas entiĂšrement atteint une situation de mĂ©moire saturĂ©e.

Si ce fichier est configuré à la valeur 2, le noyau panique toujours dans une situation de mémoire saturée.

La valeur par dĂ©faut est 0. Les valeurs 1 et 2 sont utilisĂ©es pour la rĂ©cupĂ©ration en cas d’erreur de groupements. SĂ©lectionner l’un ou l’autre en fonction de la politique de rĂ©cupĂ©ration en cas d’erreur.

/proc/sys/vm/swappiness

La valeur dans ce fichier contrĂŽle le niveau d’agressivitĂ© utilisĂ© par le noyau pour dĂ©placer des pages mĂ©moire dans l’espace d’échange. Les valeurs Ă©levĂ©es indiquent une agressivitĂ© plus importante. La valeur par dĂ©faut est de 60.

/proc/sys/vm/user_reserve_kbytes (depuis Linux 3.10)

Ce fichier indique une quantitĂ© de mĂ©moire (en Kio) Ă  rĂ©server pour les processus d’utilisateur. Cela permet d’empĂȘcher un utilisateur de dĂ©marrer un seul processus monopolisateur de mĂ©moire et qu’il ne puisse rĂ©cupĂ©rer (tuer le monopolisateur). La valeur dans ce fichier a un effet seulement quand /proc/sys/vm/overcommit_memory est dĂ©fini à 2 (mode « overcommit never »). Dans ce cas, le systĂšme rĂ©serve une quantitĂ© de mĂ©moire qui est le minimum de [3 % de la taille du processus en cours, user_reserve_kbytes ].

La valeur par défaut dans ce fichier est le minimum de [3 % des pages libres, 128 Mio] exprimé en Kio.

Si la valeur dans ce fichier est dĂ©finie Ă  zĂ©ro, l’utilisateur pourra allouer toute la mĂ©moire libre pour un seul processus (moins la quantitĂ© rĂ©servĂ©e par /proc/sys/vm/admin_reserve_kbytes ). Tout essai ultĂ©rieur d’exĂ©cuter une commande aboutira dans un « fork: Cannot allocate memory ».

Le changement de la valeur dans ce fichier prend effet dĂšs qu’une application requiert de la mĂ©moire.

/proc/sys/vm/unprivileged_userfaultfd (depuis Linux 5.2)

Ce fichier (éditable) expose un drapeau qui contrÎle si les processus non privilégiés sont autorisés à employer userfaultfd (2). Si ce fichier a pour valeur 1, alors ils le peuvent, si la valeur est 0, seuls les processus ayant la capacité CAP_SYS_PTRACE peuvent utiliser userfaultfd (2). La valeur par défaut dans ce fichier est 1.

VOIR AUSSI

proc (5), proc_sys (5)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et Lucien Gentis <lucien.gentis@waika9.com>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .