Noua metodă de gestionare a memoriei de la Facebook

Unul dintre membrii echipei de dezvoltare a rețelelor sociale Facebook, Roman Gușchin, a propus în lista de corespondență a dezvoltatorilor un set de Patch-uri pentru nucleul Linuxcare vizează îmbunătățirea managementului memoriei prin implementarea unui nou controler de gestionare a memoriei - placă (controler de memorie al plăcii).

distribuția plăcii este un mecanism de gestionare a memoriei conceput pentru a aloca memoria mai eficient și pentru a elimina fragmentarea semnificativă. Baza acestui algoritm este stocarea memoriei alocate care conține un obiect de un anumit tip și reutilizarea acelei memorie data viitoare când este alocată pentru un obiect de același tip. Această tehnică a fost introdusă pentru prima dată în SunOS de Jeff Bonwick și este acum utilizată pe scară largă în nucleele multor sisteme de operare Unix, inclusiv FreeBSD și Linux.

Noul controler se bazează pe mutarea contabilității slab de la nivelul paginii de memorie la nivelul obiectului kernel, ceea ce face posibilă partajarea unei pagini slab în diferite cgroups, în loc să aloce un cache separat pentru fiecare cgroup.

Pe baza rezultatelor testelor, rezultă că metoda de gestionare a memoriei propusă permite creșterea eficacitate folosind placa la 45%și va reduce, de asemenea, consumul total de memorie al nucleului sistemului de operare. De asemenea, prin reducerea numărului de pagini alocate pentru slab, fragmentarea memoriei în ansamblu este redusă, ceea ce nu poate decât să afecteze performanța sistemului.

Noul controler a fost testat pe serverele Facebook de producție de câteva luni, iar până acum această testare poate fi numită reușită: fără pierderi de performanță și fără creștere a numărului de erori, s-a observat o scădere clară a consumului de memorie - pe unele servere de până la 1 GB. Acest număr este destul de subiectiv, de exemplu, testele anterioare au arătat rezultate puțin mai mici:

  • 650-700 MB pe interfața web
  • 750-800 MB pe server cu cache de bază de date
  • 700 MB pe serverul DNS

>>> Pagina autorului pe GitHub


>>> Rezultatele testelor timpurii

Sursa: linux.org.ru

Adauga un comentariu