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)