Nagmumungkahi sila ng isang bagong memory controller para sa Linux kernel

Linux Kernel

Ang memory manager ay isang subset ng system operative Nagbabahagi ito ng memorya sa pagitan ng operating system at ng iba't ibang mga application. Pangunahing tumutukoy ang term na memorya sa pangunahing memorya (RAM), ngunit ang pamamahala nito ay nangangailangan ng kontribusyon ng auxiliary memory at cache memory.

Ang manager ng memorya lalo na responsable para sa mahusay na paglalaan ng memorya sa mga proseso, na nagpapahiwatig na dapat mong maisaalang ang libreng mga lokasyon ng magagamit na memorya, inilalaan ang kinakailangang memorya para sa mga bagong proseso, at bawiin ang memorya mula sa mga proseso na nagwawakas. Ang dispatcher ng proseso sa loob ng kernel ng Linux ay ang dispatcher ng SLAB.

TILAD umaasa sa isang block at cache system na nag-optimize ng mga kahilingan sa memorya. Ang ganitong uri ng pamamahala sa memorya ay binabawasan ang pagkakawatak-watak sanhi ng paglalaan at paglipat ng mga operasyon.

Ang paglalaan ng pag-block ay nagsasangkot ng pagpapatupad ng isang cache para sa isang tiyak na uri / sukat ng object na may maraming paunang inilaang mga bloke ng memorya na gupitin sa mga nakapirming sukat na angkop sa mga tukoy na bagay.

Pinangangasiwaan ng SLAB ang mga piraso upang kapag ang kernel ay hiniling na maglaan ng memorya sa isang bagay, Maaari mong masiyahan ang kahilingang iyon sa isang ekstrang bahagi mula sa isang mayroon nang bloke. Pinapanatili ng SLAB ang inilaang memorya para sa muling paggamit, kapag kasunod na paglalaan ng mga katulad na bagay, at sa gayon binabawasan ang mga gastos sa overhead na nauugnay sa pagsisimula ng bagay.

Nilalayon nilang palitan ang SLAB

Roman Gushchin, Isang miyembro ng koponan ng engineering ng Linux kernel sa Facebook, natuklasan niya kung ano ang nakikita niya bilang isang "seryosong kapintasan" sa kasalukuyang memorya ng manager / controller. At rKamakailan-lamang na iminungkahi ng isang bagong memory controller harangan na nangangako na kapansin-pansing mapabuti ang paggamit ng memorya sa maraming mga "cgroups" (o kontrolin ang mga pangkat) mula sa memorya.

Dahil dito, mahalagang tandaan na ang mga cgroups ay tumutukoy sa isang tampok ng Linux kernel na nagbibigay-daan sa paglilimita, pagbibilang at pag-iisa ng paggamit ng mga mapagkukunan ng isang system (processor, memorya, paggamit ng disk, atbp.) At ang term na "pahina ng slab» maaaring mai-assimilated sa proseso ng paglalaan ng memorya ng SLAB.

Ayon kay Gushchin:

"Ang totoong kadahilanan na ang umiiral na disenyo ay humahantong sa mababang paggamit ng SLAB ay simple: Ang mga pahina ng slab ay eksklusibong ginagamit ng isang solong memory pool.

Kung may ilang mga paglalaan lamang 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 kung ang cgroup ay naglalaman ng isang solong sinulid na application na naglalaan ng halos walang mga kernel, ngunit ginagawa ito sa tuwing sa isang bagong CPU: Sa lahat ng mga kasong ito, ang nagreresultang paggamit ng SLAB ay napakababa.

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

Nagtalo si Gushchin na hindi ito isang problema nang ipakilala ang driver ng kmem bilang isang opsyonal na tampok na kailangang paganahin para sa bawat memory pool.

Ngayon gayunpaman, ang driver ng kmem ay pinapagana ng default para sa cgroup v1 at v2. At dahil ang mga modernong system ay may posibilidad na lumikha ng isang malaking bilang ng mga c group, ang paggamit ng SLAB ay hindi gaanong epektibo.

Ayon sa kanya, sa pamamagitan ng pagbabahagi ng mga pahina ng slab sa pagitan ng iba't ibang mga pangkat ng memorya at sa pamamagitan ng paggamit ng isang reworked system kung saan ang accounting ay ginagawa ng object kaysa sa pamamagitan ng pahina, ang isa ay magkakaroon sa linux kernel ng isang na-optimize na memory controller na nag-aalok ng isang mas mahusay na antas ng paggamit.

Ang patch na iminungkahi ni Gushchin ay naglalaman ng dalawang mga semi-independiyenteng elemento: isang subpage load API na maaaring magamit sa hinaharap para sa mga layunin sa accounting at isang mem_cgroup_ptr API.

Ginagawa ang mga pagsubok sa bagong controller memorya ni Gushchin ipinakita na posible na makakuha sa pagitan ng 35% at 42% higit pang memorya sa Linux sa front-end web, database cache at DNS server, at maraming iba pang mga workload.

Ang panukala ni Gushchin ay kasalukuyang nasa ilalim ng banner ng "kahilingan para sa komento." Kung tatanggapin, maaari itong isama sa bersyon ng kernel ng 2020 Linux.

Fuente: https://lkml.org/


Iwanan ang iyong puna

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

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  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.