Új Reserved THP funkció Linuxra: a HugeTLB és a THP legjobb tulajdonságainak egyesítése

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Bytedance egy ideje a Reserved THP nevű megoldáson dolgozik. Ezt egyfajta köztes lépcsőnek vagy végső célnak szánják ahhoz, hogy egységesítsék a HugeTLB és a Transparent Huge Page (THP) támogatást a Linux kernel-ben a kernel huge page-ekhez. A HugeTLB olyan hasznos képességeket kínál, mint a foglalások és a garantált allokáció a lefoglalt készletekből, viszont nem tud swapet használni. A THP ezzel szemben nem támogat foglalást, az allokáció sem garantált, viszont szorosabban integrált a memóriakezelés magkódjába, és kezeli a swapet.

Qi Zheng így foglalta össze, hogyan jutottak el a Reserved THP ötletéig:

"A belső használati esetünkben egy felhasználói folyamatnak a hot-upgrade igényei miatt a Hugetlb memória kétszeresét kell lefoglalnia. Például ha a folyamatnak 16 GB Hugetlb-re van szüksége, a hot-upgrade idejére további 16 GB kell, hogy ki tudja elégíteni a memóriaigényeket. A frissítés után a régi folyamat kilép, és felszabadítja a 16 GB HugeTLB-t. Így a legtöbb esetben a plusz 16 GB HugeTLB kárba vész.

Egy kézenfekvő ötlet a Hugetlb CMA funkció használata, összesen 32 GB hugetlb_cma lefoglalásával. Normál működés közben ebből 16 GB fogy el, a maradék 16 GB-ot pedig más folyamatok használhatják. Hot-upgrade alatt megpróbálhatnánk átköltöztetni a többi folyamat által használt memóriát, hogy ki tudjuk allokálni a szükséges plusz 16 GB Hugetlb-et. Ez talán működhet, de továbbra is 32 GB memória lefoglalását igényli.

Azt is megfigyeltük, hogy hot-upgrade közben a régi folyamat hugetlb memóriájából nagyjából 10 GB valójában hideg memória, amit elvileg vissza lehetne szerezni. Szélsőséges esetben elég lenne 22 GB memóriát lefoglalni, a maradék 10 GB-ot pedig a hot-upgrade alatt visszavenni. Sajnos a hugetlb jelenleg nem támogatja a swapet, és úgy tűnik, ennek a támogatása elég nehéz lenne.

Ezért merült fel bennünk, hogy be tudnánk-e vezetni a „reserved THP”-t, vagyis olyan THP-t, amit le lehet foglalni. Ezt például madvise() hívással lehetne felhasználni, miközben a normál memóriaallokáció nem nyúlhatna hozzá. Így a hugetlb-hez hasonló hatást érnénk el. Mivel viszont THP-ről van szó, viszonylag könnyen támogathatná a swapet, ami tökéletesen megoldaná a fenti problémát."

Korábban is voltak már kernel szintű viták arról, hogyan lehetne egységesíteni a THP és a HugeTLB működését, de eddig még külön utakon járnak.

Akik részletesebben is megismerkednének a Reserved THP javaslattal, itt találják: ebben az LKML szoftverfolt sorozatban.