Roman Gushchin () a Facebook társaságtól a Linux kernel fejlesztői levelezőlistáján új memóriaelosztó vezérlő implementációs patch-eket javasol (slab memória vezérlő). Az új vezérlő kiemelkedő, mivel áthelyezi a slab nyilvántartást a memóriastrukturák szintjéről a kernel objektumok szintjére, ami lehetővé teszi a slab oldalak közös használatát különböző cgroup-k között, ahelyett, hogy minden egyes cgroup számára külön slab cache-t allokálnánk.
A javasolt megoldás lehetővé teszi a slab használatának hatékonyságának növelését, 30-45%-kal csökkenti a slab memória méretét, és jelentősen csökkenti a kernel által használt memória összmennyiségét. A nem mozgatható slab mennyiségének csökkentése szintén kedvező hatással van a memóriafragmentáció csökkentésére. Az új memória vezérlő jelentősen egyszerűsíti a slab nyilvántartási kódot, és nem igényli bonyolult algoritmusok alkalmazását a slab cache-ek dinamikus létrehozásához és törléséhez minden cgroup esetén. Az új implementációban az összes memória cgroup közös slab cache-t használ, és a slab cache-ek életciklusa már nem kötődik a cgroup által beállított élettartamhoz. a memóriahasználatra.
Az új slab vezérlő által megvalósított erőforrás-nyilvántartás elméletileg jobban terheli a CPU-t, de a gyakorlatban a különbségek nem voltak jelentősek. Különösen, az új slab vezérlőt már több mint néhány hónapja használják a Facebook munkahelyi szerverein, amelyek különböző terheléseket kezelnek, és nem tapasztaltak számottevő regressziókat. Ugyanakkor jelentős memória-megtakarítást figyeltek meg – néhány hoston akár 1 GB memóriát is megspóroltak, de ez a szám erősen függ a terheléstől, a RAM összes méretétől, a CPU-k számától és a memóriahasználat sajátosságaitól. Korábban végzett tesztek a memóriafogyasztás csökkentése 650-700 MB (42% a slab memória összefüggésében) a web frontendnél, 750-800 MB (35%) az adatbázis cache szerverén, és 700 MB (36%) a DNS szerveren.
Forrás: opennet.ru
