Facebook lëshoi ​​arna që përmirësojnë kontrolluesin e memorjes Slab në Linux

Roman Gushchin (një inxhinier i programeve në Facebook) regjistri në listën e zhvillimit të kernelit Linux, një grup arnimesh në aplikacionin e hartës së kujtesës së kontrolluesit të pllakave (një kontrollues i kujtesës).

Kontrolluesi i ri është i jashtëzakonshëm duke lëvizur llogaritjen e pllakave nga niveli i faqes së kujtesës në nivelin e objektit të bërthamës, duke bërë të mundur ndarjen e faqeve të pllakave në grupe të ndryshme c, në vend që të caktojë memorie të veçanta të pllakave për secilin grup c.

Roman gjeti atë që ai e quan një "të metë shumë serioze" në kontrolluesin ekzistues të memorjes së pllakave që çon në përdorim të ulët këto ditë me grupe.

“Arsyeja e vërtetë që dizajni ekzistues çon në përdorim të ulët të pllakave është e thjeshtë: faqet e pllakave përdoren ekskluzivisht nga një grup i kujtesës.

Nëse ka vetëm disa alokime të një madhësie të caktuar të bëra nga një cgroup, ose nëse ka disa objekte aktive të mbetura pasi të hiqet cgroup, ose cgroup përmban një aplikacion të vetëm të ndërprerë që mezi po alokon ndonjë objekt të bërthamës, por çdo herë në një CPU të ri: në të gjitha këto raste, përdorimi i pllakës që rezulton është shumë i ulët.

Nëse kontabiliteti kmem është i paaftë, bërthama mund të përdorë hapësirë ​​të lirë në faqet e pllakave për alokime të tjera. «

Kontrolluesi i memorjes Slab i propozuar nga Romano Gushchin vitin e kaluar ishte mjaft premtues pasi rrit efikasitetin të përdorimit të pllakës, zvogëlojnë madhësinë e kujtesës së përdorur për pllakë me 30-45% dhe zvogëlon ndjeshëm konsumin e përgjithshëm të kujtesës së bërthamës.

Përveç kësaj, arnimet e zbatuara kanë treguar që Facebook tashmë po përdor kodin në prodhim në serverat e tyre dhe ishte duke kursyer 650-700 MB + për serverat e faqeve të përparme, cache e bazës së të dhënave dhe servera DNS, ndër çmime të tjera.

Duke zvogëluar numrin e pllakave jo të lëvizshme, vërehet një efekt pozitiv edhe në fushën e zvogëlimit të copëzimit të kujtesës. Kontrolluesi i ri i kujtesës thjeshton ndjeshëm kodin për pllakën e kontabilitetit dhe nuk kërkon algoritme të ndërlikuar për krijimin dinamik dhe fshirjen e memorjeve të pllakave për secilin grup c.

Të gjitha grupet për memorie në zbatimin e ri përdorin një grup të përbashkët të memorjeve të rrasave, dhe jetëgjatësia e memorjeve të pllakave nuk është më i lidhur me jetëgjatësinë e kufizimeve të kujtesës të vendosura përmes cgroup.

Kontabiliteti më i saktë i burimeve i zbatuar në kontrolluesin e ri të pllakave duhet të ngarkojë më shumë CPU-në, por në praktikë ndryshimet dolën të jenë të papërfillshme.

Në veçanti drejtuesi i ri i pllakës është përdorur për disa muaj në serverat e Facebook në operacion që trajtojnë lloje të ndryshme të ngarkesave, dhe deri më tani nuk janë zbuluar regresione të rëndësishme.

Patch përmban disa pjesë gjysëm të pavarura, të cilat gjithashtu mund të gjejnë përdorimin e tyre jashtë kontrolluesit të memorjes së pllakës:

  • Subi Load API, i cili mund të përdoret në të ardhmen për të numëruar objekte të tjera që nuk janë të madhësisë së një faqeje, për shembull alokimet e percpu
  • API mem_cgroup_ptr, ku treguesit numërohen në një memcg, mund të ripërdoret për rivendosje efikase të objekteve të tjera, për shembull pagecache.

Në të njëjtën kohë ka një rënie të ndjeshme të konsumit të kujtesës- Në disa hostë ishte e mundur të kursente deri në 1 GB memorie, por ky tregues kryesisht varet nga natyra e ngarkesës, madhësia totale e RAM, sasia e CPU dhe karakteristikat e punës me kujtesën.

Në vend të krijimit të një grupi të veçantë të kmem_cache për secilën grup të kujtesës, përdoren dy grupe globale: grupi rrënjë për caktimet e grupeve të pa llogaritura dhe grupi rrënjë dhe caktimi i dytë për të gjitha caktimet e tjera. Kjo lejon thjeshtimin e menaxhimit gjatë gjithë jetës për kmem_caches individuale.

Më në fund, nëse jeni të interesuar të dini setin e ri prej 19 arna, ajo mund të gjendet në listë posta e kernelit.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.