Facebook publikigis flikaĵojn, kiuj plibonigas la Slab-memoregilon en Linukso

Roman Guŝĉin (Facebook-inĝeniero pri programaro) registro en Linuksa kerna disvolva listo, aro de flikaĵoj al la aplikaĵo pri memora mapado de slabregilo (memoregilo).

La nova regilo estas rimarkinda movante slaban kontadon de la memora paĝa nivelo al la kerna objekta nivelo, ebligante dividi slabajn paĝojn tra malsamaj grupoj c, anstataŭ asigni apartajn slabajn kaŝmemorojn por ĉiu grupo c.

Roman trovis tion, kion li nomas "tre grava difekto" en la ekzistanta slab-memoregilo, kiu kondukas al malalta uzado nuntempe kun grupoj.

“La vera kialo, ke la ekzistanta projektado kaŭzas malaltan slaban uzadon, estas simpla: slabaj paĝoj estas uzataj ekskluzive de memora grupo.

Se estas nur kelkaj atribuoj de certa grandeco faritaj de cgroup, aŭ se restas iuj aktivaj objektoj post kiam la cgroup estas forigita, aŭ la cgroup enhavas unu fadenan aplikaĵon, kiu apenaŭ asignas iujn kernajn objektojn, sed ĉiufoje sur nova CPU: en ĉiuj ĉi kazoj, la rezulta slabuzado estas tre malalta.

Se kmem-kontado estas malebligita, la kerno povas uzi liberan spacon sur slabaj paĝoj por aliaj atribuoj. «

La proponita Slab-memregilo de Romano Gushchin en la pasinta jaro estis sufiĉe promesplena kiel pliigas efikecon pri la uzo de la slabo, redukti la grandecon de memoro uzata por slabo je 30-45% kaj signife reduktas totalan kernan memorkonsumon.

Ankaŭ la flikaĵoj efektivigitaj indikis ke Facebook jam uzas la kodon en produktado sur siaj serviloj kaj estis ŝparante ~ 650-700MB + por antaŭaj serviloj, datumbaza konservado kaj DNS-serviloj, inter aliaj premioj.

Reduktante la nombron da nemoveblaj slaboj, pozitiva efiko ankaŭ estas observita en la kampo de reduktado de memora fragmentiĝo. Nova memoregilo signife simpligas kodon por librotenado kaj ne postulas komplikajn algoritmojn por dinamika kreado kaj forigo de slabaj kaŝmemoroj por ĉiu grupo c.

Ĉiuj cgrupoj por memoro en la nova efektivigo uzas komunan aron de slabaj kaŝmemoroj, kaj la vivotempo de slabaj kaŝmemoroj ne plu estas ligita al la vivotempo de memoraj limoj starigitaj per cgroup.

La pli preciza rimedo-kontado efektivigita en la nova slabregilo teorie devas pli ŝarĝi la CPU, sed praktike la diferencoj montriĝis nekonsiderindaj.

Precipe la nova slaba ŝoforo estas uzata de kelkaj monatoj ĉe Facebook-serviloj en funkciado, kiu traktas diversajn specojn de ŝarĝoj, kaj ĝis nun neniuj signifaj regresoj estis detektitaj.

La diakilo enhavas kelkajn duon-sendependajn partojn, kiuj ankaŭ povas uzi sian uzon ekster la memoregilo de slabo:

  • La Subpaĝo-Ŝarĝo API, uzebla en la estonteco por kalkuli aliajn objektojn, kiuj ne havas la grandecon de paĝo, ekzemple percpu-atribuoj
  • La API mem_cgroup_ptr, kie montriloj kalkulitaj al memcg, povas esti reuzata por efika riparado de aliaj objektoj, ekzemple pagecache.

Samtempe, estas signifa malpliigo de memorkonsumo- Ĉe iuj gastigantoj eblis ŝpari ĝis 1 GB da memoro, sed ĉi tiu indikilo plejparte dependas de la naturo de la ŝarĝo, la totala grandeco de RAM, la kvanto de CPU kaj la karakterizaĵoj de laborado kun memoro.

Anstataŭ krei apartan aron de kmem_caches por ĉiu memora grupo, du tutmondaj aroj estas uzataj: la radika aro por neklarigitaj kaj la radikaj grupaj grupaj taskoj kaj la dua aro por ĉiuj aliaj taskoj. Ĉi tio permesas simpligi dumvivan administradon de unuopaj kmem_caches.

Fine, se vi interesas scii la novan aron de 19 flikaĵoj, vi trovos ĝin en la listo kernpoŝto.


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

Estu la unua por komenti

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita.

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

bool (vera)