Roman Gushchin () de la compania Facebook în lista de distribuție a dezvoltatorilor nucleului Linux, un set de patch-uri pentru implementarea unui nou controler de distribuție a memoriei (controler de memorie slab). Noua soluție se remarcă prin transferul contabilizării slab de la nivelul paginilor de memorie la nivelul obiectelor nucleului, ceea ce permite partajarea paginilor slab între diferite cgroup-uri, în locul alocării unor cache-uri slab separate pentru fiecare cgroup.
Abordarea propusă permite creșterea eficienței utilizării slab, reducând cu 30-45% dimensiunea memoriei utilizate pentru slab și diminuând semnificativ consumul general de memorie al nucleului. Prin reducerea numărului de slab-uri nealocate, se observă de asemenea un efect pozitiv în domeniul reducerii fragmentării memoriei. Noul controler de memorie simplifică semnificativ codul pentru contabilizarea slab și nu necesită aplicarea unor algoritmi complexe pentru crearea și ștergerea dinamică a cache-urilor slab pentru fiecare cgroup. Toate cgroup-urile pentru memorie din această implementare utilizează un set comun de cache-uri slab, iar timpul de viață al cache-urilor slab nu mai este legat de durata de viață stabilită prin cgroup pentru utilizarea memoriei.
Contabilizarea resurselor realizată în noul controler slab ar trebui teoretic să încarce mai mult CPU-ul, dar în practică diferențele s-au dovedit a fi nesemnificative. În special, noul controler slab este utilizat de câteva luni pe serverele de lucru Facebook, gestionând diferite tipuri de sarcini, iar regresii semnificative nu au fost identificate până acum. De asemenea, s-a observat o reducere semnificativă a consumului de memorie – pe unele găzduiri s-a reușit economisirea de până la 1GB de memorie, însă acest indicator depinde mult de natura sarcinii, dimensiunea totală a RAM-ului, numărul de CPU-uri și particularitățile lucrului cu memoria. Testele anterioare au arătat o reducere a consumului de memorie de 650-700 MB (42% din memoria slab) pe front-end-ul web, 750-800 MB (35%) pe serverul cu cache-ul SGBD și 700 MB (36%) pe serverul DNS.
Sursa: opennet.ro
