Facebooks nye minnebehandlingsmetode

Et av medlemmene i utviklingsteamet for sosiale nettverk Facebook , Roman Gushchin, foreslått i utviklerens e-postliste et sett med Linux-kjerneoppdateringerrettet mot å forbedre minneadministrasjon gjennom implementering av en ny minnestyringskontroller - slab (plate minnekontroller).

platefordeling er en minnestyringsmekanisme designet for å allokere minne mer effektivt og eliminere betydelig fragmentering. Grunnlaget for denne algoritmen er å lagre tildelt minne som inneholder et objekt av en bestemt type og gjenbruke det minnet neste gang det blir tildelt for et objekt av samme type. Denne teknikken ble først introdusert i SunOS av Jeff Bonwick og er nå mye brukt i kjernene til mange Unix-operativsystemer, inkludert FreeBSD og Linux.

Den nye kontrolleren er basert på å flytte skiveregnskap fra minnesidenivå til kjerneobjektnivå, noe som gjør det mulig å dele én skiveside i forskjellige cgroups, i stedet for å tildele en separat cache for hver cgroup.

Basert på testresultatene, følger det at den foreslåtte minnebehandlingsmetoden tillater økning effektivitet ved hjelp av plate til 45%, og vil også redusere det totale minneforbruket til OS-kjernen. Ved å redusere antall sider som er tildelt for plate, reduseres minnefragmenteringen som helhet, noe som ikke kan annet enn å påvirke ytelsen til systemet.

Den nye kontrolleren har blitt testet på produksjons-Facebook-servere i flere måneder, og så langt kan denne testingen kalles vellykket: uten tap i ytelse og ingen økning i antall feil, har man lagt merke til en klar nedgang i minneforbruk - på enkelte servere opptil 1 GB. Dette tallet er ganske subjektivt, for eksempel viste tidligere tester litt lavere resultater:

  • 650-700 MB på nettgrensesnittet
  • 750-800 MB på server med databasebuffer
  • 700 MB på DNS-server

>>> Forfatterens side på GitHub


>>> Tidlige testresultater

Kilde: linux.org.ru

Legg til en kommentar