Facebookova nova metoda upravljanja memorijom

Jedan od članova tima za razvoj društvenih mreža Facebook, Roman Gushchin, predložio je na mailing listi programera skup Linux kernel zakrpeusmjeren na poboljšanje upravljanja memorijom kroz implementaciju novog kontrolera za upravljanje memorijom - ploča (kontrolor memorije ploča).

distribucija ploča je mehanizam za upravljanje memorijom dizajniran da efikasnije dodijeli memoriju i eliminira značajnu fragmentaciju. Osnova ovog algoritma je pohranjivanje dodijeljene memorije koja sadrži objekt određenog tipa i ponovno korištenje te memorije sljedeći put kada bude dodijeljena objektu istog tipa. Ovu tehniku ​​je u SunOS prvi uveo Jeff Bonwick, a sada se široko koristi u jezgrima mnogih Unix operativnih sistema, uključujući FreeBSD i Linux.

Novi kontroler je baziran na premeštanju obračuna ploča sa nivoa memorijske stranice na nivo objekta kernela, što omogućava deljenje jedne ploče stranice u različitim cgrupama, umesto dodeljivanja zasebne keš memorije za svaku cgrupu.

Na osnovu rezultata testiranja, proizilazi da predloženi metod upravljanja memorijom omogućava povećanje efikasnost koristeći ploču do 45%, a također će smanjiti ukupnu potrošnju memorije OS kernela. Također, smanjenjem broja stranica dodijeljenih za ploču, smanjuje se fragmentacija memorije u cjelini, što ne može a da ne utiče na performanse sistema.

Novi kontroler je nekoliko mjeseci testiran na proizvodnim Facebook serverima i do sada se ovo testiranje može nazvati uspješnim: bez gubitka u performansama i bez povećanja broja grešaka, primjećen je jasan pad potrošnje memorije - na nekim serveri do 1GB. Ovaj broj je prilično subjektivan, na primjer, raniji testovi su pokazali nešto niže rezultate:

  • 650-700 MB na web frontendu
  • 750-800 MB na serveru sa kešom baze podataka
  • 700 MB na DNS serveru

>>> Autorska stranica na GitHubu


>>> Rani rezultati testova

izvor: linux.org.ru

Dodajte komentar