Facebook har foreslået en ny styringsmekanisme for pladehukommelse til Linux-kernen

Roman Gushchin (Roman Gushchin) fra Facebook опубликовал på mailinglisten for Linux-kerneudviklere et sæt patches med implementering af en ny hukommelsesallokeringscontroller plade (pladehukommelsescontroller). Den nye controller er bemærkelsesværdig ved at flytte pladeregnskab fra hukommelsessideniveauet til kerneobjektniveauet, hvilket gør det muligt at dele pladesider i forskellige cgroups, i stedet for at allokere separate pladecaches for hver cgroup.

Den foreslåede tilgang gør det muligt at øge effektiviteten af ​​at bruge slab, reducere størrelsen af ​​den hukommelse, der bruges til slab, med 30-45% og væsentligt reducere kernens samlede hukommelsesforbrug. Ved at reducere antallet af ikke-flytbare plader er der også en positiv effekt i at reducere hukommelsesfragmentering. Den nye hukommelsescontroller forenkler væsentligt koden til at tage højde for plader og kræver ikke brug af komplicerede algoritmer til dynamisk at skabe og slette plader-caches for hver cgroup. Alle hukommelses-cgroups i den nye implementering bruger et fælles sæt af pladecaches, og levetiden for pladecaches er ikke længere bundet til levetiden for dem, der er installeret gennem cgroup restriktioner på hukommelsesbrug.

Det mere nøjagtige ressourceregnskab implementeret i den nye pladecontroller skulle teoretisk set belaste CPU'en mere, men i praksis viste forskellene sig at være ubetydelige. Især den nye pladecontroller har været brugt i flere måneder på Facebook-produktionsservere, der håndterer forskellige typer arbejdsbyrder, og der er endnu ikke identificeret nogen mærkbare regressioner. Samtidig er der en betydelig reduktion i hukommelsesforbruget - på nogle værter var det muligt at spare op til 1 GB hukommelse, men denne indikator afhænger meget af belastningens art, den samlede størrelse af RAM, antallet af CPU'er og funktionerne ved at arbejde med hukommelse. Tidligere tests show reduktion af hukommelsesforbruget med 650-700 MB (42 % af pladehukommelsen) på webfronten, 750-800 MB (35 %) på serveren med en DBMS-cache og 700 MB (36 %) på DNS-serveren.

Kilde: opennet.ru

Tilføj en kommentar