Facebooks nye hukommelseshåndteringsmetode

Et af medlemmerne af udviklingsteamet for sociale netværk Facebook, Roman Gushchin, foreslået i udviklerens mailingliste et sæt af Linux kerne patchesrettet mod at forbedre hukommelsesstyring gennem implementering af en ny hukommelsesstyringscontroller - slab (pladehukommelsescontroller).

pladefordeling er en hukommelsesstyringsmekanisme designet til at allokere hukommelse mere effektivt og eliminere betydelig fragmentering. Grundlaget for denne algoritme er at gemme allokeret hukommelse, der indeholder et objekt af en bestemt type, og genbruge denne hukommelse, næste gang den tildeles til et objekt af samme type. Denne teknik blev først introduceret i SunOS af Jeff Bonwick og er nu meget brugt i kernerne i mange Unix-operativsystemer, inklusive FreeBSD og Linux.

Den nye controller er baseret på at flytte pladeregnskab fra hukommelsessideniveauet til kerneobjektniveauet, hvilket gør det muligt at dele en pladeside i forskellige cgroups, i stedet for at allokere en separat cache for hver cgroup.

Baseret på testresultaterne følger det, at den foreslåede hukommelseshåndteringsmetode tillader stigning effektivitet ved hjælp af plade til 45%, og vil også reducere OS-kernens samlede hukommelsesforbrug. Ved at reducere antallet af sider, der er allokeret til plade, reduceres hukommelsesfragmenteringen som helhed, hvilket ikke kan andet end at påvirke systemets ydeevne.

Den nye controller har været testet på produktions-Facebook-servere i flere måneder, og indtil videre kan denne test kaldes vellykket: uden tab i ydeevne og ingen stigning i antallet af fejl er der blevet bemærket et klart fald i hukommelsesforbruget - på nogle servere op til 1 GB. Dette tal er ret subjektivt, for eksempel viste tidligere test lidt lavere resultater:

  • 650-700 MB på web-frontend
  • 750-800 MB på server med database cache
  • 700 MB på DNS-server

>>> Forfatterens side på GitHub


>>> Tidlige testresultater

Kilde: linux.org.ru

Tilføj en kommentar