/proc/buddyinfo - fragmentarea memoriei
- /proc/buddyinfo
- Acest fișier conține informații care sunt utilizate
pentru diagnosticarea problemelor de fragmentare a memoriei. Fiecare linie
începe cu identificarea nodului și numele zonei care,
împreună, identifică o regiune de memorie. Acestea
sunt urmate de numărul de fragmente disponibile într-o
anumită ordine în care aceste zone sunt
împărțite. Dimensiunea în octeți a unei
anumite ordini este dată de formula:
-
(2^ordine) * PAGE_SIZE
- Algoritmul de alocare binar buddy din cadrul nucleului va
împărți un fragment în două fragmente
de o ordine mai mică (deci cu jumătate din dimensiune) sau
va combina două fragmente contigue într-un fragment mai mare
de o ordine mai mare (deci cu dimensiune dublă) pentru a satisface
cererile de alocare și pentru a contracara fragmentarea memoriei.
Ordinea se potrivește cu numărul coloanei, atunci
când numărătoarea începe de la zero.
- De exemplu, într-un sistem x86-64:
Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3
Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404
Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587
- În acest exemplu, există un nod care conține trei
zone și există 11 dimensiuni diferite ale fragmentelor.
Dacă dimensiunea paginii este de 4 kiloocteți, atunci prima
zonă numită DMA (pe x86 primii 16 megaocteți
de memorie) are un fragment de 4 kiloocteți (ordinea 0) disponibil
și are 3 fragmente de 4 megaocteți (ordinea 10)
disponibile.
- Dacă memoria este foarte fragmentată, contoarele pentru
bucățile de ordin superior vor fi zero, iar alocarea de zone
contigue mari va eșua.
- Informații suplimentare despre zone pot fi găsite în
/proc/zoneinfo.
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.