Facebook a lansat patch-uri care îmbunătățesc controlerul de memorie Slab în Linux

Roman Gushchin (un inginer de software Facebook) registru în lista de dezvoltare a kernel-ului Linux, un set de patch-uri pentru aplicația de cartografiere a memoriei pentru controlerul plăcii (un controler de memorie).

Noul controler este remarcabil prin mutarea contabilității plăcilor de la nivelul paginii de memorie la nivelul obiectului kernel, făcând posibilă partajarea paginilor plăcii între diferite grupuri c, mai degrabă decât alocarea cache-urilor separate pentru fiecare grup c.

Roman a găsit ceea ce el numește un „defect foarte serios” în controlerul de memorie existent, care duce la o utilizare redusă în aceste zile cu grupurile cgroup.

„Motivul real pentru care designul existent duce la utilizarea redusă a plăcilor este simplu: paginile plăcilor sunt utilizate exclusiv de un pool de memorie.

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

Dacă contabilitatea kmem este dezactivată, nucleul poate folosi spațiu liber pe paginile plăcii pentru alte alocări. «

Controlerul de memorie Slab propus de Romano Gushchin în ultimul an a fost destul de promițător ca crește eficiența a utilizării plăcii, reduceți dimensiunea memoriei utilizate pentru placă cu 30-45% și reduce semnificativ consumul total de memorie a nucleului.

În plus, patch-urile implementate au indicat că Facebook folosește deja codul în producție pe serverele lor și a fost economisire ~ 650-700MB + pentru servere web front-end, cache de baze de date și servere DNS, printre alte premii.

Prin reducerea numărului de plăci nemobile, se observă un efect pozitiv și în domeniul reducerii fragmentării memoriei. Noul controler de memorie simplifică semnificativ codul pentru placa contabilă și nu necesită algoritmi complicați pentru crearea dinamică și ștergerea cache-urilor pentru fiecare grup c.

Toate cgroup-urile pentru memorie din noua implementare folosesc un set comun de cache-uri de slab, iar durata de viață a cache-urilor de slab nu mai este legată de durata de viață a constrângerilor de memorie setate prin cgroup.

Contabilitatea resurselor mai precisă implementată în noul controler al plăcii ar trebui să încarce teoretic CPU mai mult, dar în practică diferențele s-au dovedit a fi neglijabile.

În special noul driver de placă este folosit de câteva luni pe serverele Facebook în funcțiune care gestionează diferite tipuri de sarcini și până în prezent nu au fost detectate regresii semnificative.

Patch-ul conține câteva părți semi-independente, care își pot găsi și utilizarea în afara controlerului de memorie al plăcii:

  • API-ul Subpage Load, care poate fi folosit în viitor pentru a număra alte obiecte care nu au dimensiunea unei pagini, de exemplu alocările percpu
  • API-ul mem_cgroup_ptr, unde pointerii au fost numărați până la un memcg, poate fi reutilizat pentru repararea eficientă a altor obiecte, de exemplu pagecache.

În același timp, există o scădere semnificativă a consumului de memorie- Pe unele gazde a fost posibil să se economisească până la 1 GB de memorie, dar acest indicator depinde în mare măsură de natura sarcinii, dimensiunea totală a RAM, cantitatea de CPU și caracteristicile de lucru cu memoria.

În loc de a crea un set separat de kmem_caches pentru fiecare grup de memorie, se utilizează două seturi globale: setul rădăcină pentru atribuțiile necontabilizate și grupul rădăcină cgroup și al doilea set pentru toate celelalte atribuții. Acest lucru simplifică gestionarea pe viață a kmem_caches individuale.

În cele din urmă, dacă sunteți interesat să cunoașteți noul set de 19 patch-uri, acesta poate fi găsit în listă e-mailul kernel.


Lasă comentariul tău

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

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  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.