A közösségi hálózat fejlesztőcsapatának egyik tagja Facebook, Roman Guccin, a fejlesztők hírlevelében javasolt egy Linux kernelhez készült javításcsomagot, amely a memória kezelésének javítására irányul, egy új vezérlő implementálásával — slab (slab memória vezérlő).
A slab elosztás –– egy memóriakezelési mechanizmus, amely a memória hatékonyabb elosztására és a jelentős töredezett memória megszüntetésére szolgál. Az algoritmus alapja az előreallokált memória megtartása, amely egy meghatározott típusú objektumot tartalmaz, és ennek az emlékezetnek a következő allokálásakor történő újrahasználata a ugyanazon típusú objektumok számára. Ezt a módszert először Jeff Bonwick vezette be a SunOS-ban, és ma már széles körben használják számos Unix operációs rendszer kernelében, beleértve a FreeBSD-t és a Linux-ot.
Az új vezérlő alapja, hogy a slab nyilvántartását a memória oldalszintjéről a kernel objektumszintjére helyezik át, amely lehetővé teszi, hogy egy slab-oldalt különböző cgroup-okban osszanak meg, ahelyett, hogy minden cgroup számára külön gyorsítótárat osztanának ki.
A teszteredmények szerint a javasolt memória-menedzsment módszer lehetővé teszi a hatékonyság növelését a slab akár 45%, valamint csökkenti az operációs rendszer kernelének összes memóriafogyasztását. Továbbá a slab oldalak számának csökkentésével a memória töredezettsége is csökken, ami pozitívan hat a rendszer teljesítményére.
Az új vezérlőt már néhány hónapja tesztelik a Facebook munkaszerverein, és a tesztelés eddig sikeresnek mondható: a teljesítmény csökkenése és a hibák számának növekedése nélkül észlelhető volt a memóriafogyasztás jelentős csökkenése — néhány szerveren akár 1 GB-ot is. Ez a szám elég szubjektív, például a korábban végzett tesztek kissé kisebb eredményeket mutattak:
- 650-700 MB a webes frontenden
- 750-800 MB az adatbázis gyorsítótárával rendelkező szerveren
- 700 MB a DNS-szerveren
>>> A korai tesztek eredményei
Forrás: linux.org.ru
