proc_sys_vm(5) File Formats Manual proc_sys_vm(5)
NOM
/proc/sys/vm/ - Sous-syteme de memoire virtuelle
DESCRIPTION
/proc/sys/vm/
Ce repertoire contient des fichiers de parametrage de la gestion
de memoire, des tampons et du cache.
/proc/sys/vm/admin_reserve_kbytes (depuis Linux 3.10)
Ce fichier definit le montant de memoire libre (en Kio) qui doit
etre reservee sur le systeme pour les utilisateurs ayant la
capacite CAP_SYS_ADMIN.
La valeur par defaut dans ce fichier est le minimum de [3 % de
pages libres, 8 Mio] exprime en Kio. La valeur par defaut est
destinee a en fournir assez pour que le superutilisateur puisse
se connecter et tuer un processus si necessaire, en utilisant le
mode << guess >> d'allocation excessive de memoire (overcommit
- c'est-a-dire 0 dans /proc/sys/vm/overcommit_memory).
Les systemes qui s'executent dans le mode << overcommit never >>
(c'est-a-dire 2 dans /proc/sys/vm/overcommit_memory) doivent
augmenter la valeur dans ce fichier pour prendre en compte la
taille totale de memoire virtuelle pour les programmes utilises
pour recuperer (par exemple, login(1), ssh(1) et top(1)). Sinon
le superutilisateur pourrait ne pas etre capable de se connecter
pour recuperer le systeme. Par exemple, pour x86-64 une valeur
acceptable est 131072 (128 Mio reserves).
Le changement de la valeur dans ce fichier prend effet des
qu'une application requiert de la memoire.
/proc/sys/vm/compact_memory (depuis Linux 2.6.35)
Lorsque 1 est inscrit dans ce fichier, toutes les zones sont
compactees de facon a ce que toute la memoire libre soit
constituee de blocs contigus si possible. L'effet de cette
action est visible en examinant /proc/buddyinfo.
Ce fichier n'est present que si le noyau est configure avec
l'option CONFIG_COMPACTION.
/proc/sys/vm/drop_caches (depuis Linux 2.6.16)
Ecrire dans ce fichier force le noyau a liberer les caches,
entrees de repertoire et inoeuds propres de la memoire, en
liberant ainsi cette memoire. Ce peut etre utile pour les tests
de gestion de memoire et la realisation de tests reproductibles
de performance de systemes de fichiers. Puisqu'une ecriture dans
ce fichier fait perdre tous les avantages du cache, cela peut
degrader l'integralite des performances du systeme.
Pour liberer les pages de cache, utilisez :
echo 1 > /proc/sys/vm/drop_caches
Pour liberer les entrees de repertoire et les inoeuds,
utilisez :
echo 2 > /proc/sys/vm/drop_caches
Pour liberer les pages de cache, entrees de repertoire et
inoeuds, utilisez :
echo 3 > /proc/sys/vm/drop_caches
Parce que l'ecriture dans ce fichier est non destructive, et que
les objets sales ne sont pas liberables, l'utilisateur devrait
utiliser la commande sync(8) au prealable.
/proc/sys/vm/sysctl_hugetlb_shm_group (depuis Linux 2.6.7)
Ce fichier editable contient un ID de groupe autorise a allouer
de la memoire en utilisant des pages volumineuses. Si un
processus a un ID de groupe de systeme de fichiers ou tout autre
ID de groupe supplementaire qui correspond a cet ID de groupe,
il peut realiser des allocations de pages volumineuses sans
detenir la capacite 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 different de zero, cela desactive la nouvelle
disposition de carte memoire 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)
Controler comment tuer les processus lorsqu'une erreur memoire
non corrigee (typiquement une erreur sur 2 bits dans un module
de memoire), qui ne peut pas etre geree par le noyau, est
detectee en tache de fond par le materiel. Dans certains cas
(par exemple s'il existe une copie valable de la page sur
disque), le noyau est capable de gerer cette erreur de maniere
transparente sans qu'aucune application ne soit touchee. Mais si
le noyau n'a pas de copie a jour des donnees, il va tuer des
processus afin d'empecher la propagation de la corruption des
donnees.
Ce fichier peut contenir l'une des valeurs suivantes :
1 Tuer des que la corruption est detectee 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 donnees allouees en
interne par le noyau ou le cache d'echange (swap), mais
cela fonctionne avec la majorite 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 acceder.
L'action de tuer le processus est effectuee en envoyant un
signal SIGBUS avec si_code mis a BUS_MCEERR_AO. Les processus
peuvent gerer cette situation s'ils le souhaitent ; consulter
sigaction(2) pour plus de precisions.
Cette fonctionnalite n'est disponible que sur les
architectures/plateformes avec une gestion avancee de
verification de la machine et depend des possibilites du
materiel.
Les applications peuvent modifier individuellement le parametre
memory_failure_early_kill avec l'operation PR_MCE_KILL de
prctl(2).
Ce fichier n'est disponible que si le noyau est configure avec
l'option CONFIG_MEMORY_FAILURE.
/proc/sys/vm/memory_failure_recovery (depuis Linux 2.6.32)
Activer la recuperation d'une erreur memoire (si la plateforme
le permet).
1 Tenter une recuperation.
0 Toujours sortir en mode panique sur une erreur memoire.
Ce fichier n'est disponible que si le noyau est configure avec
l'option CONFIG_MEMORY_FAILURE.
/proc/sys/vm/oom_dump_tasks (depuis Linux 2.6.25)
Activer la production d'une image des taches du systeme (a
l'exception des threads du noyau) lors des mises a mort sur
memoire saturee (OOM-killing). L'image contient les informations
suivantes pour chaque tache (thread ou processus) : ID de
thread, ID utilisateur reel, ID groupe de threads (ID du
processus), taille de la memoire virtuelle, taille de la memoire
residente, CPU sur lequel la tache etait ordonnancee, 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 a mort sur memoire saturee et pour
identifier la tache defectueuse qui en est la cause.
Avec la valeur zero, l'information est supprimee. Sur les tres
gros systemes avec des milliers de taches, il peut etre
impossible de creer l'image avec les informations d'etat de la
memoire pour chacune d'entre elles. Ces systemes ne doivent pas
etre obliges de penaliser leurs performances dans ces cas de
penurie de memoire si ces informations ne sont pas souhaitees.
Pour toute valeur differente de zero, ces informations sont
presentees a chaque fois que le systeme (OOM-killer) de mise a
mort sur memoire saturee tue reellement une tache monopolisation
la memoire (memory-hogging).
La valeur par defaut est 0.
/proc/sys/vm/oom_kill_allocating_task (depuis Linux 2.6.24)
Ce fichier active ou desactive la mise a mort de la tache qui a
cree le depassement de memoire dans les situations de memoire
saturee.
Avec une valeur de zero, l'OOM-killer parcourra la liste entiere
des taches et celle a tuer sera selectionnee en fonction
d'heuristiques. Cette valeur selectionne normalement une tache
monopolisant une grosse quantite de memoire et qui liberera
beaucoup de memoire lorsqu'elle sera tuee.
Avec une valeur differente de zero, l'OOM-killer tuera
simplement la tache provoquant le depassement de memoire. Cela
evite un parcours potentiellement couteux de la liste des
taches.
Si /proc/sys/vm/panic_on_oom est different de zero, il est
prioritaire sur toute valeur utilisee dans
/proc/sys/vm/oom_kill_allocating_task.
La valeur par defaut est 0.
/proc/sys/vm/overcommit_kbytes (depuis Linux 3.14)
Ce fichier editable fournit une alternative a
/proc/sys/vm/overcommit_ratio pour controler CommitLimit quand
/proc/sys/vm/overcommit_memory a pour valeur 2. Il permet de
specifier la quantite de memoire reservee en plus sous forme de
valeur absolue (en ko), plutot qu'en pourcentage comme ce qui
est fait pour overcommit_ratio. Cela permet un controle plus fin
de CommitLimit sur les systemes ayant des tailles de memoire
extremement importantes.
Seul un des deux fichiers overcommit_kbytes ou overcommit_ratio
peut avoir un effet. Si overcommit_kbytes a une valeur
differente de zero, il est utilise pour calculer CommitLimit,
sinon c'est overcommit_ratio qui est utilise. Ecrire une valeur
dans un de ces fichiers fera que la valeur dans l'autre fichier
sera definie a zero.
/proc/sys/vm/overcommit_memory
Ce fichier contient le mode pour le comptage de la memoire
virtuelle du noyau. Les valeurs sont :
0 : gestion heuristique du depassement d'allocation
memoire (c'est la valeur par defaut)
1 : pas de gestion du depassement, ne jamais verifier
2 : toujours verifier, gestion stricte du depassement
Dans le mode 0, les appels a mmap(2) utilisant MAP_NORESERVE ne
sont pas verifies et le niveau de verification par defaut est
tres faible, avec le risque d'avoir un processus tue a cause du
manque de memoire (<< OOM-killed >>).
Dans le mode 1, le noyau pretend qu'il y a toujours assez de
memoire, jusqu'a ce que la memoire soit reellement epuisee. 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 differente de zero impliquait le
mode 1.
Dans le mode 2 (disponible depuis Linux 2.6), l'espace total
d'adresses virtuelles pouvant etre alloue (CommitLimit dans
/proc/meminfo) est calcule ainsi :
CommitLimit = (total_RAM - total_huge_TLB) *
overcommit_ratio / 100 + total_swap
ou :
- total_RAM est la quantite totale de RAM sur le systeme ;
- total_huge_TLB est la quantite de memoire reservee pour les
pages volumineuses ;
- overcommit_ratio est la valeur dans
/proc/sys/vm/overcommit_ratio ;
- total_swap est la quantite d'espace d'echange.
Par exemple, sur un systeme ayant 16 Go de RAM physique et 16 Go
d'espace d'echange, aucun espace reserve 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 differente de zero,
CommitLimit est calcule 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 editable definit un pourcentage de depassement de
memoire. La valeur par defaut 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 desactive le declenchement d'une panique
dans les situations de memoire saturee.
Si ce fichier est configure a la valeur 0, l'OOM-killer du noyau
tuera un processus perturbateur. En general, il peut tuer un
processus perturbateur sans tuer le systeme.
Si ce fichier est configure a la valeur 1, le noyau paniquera
dans une situation de memoire saturee. Cependant, si un
processus limite les allocations a certains noeuds en utilisant
des politiques de memoire (MPOL_BIND de mbind(2)) ou des
ensembles de processeurs (cpuset(7)), et si ces noeuds voient
leur memoire saturee, un processus peut etre tue par
l'OOM-killer. Aucune panique ne survient dans ce cas. Comme de
la memoire est disponible sur d'autres noeuds, le systeme n'a
pas entierement atteint une situation de memoire saturee.
Si ce fichier est configure a la valeur 2, le noyau panique
toujours dans une situation de memoire saturee.
La valeur par defaut est 0. Les valeurs 1 et 2 sont utilisees
pour la recuperation en cas d'erreur de groupements.
Selectionner l'un ou l'autre en fonction de la politique de
recuperation en cas d'erreur.
/proc/sys/vm/swappiness
La valeur dans ce fichier controle le niveau d'agressivite
utilise par le noyau pour deplacer des pages memoire dans
l'espace d'echange. Les valeurs elevees indiquent une
agressivite plus importante. La valeur par defaut est de 60.
/proc/sys/vm/user_reserve_kbytes (depuis Linux 3.10)
Ce fichier indique une quantite de memoire (en Kio) a reserver
pour les processus d'utilisateur. Cela permet d'empecher un
utilisateur de demarrer un seul processus monopolisateur de
memoire et qu'il ne puisse recuperer (tuer le monopolisateur).
La valeur dans ce fichier a un effet seulement quand
/proc/sys/vm/overcommit_memory est defini a 2 (mode
<< overcommit never >>). Dans ce cas, le systeme reserve une
quantite de memoire qui est le minimum de [3 % de la taille du
processus en cours, user_reserve_kbytes].
La valeur par defaut dans ce fichier est le minimum de [3 % des
pages libres, 128 Mio] exprime en Kio.
Si la valeur dans ce fichier est definie a zero, l'utilisateur
pourra allouer toute la memoire libre pour un seul processus
(moins la quantite reservee par
/proc/sys/vm/admin_reserve_kbytes). Tout essai ulterieur
d'executer une commande aboutira dans un << fork: Cannot
allocate memory >>.
Le changement de la valeur dans ce fichier prend effet des
qu'une application requiert de la memoire.
/proc/sys/vm/unprivileged_userfaultfd (depuis Linux 5.2)
Ce fichier (editable) expose un drapeau qui controle si les
processus non privilegies sont autorises a employer
userfaultfd(2). Si ce fichier a pour valeur 1, alors ils le
peuvent, si la valeur est 0, seuls les processus ayant la
capacite CAP_SYS_PTRACE peuvent utiliser userfaultfd(2). La
valeur par defaut dans ce fichier est 1.
VOIR AUSSI
proc(5), proc_sys(5)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
, Jean-Paul Guillonneau
et Lucien Gentis
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.9.1 2 mai 2024 proc_sys_vm(5)