Facebook je objavio zakrpe koje poboljšavaju Slab kontroler memorije u Linuxu

Roman Gushchin (Facebook softverski inženjer) registar na popisu za razvoj jezgre Linuxa, skup zakrpa za aplikaciju mapiranja memorije kontrolera ploče (memorijski kontroler).

Novi kontroler je izvanredan premještanjem računovodstva ploče s razine memorijskih stranica na razinu objekata jezgre, što omogućuje dijeljenje stranica ploče u različitim skupinama c, umjesto da se za svaku skupinu c dodijele zasebni predmemorijski objekti c.

Roman je pronašao ono što on naziva "vrlo ozbiljnom greškom" u postojećem memorijskom kontroleru ploče što dovodi do slabe iskorištenosti ovih dana s cgroups.

„Pravi razlog zbog kojeg postojeći dizajn dovodi do slabe iskorištenosti ploče je jednostavan: stranice ploča koristi isključivo memorijski bazen.

Ako cgroup izvrši samo nekoliko dodjela određene veličine ili ako je nakon uklanjanja cgroupa ostalo nekoliko aktivnih objekata ili cgroup sadrži jednu navojnu aplikaciju koja jedva dodjeljuje bilo koji objekt jezgre, ali svaki put na novom CPU: u svim tim slučajevima rezultirajuća iskorištenost ploče vrlo je mala.

Ako je onemogućeno računovodstvo kmem, kernel može koristiti slobodan prostor na stranicama ploče za druga izdvajanja. «

Predloženi Slab memorijski kontroler Romana Gushchina u prošloj godini bio je prilično obećavajući kao povećava učinkovitost upotrebe ploče, smanjiti veličinu korištene memorije za ploču za 30-45% i značajno smanjuju ukupnu potrošnju memorije jezgre.

Osim toga, primijenjene zakrpe su naznačile da Facebook već koristi kod u proizvodnji na svojim poslužiteljima i da je bio ušteda ~ 650-700 MB + za prednje web poslužitelje, predmemoriranje baze podataka i DNS poslužitelji, između ostalih nagrada.

Smanjivanjem broja pokretnih ploča, pozitivan učinak uočava se i na polju smanjenja fragmentacije memorije. Novi memorijski kontroler značajno pojednostavljuje kôd za obračun ploče i ne zahtijeva složene algoritme za dinamičko stvaranje i brisanje predmemorija ploča za svaku skupinu c.

Sve cgroups za memoriju u novoj implementaciji koriste zajednički skup predmemorija ploča, a životni vijek predmemorija ploča više nije vezan za životni vijek memorijskih ograničenja postavljenih kroz cgroup.

Preciznije računovodstvo resursa implementirano u novom kontroleru ploče trebalo bi teoretski više opteretiti CPU, ali u praksi se pokazalo da su razlike zanemarive.

Osobito novi upravljački program ploče koristi se već nekoliko mjeseci na Facebook poslužiteljima u radu s različitim vrstama tereta i do sada nisu otkrivene značajnije regresije.

Flaster sadrži nekoliko polusamostalnih dijelova, koji se također mogu koristiti izvan memorijskog kontrolera ploče:

  • API za učitavanje podstranica, koji se u budućnosti može koristiti za brojanje drugih objekata koji nisu veličine stranice, na primjer alokacija percpu
  • API mem_cgroup_ptr, gdje se pokazivači broje do memcg, može se ponovno upotrijebiti za učinkovito preusmjeravanje drugih objekata, npr. Predmemorije stranica.

U isto vrijeme, dolazi do značajnog smanjenja potrošnje memorije- Na nekim je domaćinima bilo moguće uštedjeti do 1 GB memorije, ali ovaj pokazatelj uvelike ovisi o prirodi tereta, ukupna veličina RAM-a, količina CPU-a i karakteristike rada s memorijom.

Umjesto stvaranja zasebnog skupa kmem_cacheva za svaku memorijsku cgroup, koriste se dva globalna skupa: korijenski skup za neevidentirane i korijenske grupe cgroup zadataka i drugi skup za sve ostale dodjele. To omogućuje pojednostavljivanje upravljanja životnim vijekom pojedinačnih kmem_cacheva.

Napokon, ako vas zanima novi set od 19 zakrpa, možete ga pronaći na popisu kernel mail.


Sadržaj članka pridržava se naših načela urednička etika. Da biste prijavili pogrešku, kliknite ovdje.

Budite prvi koji će komentirati

Ostavite svoj komentar

Vaša email adresa neće biti objavljen.

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

bool (istina)