Facebooki insenerid (Venemaal keelatud) avaldasid eelmise aasta aruande TMO (Transparent Memory Offloading) tehnoloogia rakendamisest, mis võimaldab serverites oluliselt säästa mälu, rõhutades tööks mitte vajalikud sekundaarandmed odavamatele salvestusseadmetele, nagu NVMe SSD-diskid. Facebooki hinnangul võimaldab TMO kasutamine igal serveril säästa 20–32% RAMi. Lahendus on mõeldud rakendamiseks infrastruktuurides, kus rakendused käivitatakse isoleeritud konteinerites. TMO komponentide, mis töötavad kerni pooles, sisaldus juba Linuxi kärgis.
Linux'i tuumasüsteemi töö tagab PSI (Pressure Stall Information) alamsüsteem, mis on saadaval alates versioonist 4.20. PSI-d on juba rakendatud erinevates mälu nappuse haldurites ja see võimaldab analüüsida andmeid erinevate ressursside (CPU, mälukaart, sisend/väljund) ooteaegade kohta. PSI abil saavad kasutaja tasandi haldurid täpsemalt hinnata süsteemi koormust ja töö aeglustumise iseloomu, mis võimaldab tuvastada kõrvalekaldeid juba varases etapis, mil need ei mõjuta veel märgatavalt jõudlust.
Kasutajaruumis tagab TMO toimimise komponent Senpai, mis cgroup2 kaudu kohandab dünaamiliselt rakenduste konteinerite mälupiiranguid PSI andmete põhjal. Senpai analüüsib ressursipuuduse alguse märke PSI kaudu, hindab rakenduste tundlikkust mälu juurdepääsu aeglustumise suhtes ja püüab määrata minimaalselt vajaliku mälumahu, mille korral vajalikud tööandmed püsivad RAM-is, samas kui seotud andmed, mis on jäädvustatud failide vahemällu või ei ole hetkel otse kasutuses, tõrjutakse vahetusfaili.

Seega, TMO olemus seisneb selles, et hoida protsessid rangelt mälutarbimise dieedil, sundides ebatäpsete lehtede mälumahtude liikumist swap-ala, mille väljajätmine ei mõjuta oluliselt jõudlust (näiteks lehed, mille kood on kasutusel ainult initsialiseerimise ajal, ja üksikühikutesse kasutatavad andmed kettapuhvrisse). Erinevalt andmete edasiviimisest swap-ala, mis toimub vastuseks mälupuudusele, edastatakse TMO-s andmed eelprojekteeritud prognooside põhjal.
Ühe kriteeriumina muutmise jaoks võetakse arvesse, et mälulehekülge ei ole kasutatud viie minuti jooksul. Selliseid lehti nimetatakse külmadeks (cold memory page) ja need moodustavad keskmiselt umbes 35% rakenduste mälust (sõltuvalt rakenduse tüübist on erinevus vahemikus 19% kuni 65%). Vältimisel arvestatakse mälupõhi (rakendusele eraldatud mälu) ja failide vahemälu (tõukerelva eraldatud mälu) seondumist. Mõnedes rakendustes on peamine tarbimine seotud anonüümse mälu kasutamisega, kuid teistes on oluline ka failide vahemälu. Et vältida mälupoliitika tasakaalu häirimist vahemälus, rakendan TMO uut vahetust algoritmi, mis vahetab välja anonüümsed lehed ja lehed, mis on seotud failide vahemäluga proportsionaalselt.
Vähekasutatud lehtede viimine aeglasemasse mälu ei oma suurt mõju jõudlusele, kuid aitab oluliselt vähendada seadmete kulusid. Andmed suunatakse SSD-draividele või kokku surutud vahemälu piirkonda operatiivmälu sees. NVMe SSD-de kasutamine, arvestades andmete salvestamise kulu, on kuni 10 korda odavam kui kokku surumine operatiivmälus.

Allikas: opennet.ru
