Provided by: manpages-ro_4.27.0-1_all 

NUME
/proc/sys/vm/ - subsistemul de memorie virtuală
DESCRIERE
/proc/sys/vm/
Acest director conține fișiere pentru ajustarea gestionării memoriei, tampon(buffer) și zona de
prestocare(cache).
/proc/sys/vm/admin_reserve_kbytes (începând cu Linux 3.10)
Acest fișier definește cantitatea de memorie liberă (în Kio) din sistem care ar trebui rezervată
pentru utilizatorii cu capacitatea CAP_SYS_ADMIN.
Valoarea implicită din acest fișier este minimul de [3% din paginile libere, 8Mio] exprimat în
Kio. Valoarea implicită este menită să ofere suficient pentru ca superutilizatorul să se conecteze
și să oprească un proces, dacă este necesar, în modul implicit „guess” de alocare în plus de
memorie („overcommit”, adică 0 în /proc/sys/vm/overcommit_memory).
Sistemele care rulează în modul „overcommit never” (adică 2 în /proc/sys/vm/overcommit_memory) ar
trebui să crească valoarea din acest fișier pentru a ține seama de dimensiunea completă a memoriei
virtuale a programelor utilizate pentru recuperare (de exemplu, login(1) ssh(1) și top(1)) În caz
contrar, este posibil ca superutilizatorul să nu se poată conecta pentru a recupera sistemul. De
exemplu, pe x86-64, o valoare adecvată este 131072 (128Mio rezervat).
Modificarea valorii din acest fișier intră în vigoare ori de câte ori o aplicație solicită
memorie.
/proc/sys/vm/compact_memory (începând cu Linux 2.6.35)
Atunci când se scrie 1 în acest fișier, toate zonele sunt compactate astfel încât memoria liberă
să fie disponibilă în blocuri contigue, acolo unde este posibil. Efectul acestei acțiuni poate fi
observat examinând /proc/buddyinfo.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_COMPACTION activată.
/proc/sys/vm/drop_caches (începând cu Linux 2.6.16)
Scrierea în acest fișier determină nucleul să elimine din memorie cache-urile, intrările de
director și nodurile-i curate, făcând ca memoria respectivă să devină liberă. Acest lucru poate fi
util pentru testarea gestionării memoriei și pentru efectuarea de teste de performanță
reproductibile pentru sistemul de fișiere. Deoarece scrierea în acest fișier duce la pierderea
beneficiilor memorării în cache, aceasta poate degrada performanța generală a sistemului.
Pentru a elibera memoria cache de pagini, utilizați:
echo 1 > /proc/sys/vm/drop_caches
Pentru a elibera intrările de director și nodurile-i, utilizați:
echo 2 > /proc/sys/vm/drop_caches
Pentru a elibera memoria cache de pagini, intrările de director și nodurile-i, utilizați:
echo 3 > /proc/sys/vm/drop_caches
Deoarece scrierea în acest fișier este o operațiune nedistructivă, iar obiectele modificate
(murdare) nu pot fi eliberate, utilizatorul ar trebui să execute mai întâi sync(1).
/proc/sys/vm/sysctl_hugetlb_shm_group (începând cu Linux 2.6.7)
Acest fișier inscriptibil conține un ID de grup care are permisiunea de a aloca memorie utilizând
pagini imense. Dacă un proces are un ID de grup al sistemului de fișiere sau orice ID de grup
suplimentar care corespunde acestui ID de grup, atunci acesta poate face alocări de pagini imense
fără a deține capacitatea CAP_IPC_LOCK; consultați memfd_create(2), mmap(2) și shmget(2).
/proc/sys/vm/legacy_va_layout (începând cu Linux 2.6.9)
Dacă nu este zero, aceasta dezactivează noua structură de alocare a memoriei pe 32 de biți;
nucleul va utiliza structura tradițională (2.4) pentru toate procesele.
/proc/sys/vm/memory_failure_early_kill (începând cu Linux 2.6.32)
Controlează modul de oprire a proceselor atunci când o eroare de memorie necorectată (de obicei o
eroare de 2 biți într-un modul de memorie) care nu poate fi gestionată de nucleu este detectată în
fundal de hardware. În unele cazuri (cum ar fi pagina care are încă o copie valabilă pe disc),
nucleul va gestiona defecțiunea în mod transparent, fără a afecta nicio aplicație. Dar, dacă nu
există nicio altă copie actualizată a datelor, acesta va opri procesele pentru a preveni
propagarea oricărei corupții a datelor.
Fișierul are una dintre următoarele valori:
1 Omoară toate procesele care au asociată pagina coruptă și care nu poate fi reîncărcată
imediat ce este detectată corupția. Rețineți că acest lucru nu este acceptat pentru câteva
tipuri de pagini, cum ar fi datele alocate intern nucleului sau cache-ul de swap, dar
funcționează pentru majoritatea paginilor de utilizator.
0 Anulează asocierea paginii corupte cu toate procesele (cu care era asociată) și omoară un
proces numai dacă acesta încearcă să acceseze pagina.
Omorârea este efectuată utilizând un semnal SIGBUS cu si_code definit la BUS_MCEERR_AO. Procesele
pot gestiona acest lucru dacă doresc; consultați sigaction(2) pentru mai multe detalii.
Această caracteristică este activă numai pe arhitecturi/platforme cu gestionare avansată a
verificării mașinii și depinde de capacitățile hardware.
Aplicațiile pot schimba individual configurarea memory_failure_early_kill cu operația prctl(2)
PR_MCE_KILL.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_MEMORY_FAILURE activată.
/proc/sys/vm/memory_failure_recovery (începând cu Linux 2.6.32)
Activează recuperarea în caz de eroare a memoriei (atunci când este acceptată de platformă).
1 Încearcă recuperarea.
0 Declanșează întotdeauna o panică a nucleului în cazul unei erori de memorie.
Prezenta doar daca nucleul a fost configurat cu opțiunea CONFIG_MEMORY_FAILURE activată.
/proc/sys/vm/oom_dump_tasks (începând cu Linux 2.6.25)
Activează producerea unei imagini a sarcinilor la nivelul întregului sistem (cu excepția firelor
nucleului) atunci când nucleul efectuează o operație „OOM-killing” (omorâre datorită
supraîncărcării memoriei. Imaginea include următoarele informații pentru fiecare sarcină (fir,
proces): ID fir, ID utilizator real, ID grup de fire (ID proces), dimensiunea memoriei virtuale,
dimensiunea setului rezident, CPU-ul pe care este programată sarcina, scorul oom_adj (a se vedea
descrierea /proc/pid/oom_adj) și numele comenzii. Acest lucru este util pentru a determina de ce a
fost invocată funcția OOM-killer și pentru a identifica sarcina defectuoasă care a cauzat-o.
Dacă conține valoarea zero, această informație este suprimată. Pe sistemele foarte mari cu mii de
sarcini, este posibil să nu fie fezabil să se creeze imaginea cu informațiile privind starea
memoriei pentru fiecare dintre acestea. Astfel de sisteme nu ar trebui să fie forțate să suporte o
penalizare a performanței în situații OOM în care informațiile nu sunt dorite.
Dacă este stabilită la diferit de zero, această informație este afișată ori de câte ori OOM-killer
omoară efectiv o sarcină care consumă multă memorie.
Valoarea implicită este 0.
/proc/sys/vm/oom_kill_allocating_task (începând cu Linux 2.6.24)
Aceasta activează sau dezactivează omorârea sarcinii care declanșează OOM-killer în situații de
lipsă de memorie.
Dacă este stabilită la zero, OOM-killer va scana întreaga listă de sarcini și va selecta o sarcină
pe bază euristică pentru a o omorî. Aceasta selectează în mod normal o sarcină defectuoasă care
consumă multă memorie și care eliberează o cantitate mare de memorie atunci când este eliminată.
Dacă această valoare este diferită de zero, OOM-killer omoară pur și simplu sarcina care a
declanșat condiția de depășire a memoriei. Acest lucru evită o scanare a listei de sarcini,
posibil costisitoare.
Dacă valoarea lui /proc/sys/vm/panic_on_oom este diferită de zero, aceasta are prioritate față de
orice valoare utilizată în /proc/sys/vm/oom_kill_allocating_task.
Valoarea implicită este 0.
/proc/sys/vm/overcommit_kbytes (începând cu Linux 3.14)
Acest fișier inscriptibil oferă o alternativă la /proc/sys/vm/overcommit_ratio pentru controlul
CommitLimit atunci când /proc/sys/vm/overcommit_memory are valoarea 2. Acest lucru permite
specificarea cantității de memorie suprasolicitată ca valoare absolută (în ko), și nu ca procent,
așa cum se face cu overcommit_ratio. Acest lucru permite un control mai fin al CommitLimit pe
sistemele cu dimensiuni de memorie extrem de mari.
Numai unul dintre overcommit_kbytes sau overcommit_ratio poate avea un efect: dacă
overcommit_kbytes are o valoare diferită de zero, atunci este utilizat pentru a calcula
CommitLimit, în caz contrar este utilizat overcommit_ratio. Scrierea unei valori în oricare dintre
aceste fișiere face ca valoarea din celălalt fișier să fie pusă la zero.
/proc/sys/vm/overcommit_memory
Acest fișier conține modul de contabilizare a memoriei virtuale a nucleului. Valorile sunt:
0: supra-rezervare „overcommit” euristică (aceasta este valoarea implicită)
1: întotdeauna supra-rezervare, nu verifică niciodată
2: verifică întotdeauna, niciodată supra-rezervare
În modul 0, apelurile mmap(2) cu MAP_NORESERVE nu sunt verificate, iar verificarea implicită este
foarte slabă, ceea ce conduce la riscul de a obține un proces „OOM-killed”.
În modul 1, nucleul pretinde că există întotdeauna suficientă memorie, până când memoria se
epuizează. Un caz de utilizare pentru acest mod este reprezentat de aplicațiile de calcul
științific care utilizează matrici disperse mari. Înainte de Linux 2.6.0, orice valoare diferită
de zero implica modul 1.
În modul 2 (disponibil începând cu Linux 2.6), spațiul total de adrese virtuale care poate fi
alocat (CommitLimit în /proc/meminfo) se calculează astfel
CommitLimit = (total_RAM - total_huge_TLB) *
overcommit_ratio / 100 + total_swap
unde:
• total_RAM este cantitatea totală de RAM din sistem;
• total_huge_TLB este cantitatea de memorie pusă deoparte pentru paginile imense;
• overcommit_ratio este valoarea din /proc/sys/vm/overcommit_ratio; și
• total_swap este cantitatea de spațiu de interschimb (swap).
De exemplu, într-un sistem cu 16 Go de RAM fizică, 16 Go de spațiu interschimb, niciun spațiu
dedicat paginilor imense și un overcommit_ratio de 50, această formulă generează un CommitLimit de
24 Go.
Începând cu Linux 3.14, dacă valoarea din /proc/sys/vm/overcommit_kbytes este diferită de zero,
atunci CommitLimit este calculată ca:
CommitLimit = overcommit_kbytes + total_swap
A se vedea, de asemenea, descrierea lui /proc/sys/vm/admin_reserve_kbytes și
/proc/sys/vm/user_reserve_kbytes.
/proc/sys/vm/overcommit_ratio (începând cu Linux 2.6.0)
Acest fișier inscriptibil definește un procent cu care memoria poate fi supra-rezervată. Valoarea
implicită din fișier este 50. Consultați descrierea /proc/sys/vm/overcommit_memory.
/proc/sys/vm/panic_on_oom (începând cu Linux 2.6.18)
Aceasta activează sau dezactivează o intrare în panică a nucleului într-o situație de lipsă a
memoriei.
Dacă valoarea din acest fișier este stabilită la 0, OOM-killer-ul nucleului va omorî un proces
defectuos. De obicei, OOM-killer este capabil să omoare un proces defectuos și sistemul va
supraviețui.
Dacă valoarea din acest fișier este stabilită la 1, atunci nucleul intră în mod normal în panică
atunci când se produce o depășire a memoriei. Cu toate acestea, dacă un proces limitează alocările
la anumite noduri utilizând politici de memorie (mbind(2) MPOL_BIND) sau cpuset-uri (cpuset(7)) și
aceste noduri ating starea de epuizare a memoriei, un proces poate fi omorât de OOM-killer. În
acest caz nu se produce intrarea în panică: deoarece memoria altor noduri poate fi liberă, aceasta
înseamnă că este posibil ca sistemul în ansamblu să nu fi ajuns încă într-o situație de epuizare a
memoriei.
Dacă valoarea din acest fișier este stabilită la 2, nucleul intră întotdeauna în panică atunci
când apare o condiție de epuizre a memoriei.
Valoarea implicită este 0. 1 și 2 sunt pentru protecția împotriva cazurilor de grupare a erorilor.
Selectați oricare dintre acestea în funcție de politica de protecție în caz de eroare.
/proc/sys/vm/swappiness
Valoarea din acest fișier controlează agresivitatea cu care nucleul va schimba paginile de
memorie. Valorile mai mari cresc agresivitatea, iar valorile mai mici scad agresivitatea. Valoarea
implicită este 60.
/proc/sys/vm/user_reserve_kbytes (începând cu Linux 3.10)
Specifică o cantitate de memorie (în Kio) care să fie rezervată pentru procesele de utilizator.
Acest lucru este menit să împiedice un utilizator să pornească un singur proces care consumă multă
memorie, astfel încât să nu poată recupera (kill the hog). Valoarea din acest fișier are efect
numai atunci când /proc/sys/vm/overcommit_memory este stabilită la 2 (modul „overcommit never”).
În acest caz, sistemul rezervă o cantitate de memorie care este minimum [3% din dimensiunea
procesului curent, user_reserve_kbytes].
Valoarea implicită din acest fișier este minimul de [3% din paginile libere, 128Mio] exprimat în
Kio.
Dacă valoarea din acest fișier este stabilită la zero, atunci unui utilizator i se va permite să
aloce toată memoria liberă cu un singur proces (minus cantitatea rezervată de
/proc/sys/vm/admin_reserve_kbytes). Orice încercare ulterioară de a executa o comandă va avea ca
rezultat mesajul „fork: Cannot allocate memory”.
Modificarea valorii din acest fișier intră în vigoare ori de câte ori o aplicație solicită
memorie.
/proc/sys/vm/unprivileged_userfaultfd (începând cu Linux 5.2)
Acest fișier (inscriptibil) expune un indicator care controlează dacă procesele neprivilegiate au
voie să utilizeze userfaultfd(2). Dacă acest fișier are valoarea 1, atunci procesele
neprivilegiate pot utiliza userfaultfd(2). Dacă acest fișier are valoarea 0, atunci numai
procesele care au capacitatea CAP_SYS_PTRACE pot utiliza userfaultfd(2). Valoarea implicită în
acest fișier este 1.
CONSULTAȚI ȘI
proc(5), proc_sys(5)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 2 mai 2024 proc_sys_vm(5)