Facebook frigav patches, der forbedrer Slab-hukommelsescontrolleren i Linux

Roman Gushchin (en Facebook-softwareingeniør) register i Linux-kerneudviklingsliste, et sæt patches til applikationen til hukommelseskortlægning af pladecontroller (en hukommelsescontroller).

Den nye controller er bemærkelsesværdig ved at flytte pladebogføring fra hukommelsessideniveauet til kernenobjektniveauet, hvilket gør det muligt at dele pladesider på tværs af forskellige grupper c snarere end at tildele separate pladecacher til hver gruppe c.

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

”Den virkelige årsag til, at det eksisterende design fører til lav pladebrug, er enkel: pladesider bruges udelukkende af en hukommelsespulje.

Hvis der kun er få tildelinger af en bestemt størrelse foretaget af en cgroup, eller hvis der er nogle aktive objekter tilbage, efter at cgroup er fjernet, eller cgroup indeholder en enkelt gevindapplikation, der knap tildeler nogen kerneobjekter, men hver gang en ny CPU: i alle disse tilfælde er den resulterende pladeanvendelse meget lav.

Hvis kmem-regnskab er deaktiveret, kan kernen bruge ledig plads på pladesider til andre tildelinger. «

Den foreslåede Slab-hukommelsescontroller af Romano Gushchin i det forløbne år var ret lovende som øger effektiviteten af brugen af ​​pladen, reducere størrelsen på den anvendte hukommelse til plade med 30-45% og reducerer det samlede kernelagereforbrug betydeligt.

Derudover de implementerede programrettelser har angivet at Facebook allerede bruger koden i produktion på deres servere og var gemme ~ 650-700MB + til front-end webservere, databasecaching og DNS-servere, blandt andre priser.

Ved at reducere antallet af ikke-mobile plader observeres også en positiv effekt inden for reduktion af hukommelsesfragmentering. Ny hukommelsescontroller forenkler koden til regnskabsplade betydeligt og kræver ikke komplicerede algoritmer til dynamisk oprettelse og sletning af pladecacher for hver gruppe c.

Alle cgroups til hukommelse i den nye implementering bruger et fælles sæt pladecacher, og levetid for pladecacher er ikke længere bundet til levetiden for hukommelsesbegrænsninger, der er indstillet gennem cgroup.

Den mere præcise ressourceregnskab implementeret i den nye pladecontroller skulle teoretisk indlæse CPU'en mere, men i praksis viste forskellene sig at være ubetydelige.

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

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

  • Subpage Load API, som kan bruges i fremtiden til at tælle andre objekter, der ikke er størrelsen på en side, for eksempel percpu-allokeringer
  • Mem_cgroup_ptr API, hvor der tælles henvisninger til en memcg, kan genbruges til effektiv genoprettelse af andre objekter, f.eks. Sidecache.

På samme tid der er et markant fald i hukommelsesforbruget- På nogle værter var det muligt at spare op til 1 GB hukommelse, men denne indikator 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 separat sæt kmem_caches til hver hukommelsesgruppe bruges to globale sæt: rodsættet for ikke-regnskabsmæssige og rodgruppens gruppetildelinger og det andet sæt til alle andre tildelinger. Dette gør det muligt at forenkle levetidsstyring af individuelle kmem_caches.

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


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

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.