Roman Guščin () iz Facebooka na poštnem seznamu razvijalcev jedra Linux niz popravkov, ki implementirajo nov krmilnik dodeljevanja pomnilnika (krmilnik pomnilnika slab). Novi krmilnik je znan po tem, da je obračunavanje slabov premaknil z ravni pomnilniških strani na raven objektov jedra, kar omogoča skupno rabo strani slabov med različnimi kontrolnimi skupinami, namesto da bi se za vsako kontrolno skupino dodeljevali ločeni predpomnilniki slabov.
Predlagani pristop izboljša izkoriščenost slabov, zmanjša velikost pomnilnika slabov za 30–45 % in znatno zmanjša skupno porabo pomnilnika jedra. Zmanjšanje števila nepremičnih slabov ima tudi pozitiven učinek na zmanjšanje fragmentacije pomnilnika. Novi krmilnik pomnilnika znatno poenostavi kodo za obračunavanje slabov in odpravlja potrebo po kompleksnih algoritmih za dinamično ustvarjanje in brisanje predpomnilnikov slabov za vsako kontrolno skupino. Vse kontrolne skupine pomnilnika v novi implementaciji si delijo skupen nabor predpomnilnikov slabov, življenjska doba predpomnilnikov slabov pa ni več vezana na življenjsko dobo tistih, ki so vzpostavljeni prek kontrolne skupine. glede porabe pomnilnika.
Natančnejše obračunavanje virov, implementirano v novem krmilniku slabov, bi teoretično moralo povečati izkoriščenost procesorja, vendar so se v praksi razlike izkazale za nepomembne. Natančneje, novi krmilnik slabov se že več mesecev uporablja na produkcijskih strežnikih Facebooka, ki obdelujejo različne vrste delovnih obremenitev, in doslej ni bilo opaziti nobenih pomembnih regresij. Hkrati je bilo opaženo znatno zmanjšanje porabe pomnilnika – na nekaterih gostiteljih je bilo prihranjenih do 1 GB pomnilnika, vendar se ta številka zelo razlikuje glede na naravo delovne obremenitve, skupno velikost RAM-a, število procesorjev in funkcije upravljanja pomnilnika. Predhodno izvedeni testi Zmanjšanje porabe pomnilnika za 650–700 MB (42 % osnovnega pomnilnika) na spletnem vmesniku, 750–800 MB (35 %) na strežniku s predpomnilnikom DBMS in 700 MB (36 %) na strežniku DNS.
Vir: opennet.ru
