Facebook je izdal popravke, ki izboljšujejo krmilnik pomnilnika Slab v Linuxu

Roman Gushchin (inženir programske opreme Facebook) registra na seznamu za razvoj jedra Linuxa, nabor popravkov za aplikacijo preslikave pomnilnika krmilnika plošče (krmilnik pomnilnika).

Novi krmilnik je izjemen s premikanjem računovodstva plošče s ravni pomnilniške strani na raven objekta jedra, kar omogoča skupno rabo strani plošče med različnimi skupinami c, namesto da bi za vsako skupino c dodelili ločene predpomnilnike plošč.

Roman je v obstoječem krmilniku pomnilnika plošče odkril tisto, kar imenuje "zelo resna napaka", ki v današnjih časih povzroča nizko izkoriščenost skupin.

»Dejanski razlog, da obstoječa zasnova vodi do nizke izkoriščenosti plošč, je preprost: strani plošč uporablja izključno pomnilniško področje.

Če je skupina cgroup določila le nekaj dodelitev določene velikosti ali če je po odstranitvi cgroupa ostalo nekaj aktivnih predmetov ali če cgroup vsebuje eno navojno aplikacijo, ki komaj dodeli katere koli predmete jedra, vendar vsakič, ko nov CPU: v vseh teh primerih je izkoriščenost plošče zelo majhna.

Če je obračunavanje kmem onemogočeno, lahko jedro uporabi prosti prostor na straneh plošče za druge dodelitve. «

Predlagani krmilnik pomnilnika Slab Romano Gushchin v preteklem letu je bil precej obetaven kot poveča učinkovitost uporabe plošče, zmanjšati velikost uporabljenega pomnilnika za ploščo za 30-45% in znatno zmanjša skupno porabo pomnilnika jedra.

Poleg tega izvedeni popravki so pokazali da Facebook že uporablja kodo v proizvodnji na svojih strežnikih in je bil prihranite ~ 650-700 MB + za prednje spletne strežnike, predpomnjenje baz podatkov in strežniki DNS.

Z zmanjšanjem števila nemobilnih plošč opazimo pozitiven učinek tudi na področju zmanjšanja fragmentacije spomina. Nov krmilnik pomnilnika znatno poenostavi kodo za računovodsko ploščo in ne zahteva zapletenih algoritmov za dinamično ustvarjanje in brisanje predpomnilnikov plošč za vsako skupino c.

Vse skupine skupin za pomnilnik v novi izvedbi uporabljajo skupen nabor predpomnilnikov plošč, njihova življenjska doba pa ni več vezana na življenjsko dobo pomnilniških omejitev, nastavljenih prek skupine.

Natančnejše obračunavanje virov, uvedeno v novem krmilniku plošče, bi moralo teoretično bolj obremenjevati CPU, vendar so se v praksi razlike izkazale za zanemarljive.

Še posebej novi voznik plošče se že nekaj mesecev uporablja na Facebook strežnikih med obratovanjem različnih vrst obremenitev in do zdaj niso zaznali nobene pomembne regresije.

Obliž vsebuje nekaj pol neodvisnih delov, ki jih lahko najdejo tudi zunaj pomnilniškega krmilnika plošče:

  • API za nalaganje podstrani, ki ga lahko v prihodnosti uporabljamo za štetje drugih predmetov, ki niso velikosti strani, na primer dodelitve percpu
  • API mem_cgroup_ptr, kjer se kazalci štejejo v memcg, je mogoče ponovno uporabiti za učinkovito popravilo drugih predmetov, na primer predpomnilnika strani.

Hkrati poraba pomnilnika se znatno zmanjša- Na nekaterih gostiteljih je bilo mogoče shraniti do 1 GB pomnilnika, vendar ta indikator v veliki meri odvisna od narave tovora, skupna velikost RAM-a, količina CPU-ja in značilnosti dela s pomnilnikom.

Namesto da bi ustvarili ločen nabor kmem_caches za vsako pomnilniško skupino, se uporabljata dva globalna niza: korenski niz za neračunane in korenske skupine cgroup dodelitve ter drugi niz za vse druge dodelitve. To omogoča poenostavitev življenjskega upravljanja posameznih kmem_caches.

Končno, če vas zanima nov nabor 19 popravkov, ga lahko najdete na seznamu jedro pošte.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.