Nová metóda správy pamäte od Facebooku

Jeden z členov tímu vývoja sociálnej siete Facebook, Roman Guščin, navrhol v mailingliste pre vývojárov sadu patchov pre jadro Linux, zameraných na zlepšenie správy pamäte implementovaním nového kontroléra správy pamäte — slab (slab memory controller).

Rozdelenie slab –– je mechanizmus správy pamäte určený na efektívnejšie rozdeľovanie pamäte a odstránenie významnej fragmentácie. Základom tohto algoritmu je uchovávanie pridelené pamäte, obsahujúcej objekt určitého typu, a opätovné používanie tejto pamäte pri ďalšom prerozdeľovaní pre objekt toho istého typu. Táto metóda bola prvýkrát zavedená v SunOS Jeffom Bonvickom a teraz sa široko používa v jadrách mnohých operačných systémov Unix, vrátane FreeBSD a Linux.

Základ nového kontroléra spočíva v prenose evidencie slab z úrovne strán pamäte na úroveň objektov jadra, čo poskytuje možnosť zdieľania jednej slab-stránky v rôznych cgroup, namiesto prerozdeľovania samostatného cache pre každú cgroup.

Podľa výsledkov testov sa ukazuje, že navrhovaná metóda správy pamäte dokáže zvýšiť efektivitu využívania slab o 45%, a tiež zníži celkovú spotrebu pamäte jadrom OS. Rovnako, vďaka zníženiu počtu pridelených strán pod slab, sa znižuje fragmentácia pamäte ako celku, čo nemôže nepriaznivo ovplyvniť rýchlosť systému.

Nový kontrolér sa už niekoľko mesiacov testuje na pracovných serveroch Facebooku, a doterajšie testovanie môžeme nazvať úspešným: pri absencii strát v rýchlosti a náraste počtu chýb bolo zaznamenané jasne znížené spotreba pamäte — na niektorých serveroch až 1 GB. Toto číslo je dosť subjektívne, tak napríklad predtým vykonané testy ukázali trochu nižšie výsledky:

  • 650-700 MB na webovom frontende
  • 750-800 MB na serveri s cache databázy
  • 700 MB na DNS serveri

>>> Stránka autora na GitHub


>>> Výsledky skorých testov

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster