Facebook a propus un nou mecanism de gestionare a memoriei slab pentru nucleul Linux

Roman Gushchin (Roman Gușchin) de pe Facebook a publicat pe lista de corespondență a dezvoltatorilor de kernel Linux un set de patch-uri cu implementarea unui nou controler de alocare a memoriei dală (controler de memorie slab). Noul controler este remarcabil pentru mutarea contabilității slab de la nivelul paginii de memorie la nivelul obiectului kernel, ceea ce face posibilă partajarea paginilor slab în diferite cgroup-uri, în loc să aloce cache-uri slab separate pentru fiecare cgroup.

Abordarea propusă face posibilă creșterea eficienței utilizării plăcii, reducerea dimensiunii memoriei utilizate pentru slab cu 30-45% și reducerea semnificativă a consumului total de memorie al nucleului. Prin reducerea numărului de plăci nemobile, există și un efect pozitiv în reducerea fragmentării memoriei. Noul controler de memorie simplifică semnificativ codul de contabilizare a plăcilor și nu necesită utilizarea unor algoritmi complicati pentru crearea și ștergerea dinamică a memoriei cache pentru fiecare cgroup. Toate cgroup-urile de memorie din noua implementare folosesc un set comun de cache-uri slab, iar durata de viață a cache-urilor slab nu mai este legată de durata de viață a celor instalate prin cgroup restricții privind utilizarea memoriei.

Contabilitatea resurselor mai precisă implementată în noul controler al plăcii ar trebui, teoretic, să încarce procesorul mai mult, dar în practică diferențele s-au dovedit a fi nesemnificative. În special, noul controler de plăci a fost folosit de câteva luni pe serverele Facebook de producție care gestionează diferite tipuri de încărcături de lucru și nu au fost încă identificate regresii vizibile. În același timp, există o reducere semnificativă a consumului de memorie - pe unele gazde a fost posibil să economisiți până la 1 GB de memorie, dar acest indicator depinde foarte mult de natura încărcării, dimensiunea totală a memoriei RAM, numărul de procesoare. și caracteristicile lucrului cu memoria. Testele anterioare a arătat reducerea consumului de memorie cu 650-700 MB (42% din memorie slab) pe front-end web, 750-800 MB (35%) pe serverul cu cache DBMS și 700 MB (36%) pe serverul DNS.

Sursa: opennet.ru

Adauga un comentariu