Naglabas ang Facebook ng mga patch na nagpapabuti sa Slab memory controller sa Linux

Roman Gushchin (isang inhinyero sa software ng Facebook) pagpapatala sa listahan ng pag-unlad ng kernel ng Linux, isang hanay ng mga patch sa application ng pagmamapa ng memorya ng slab controller (isang memory controller).

Kapansin-pansin ang bagong controller sa pamamagitan ng paglipat ng slab accounting mula sa antas ng memorya sa antas ng kernel object, ginagawang posible na ibahagi ang mga pahina ng slab sa iba't ibang mga pangkat c, kaysa sa paglalaan ng magkakahiwalay na mga cache ng slab para sa bawat pangkat c.

Natagpuan ni Roman ang tinatawag niyang "napaka seryosong kapintasan" sa umiiral na slab memory controller na humahantong sa mababang paggamit sa mga panahong ito sa mga cgroups.

"Ang totoong dahilan kung bakit ang umiiral na layout ay humahantong sa mababang paggamit ng slab ay simple: ang mga pahina ng slab ay eksklusibong ginagamit ng isang memory pool.

Kung mayroon lamang ilang mga paglalaan ng isang tiyak na sukat na ginawa ng isang cgroup, o kung may ilang mga aktibong bagay na natitira pagkatapos na matanggal ang cgroup, o ang cgroup ay naglalaman ng isang solong sinulid na application na bahagya na naglalaan ng anumang mga kernel object, ngunit sa tuwing sa isang bagong CPU: sa lahat ng mga kasong ito, ang nagresultang paggamit ng slab ay napakababa.

Kung ang kmem accounting ay hindi pinagana, ang kernel ay maaaring gumamit ng libreng puwang sa mga pahina ng slab para sa iba pang mga paglalaan. «

Ang ipinanukalang Slab memory controller ni Romano Gushchin sa nakaraang taon ay medyo promising bilang nagdaragdag ng kahusayan ng paggamit ng slab, bawasan ang laki ng ginamit na memorya para sa slab ng 30-45% at makabuluhang bawasan ang kabuuang pagkonsumo ng kernel memory.

Gayundin, ang ipinatupad na mga patch ay ipinahiwatig na ang Facebook ay gumagamit na ng code sa produksyon sa kanilang mga server at dati nagse-save ~ 650-700MB + para sa mga front-end web server, database caching at DNS server, bukod sa iba pang mga parangal.

Sa pamamagitan ng pagbawas ng bilang ng mga hindi pang-mobile na slab, ang isang positibong epekto ay sinusunod din sa larangan ng pagbawas ng fragmentation ng memorya. Ang bagong memory controller ay makabuluhang pinapasimple ang code para sa slab ng accounting at hindi nangangailangan ng mga kumplikadong algorithm para sa pabagu-bagong paglikha at pagtanggal ng mga slab cache para sa bawat pangkat c.

Ang lahat ng mga cgroup para sa memorya sa bagong pagpapatupad ay gumagamit ng isang karaniwang hanay ng mga slab cache, at ang habang-buhay ng mga slab cache ay hindi na nakatali sa habang-buhay na mga hadlang sa memorya na itinakda sa pamamagitan ng cgroup.

Ang mas tumpak na accounting accounting na ipinatupad sa bagong slab controller ay dapat na teoretikal na na-load ang CPU nang higit, ngunit sa pagsasagawa ang mga pagkakaiba ay naging bale-wala.

Sa partikular ang bagong driver ng slab ay ginamit nang maraming buwan sa mga server ng Facebook sa operasyon na humahawak ng iba't ibang mga uri ng pag-load, at hanggang ngayon walang napansin na makabuluhang pagbabalik.

Naglalaman ang patch ng isang pares ng mga semi-independiyenteng bahagi, na maaari ring makita ang kanilang paggamit sa labas ng memory controller ng slab:

  • Ang Subpage Load API, na maaaring magamit sa hinaharap upang mabilang ang iba pang mga bagay na hindi sukat ng isang pahina, halimbawa mga paglalaan ng percpu
  • Ang mem_cgroup_ptr API, kung saan binibilang ang mga payo sa isang memcg, ay maaaring magamit muli para sa mahusay na muling pagpaparehistro ng iba pang mga bagay, halimbawa ng pagecache.

Kasabay nito, mayroong isang makabuluhang pagbaba sa pagkonsumo ng memorya- Sa ilang mga host posible na makatipid ng hanggang sa 1 GB ng memorya, ngunit ang tagapagpahiwatig na ito higit sa lahat ay nakasalalay sa likas na katangian ng pagkarga, ang kabuuang sukat ng RAM, ang dami ng CPU at ang mga katangian ng pagtatrabaho sa memorya.

Sa halip na lumikha ng isang magkakahiwalay na hanay ng mga kmem_cache para sa bawat memorya ng cgroup, ginagamit ang dalawang pandaigdigang hanay: ang root set para sa hindi naitala at ang mga pagtatalaga ng grupo ng root group at ang pangalawang hanay para sa lahat ng iba pang mga takdang-aralin. Pinapayagan nitong mapadali ang pamamahala ng panghabambuhay ng mga indibidwal na kmem_cache.

Panghuli, kung interesado kang malaman ang bagong hanay ng 19 na mga patch maaari itong matagpuan sa listahan kernel mail.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.