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.

