Facebook je predlagal nov mehanizem za upravljanje slabega pomnilnika za jedro Linuxa

Roman Guščin (Roman Guščin) s Facebooka objavljeno na poštnem seznamu razvijalcev jedra Linuxa komplet popravkov z implementacijo novega krmilnika za dodeljevanje pomnilnika plošča (pomnilniški krmilnik plošče). Novi krmilnik je znan po premikanju obračunavanja plošč z ravni pomnilniške strani na raven objekta jedra, kar omogoča skupno rabo strani plošč v različnih skupinah c, namesto da bi za vsako skupino c dodeljevali ločene predpomnilnike plošč.

Predlagani pristop omogoča povečanje učinkovitosti uporabe slaba, zmanjšanje velikosti pomnilnika, uporabljenega za slab, za 30-45 % in znatno zmanjšanje celotne porabe pomnilnika jedra. Z zmanjšanjem števila nepremičnih plošč je pozitiven učinek tudi pri zmanjševanju fragmentacije spomina. Novi krmilnik pomnilnika znatno poenostavlja kodo za obračunavanje plošč in ne zahteva uporabe zapletenih algoritmov za dinamično ustvarjanje in brisanje predpomnilnikov plošč za vsako cgroup. Vse pomnilniške skupine cgroup v novi izvedbi uporabljajo skupen nabor predpomnilnikov plošč in življenjska doba predpomnilnikov plošč ni več vezana na življenjsko dobo tistih, ki so nameščeni prek skupine ccgroup omejitve o uporabi pomnilnika.

Natančnejše obračunavanje virov, implementirano v novem krmilniku plošč, bi moralo teoretično bolj obremeniti CPU, vendar so se v praksi razlike izkazale za nepomembne. Zlasti novi krmilnik plošč se že nekaj mesecev uporablja na produkcijskih strežnikih Facebook, ki obravnavajo različne vrste delovnih obremenitev, in še niso bile ugotovljene opazne regresije. Hkrati se znatno zmanjša poraba pomnilnika - na nekaterih gostiteljih je bilo mogoče prihraniti do 1 GB pomnilnika, vendar je ta indikator močno odvisen od narave obremenitve, skupne velikosti RAM-a, števila procesorjev in značilnosti dela s pomnilnikom. Prejšnji testi pokazala zmanjšanje porabe pomnilnika za 650-700 MB (42 % slabega pomnilnika) na spletnem frontendu, 750-800 MB (35 %) na strežniku s predpomnilnikom DBMS in 700 MB (36 %) na DNS strežniku.

Vir: opennet.ru

Dodaj komentar