Ei propun un nou controler de memorie pentru nucleul Linux

Linux Kernel

Managerul de memorie este un subset al sistemului operare Acesta partajează memoria între sistemul de operare și diferitele aplicații. Termenul de memorie se referă în principal la memoria principală (RAM), dar gestionarea sa necesită contribuția memoriei auxiliare și a memoriei cache.

Managerul de memorie este responsabil în special pentru alocarea eficientă a memoriei proceselor, ceea ce înseamnă că trebuie să puteți lista locațiile libere ale memoriei disponibile, să alocați memoria necesară proceselor noi și să recuperați memoria din procesele care se termină. Dispecerul de proces din nucleul Linux este dispecerul SLAB.

DALĂ se bazează pe un sistem de blocare și cache care optimizează solicitările de memorie. Acest tip de gestionare a memoriei reduce fragmentarea cauzată de operațiile de alocare și relocare.

Alocarea blocurilor implică implementarea unei cache pentru un anumit tip de obiect / dimensiune care are mai multe blocuri de memorie prealocate tăiate în bucăți de dimensiuni fixe care sunt potrivite pentru obiecte specifice.

SLAB gestionează piesele astfel încât atunci când se solicită nucleului să aloce memorie unui obiect, Puteți satisface această solicitare cu o piesă de schimb dintr-un bloc existent. SLAB păstrează memoria alocată pentru reutilizare, atunci când sunt alocate ulterior obiecte similare, și astfel reduce costurile generale legate de inițializarea obiectului.

Ei intenționează să înlocuiască SLAB

Roman Gushchin, Membru al echipei de inginerie a kernel-urilor Linux de la Facebook, a descoperit ceea ce vede ca un „defect grav” în actualul manager / controler de memorie. Și ra propus recent un nou controler de memorie bloc care promite să îmbunătățească dramatic utilizarea memoriei în rândul mai multor „grupuri c” (sau grupuri de control) din memorie.

Având în vedere acest lucru, este important să rețineți că grupurile cgroup se referă la o caracteristică a kernel-ului Linux care permite limitarea, numărarea și izolarea utilizării resurselor unui sistem (procesor, memorie, utilizarea discului etc.) și termenul „pagină de slab» ar putea fi asimilat procesului de alocare a memoriei de către SLAB.

Potrivit lui Gushchin:

„Motivul real pentru care designul existent duce la o utilizare redusă a SLAB-ului este simplu: paginile de Slab sunt utilizate exclusiv de un singur pool de memorie.

Dacă există doar câteva alocări de o anumită dimensiune făcute de un grup cgroup sau dacă mai sunt câteva obiecte active rămase după ce grupul c a fost eliminat sau dacă grupul c conține o singură aplicație cu fir care nu alocă practic nici un nucleu, dar o face de fiecare dată în un procesor nou: În toate aceste cazuri, utilizarea SLAB rezultată este foarte redusă.

Dacă calculul kmem este dezactivat, nucleul poate folosi spațiu liber pe paginile de țiglă pentru alte alocări «.

Gushchin susține că aceasta nu a fost o problemă atunci când driverul kmem a fost introdus ca o caracteristică opțională care trebuia activată pentru fiecare pool de memorie.

Acum însă, driverul kmem este activat în mod implicit pentru cgroup v1 și v2. Și întrucât sistemele moderne tind să creeze un număr mare de grupuri c, utilizarea SLAB este mai puțin eficientă.

Potrivit acestuia, prin partajarea paginilor de plăci între diferite grupuri de memorie și prin utilizarea unui sistem refăcut în care contabilitatea se face după obiect, nu pe pagină, s-ar avea în nucleul Linux un controler de memorie optimizat care oferă un nivel de utilizare mult mai eficient.

Patch-ul propus de Gushchin conține două elemente semi-independente: un API de încărcare subpagină care poate fi utilizat în viitor în scopuri contabile și un API mem_cgroup_ptr.

Teste efectuate cu noul controler amintirea lui Gushchin au arătat că este posibil să obțineți între 35% și 42% mai multă memorie în Linux pe front-end web, cache-ul bazei de date și server DNS, precum și multe alte sarcini de lucru.

Propunerea lui Gushchin se află în prezent sub bannerul „cerere de comentarii”. Dacă este acceptat, acesta ar putea fi integrat în versiunea kernel Linux 2020.

Fuente: https://lkml.org/


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.