Jeden z členů vývojového týmu sociální sítě Facebook, Roman Gušin, navrhl v mailing listu vývojářů sadu patchů pro jádro Linuxu, zaměřených na zlepšení výkonu paměti prostřednictvím realizace nového řadiče správy paměti — slab (slab memory controller).
Distribuce slab –– je mechanismus správy paměti navržený pro efektivnější distribuci paměti a eliminaci významné fragmentace. Základem tohoto algoritmu je uchování alokované paměti obsahující objekt určitého typu a opětovné použití této paměti při následující alokaci pro objekt téhož typu. Tato metoda byla poprvé zavedena v SunOS Jeffem Bonvickem a nyní je široce používána v jádrech mnoha operačních systémů Unix, včetně FreeBSD a Linuxu.
Na základě nového řadiče leží přenos sledování slab z úrovně stránek paměti na úroveň objektů jádra, což umožňuje sdílení jedné slab-stránky v různých cgroups, místo alokace samostatné cache pro každou cgroup.
Z výsledků testování vyplývá, že navržená metoda správy paměti umožňuje zvýšit efektivitu využívání slab až o 45%, a také sníží celkovou spotřebu paměti jádrem OS. Také díky zmenšení počtu alokovaných slab stránek dochází k úpravě fragmentace paměti v celku, což nemůže ale neovlivnit výkonnost systému.
Nový řadič již několik měsíců testován na pracovních serverech Facebooku a dosavadní testování lze označit za úspěšné: při absenci ztrát ve výkonnosti a zvýšení počtu chybných hlášení bylo pozorováno jasné snížení spotřeby paměti — na některých serverech až 1 GB. Toto číslo je spíše subjektivní, jak ukazují například dříve provedené testy, které vykázaly mírně nižší výsledky:
- 650-700 MB na webovém front-endu
- 750-800 MB na serveru s datovým cache
- 700 MB na DNS serveru
Zdroj: linux.org.ru
