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

Roman Gushchin (Facebook softverski inženjer) registar na listi razvoja Linux kernela, skup zakrpa za aplikaciju mapiranja memorije kontrolera ploče (memorijski kontroler).

Novi kontroler je izvanredan premještanjem računovodstva ploče s razine memorijske stranice na razinu objekta jezgre, omogućavajući dijeljenje stranica s pločama u različitim grupama c, umjesto da se dodijeljuju odvojene predmemorije ploča za svaku grupu 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 današnjih grupa.

„Pravi razlog zbog kojeg postojeći dizajn dovodi do slabe upotrebe ploča 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 je vrlo mala.

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

Predloženi kontroler memorijske ploče Romana Gushchina u proteklih godinu dana bio je prilično obećavajući povećava efikasnost upotrebe ploče, smanjiti veličinu korištene memorije za ploču za 30-45% i značajno smanjuju ukupnu potrošnju memorije jezgra.

Takođe, primijenjene zakrpe su naznačile da Facebook već koristi kod u proizvodnji na svojim serverima i da je bio ušteda ~ 650-700MB + za prednje web servere, predmemoriranje baze podataka i DNS serveri, između ostalih nagrada.

Smanjivanjem broja pokretnih ploča, pozitivan efekat se uočava i na polju smanjenja fragmentacije memorije. Novi memorijski kontroler značajno pojednostavljuje kod za računovodstvenu ploču i ne zahtijeva složene algoritme za dinamičko stvaranje i brisanje predmemorija ploča za svaku grupu 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 vijek trajanja 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.

Posebno novi drajver ploče koristi se nekoliko mjeseci na Facebook serverima u radu s različitim vrstama tereta i do sada nisu otkrivene značajnije regresije.

Zakrpa sadrži nekoliko polunezavisnih dijelova, koji također mogu pronaći svoju upotrebu izvan memorijskog kontrolera ploče:

  • API učitavanja podstranica, koji se u budućnosti može koristiti za brojanje drugih objekata koji nisu veličine stranice, na primjer percpu alokacije
  • API mem_cgroup_ptr, gdje se pokazivači broje do memcg, može se ponovo koristiti za efikasno ponovno slanje drugih objekata, na primjer predmemorija stranica.

Istovremeno, dolazi do značajnog smanjenja potrošnje memorije- Na nekim je domaćinima bilo moguće uštedjeti do 1 GB memorije, ali ovaj indikator u velikoj mjeri 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 set za nebrojene i korijenski skup cgroup dodjela, a drugi skup za sve ostale dodjele. To omogućava pojednostavljivanje upravljanja životnim vijekom pojedinačnih kmem_cacheva.

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


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.