Facebook frigav patches, der forbedrer Slab-hukommelsescontrolleren i Linux

Roman Gushchin (en Facebook-softwareingeniør) register i linux kerne udviklingsliste, et sæt patches til pladedriverens hukommelsesallokeringsapplikation (en hukommelsescontroller).

Den nye controller er bemærkelsesværdig ved at flytte pladeregnskab fra hukommelsessideniveauet til kerneobjektniveauet, hvilket gør det muligt at dele pladesider på tværs af forskellige c-grupper, i stedet for at allokere separate pladecaches for hver c-gruppe.

Roman fandt, hvad han kalder en "meget alvorlig fejl" i den eksisterende pladehukommelsescontroller, der fører til lav udnyttelse i disse dage med cgroups.

"Den virkelige grund til, at det eksisterende design fører til lav pladeudnyttelse, er enkel: pladesider bruges udelukkende af én pulje af hukommelse.

Hvis der kun er nogle få allokeringer af en vis størrelse lavet af en cgroup, eller hvis der er nogle aktive objekter tilbage efter cgroup er fjernet, eller cgroup indeholder en enkelt-trådet applikation, der næsten ikke allokerer nogen kerneobjekter, men hver gang på en ny CPU: i alle disse tilfælde er udnyttelsen af ​​den resulterende plade meget lav.

Hvis kmem-regnskab er deaktiveret, kan kernen bruge den ledige plads på pladesiderne til andre tildelinger. «

Den foreslåede Slab-hukommelsescontroller af Romano Gushchin sidste år var ret lovende som giver mulighed for at øge effektiviteten af brugen af ​​pladen, reducere størrelsen af ​​brugt hukommelse for slab med 30-45% og reducere kernens samlede hukommelsesforbrug markant.

Derudover implementerede patches har peget at Facebook allerede bruger koden i produktion på sine servere og var sparer ~650-700MB+ til front-end webservere, databasecaching og DNS-servere, blandt andre priser.

Ved at reducere antallet af ikke-mobile plader observeres en positiv effekt også inden for hukommelsesfragmenteringsreduktion. Den nye hukommelsescontroller forenkler koden til regnskabspladen markant og det kræver ikke komplicerede algoritmer til dynamisk oprettelse og fjernelse af pladecacher for hver c-gruppe.

Alle hukommelses-cgroups i den nye implementering bruger et fælles sæt af pladecaches, og levetiden af ​​pladecaches er ikke længere bundet til levetiden for hukommelsesbegrænsninger, der er indstillet gennem cgroup.

Det mere nøjagtige ressourceregnskab implementeret i den nye pladedriver burde teoretisk set belaste CPU'en mere, men i praksis viste forskellene sig at være ubetydelige.

Især den nye pladedriver har været i brug i flere måneder på facebook-servere i drift, der håndterer forskellige typer belastninger, og indtil videre er der ikke påvist væsentlige regressioner.

Patchen indeholder et par semi-uafhængige dele, som også kan finde deres anvendelse uden for pladehukommelsescontrolleren:

  • Subpage Load API, som kan bruges i fremtiden til at tage højde for andre objekter uden sidestørrelse, for eksempel percpu-allokeringer
  • mem_cgroup_ptr API'et, hvor der tælles pointere til en memcg, kan genbruges til effektiv reparenting af andre objekter, f.eks. pagecache.

På samme tid der er et betydeligt fald i hukommelsesforbruget: på nogle værter var det muligt at spare op til 1 GB hukommelse, men dette flag afhænger i høj grad af belastningens art, den samlede størrelse af RAM, mængden af ​​CPU og egenskaberne ved at arbejde med hukommelse.

I stedet for at oprette et individuelt sæt kmem_caches for hver hukommelses-cgroup, bruges to globale puljer: rodpuljen til urapporterede og rodpuljecgroup-allokeringer og den anden pulje for alle andre allokeringer. Dette gør det muligt at forenkle levetidsstyringen af ​​individuelle kmem_caches.

Endelig, hvis du er interesseret i at kende det nye sæt med 19 patches, kan du finde på listen kernel mail.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.