Facebooki insenerid (Venemaal keelatud) avaldasid eelmisel aastal aruanne TMO (Transparent Memory Offloading) tehnoloogia rakendamisest, mis vÔimaldab mÀrkimisvÀÀrselt sÀÀsta operatiivmÀlu serverites, suunates mitteolulised tööks vajalikud sekundaarandmed odavamatele salvestusseadmetele nagu NVMe SSD-diskid. Facebooki hinnangul vÔimaldab TMO rakendamine sÀÀsta 20 kuni 32% RAM-i igas serveris. Lahendus on mÔeldud rakendatamiseks infrakonstruktsioonides, kus rakendused kÀivitatakse isoleeritud konteineritena. TMO tuumapoolne töö on juba kaasatud Linuxi tuumasse.
Linuxi tuuma poolel tagab tehnoloogia töö PSI (Pressure Stall Information) alamsĂŒsteem, mis on saadaval alates versioonist 4.20. PSI-d kasutatakse juba erinevates mĂ€lu nappuse kĂ€sitlejates ja see vĂ”imaldab analĂŒĂŒsida teavet erinevate ressursside (CPU, mĂ€lu, sisend/vĂ€ljund) ootamise aja kohta. PSI abil vĂ”ivad kasutaja ruumi kĂ€sitlejad tĂ€psemalt hinnata sĂŒsteemi koormuse taset ja töö aeglustumise iseloomu, mis aitab tuvastada kĂ”rvalekaldeid juba varases etapis, mil need veel mĂ€rkimisvÀÀrset mĂ”ju ei avalda jĂ”udlusele.
Kasutaja ruumis tagab TMO töö komponent Senpai, mis cgroup2 kaudu dĂŒnaamiliselt kohandab rakenduste konteinerite mĂ€lupiirangut PSI-lt saadud andmete pĂ”hjal. Senpai analĂŒĂŒsib PSI kaudu ressursipuuduse alguse mĂ€rke, hindab rakenduste tundlikkust mĂ€lu ligipÀÀsu aeglustumise vastu ja pĂŒĂŒab mÀÀrata sellele konteinerile minimaalset vajalikku mĂ€lusuurust, mille juures tööks vajalikud andmed jÀÀvad RAM-i, samas kui mĂ€lus oleva vahemĂ€lu aluses kinni jÀÀnud ning praegu mittekasutatavad andmed suunatakse vahetusfaili.

Seega TMO pĂ”hijĂ”ud seisneb selles, et hoida protsessid rangelt mĂ€lu tarbimise dieedil, sundides mittetĂ€idetud mĂ€lulehekĂŒlgi vahetama vahemerel, mille eemaldamine ei mĂ”juta mĂ€rkimisvÀÀrselt toimivust (nĂ€iteks lehed, mille koodi kasutatakse ainult algatamise ajal ja ĂŒksikĂŒlesande andmed kettakaardis). Erinevalt teabe vahetamisest vahemerel vastusena mĂ€luruumi puudusele, TMO puhul andmed vahetatakse prognoosi alusel.
Ăks vĂ€ljajĂ€tmise kriteeriume on mĂ€lulehekĂŒlje juurde pÀÀsemise puudumine 5 minuti jooksul. Selliseid lehti nimetatakse kĂŒlmadeks (cold memory page) ja need moodustavad keskmiselt umbes 35% rakenduste mĂ€lust (sĂ”ltuvalt rakendustest on vahemik 19% kuni 65%). Eemaldamisel arvestatakse aktiivsust, mis on seotud anonĂŒĂŒmsete mĂ€lu lehtedega (mĂ€lumaht, mille rakendus eraldab) ja faili vahemĂ€lu mĂ€luga (mille eraldab tuum). MĂ”nedes rakendustes on peamine tarbimine seotud anonĂŒĂŒmse mĂ€luga, kuid teistes mĂ€ngib suurt rolli ka faili vahemĂ€lu. Tasakaalu vĂ€ltimiseks mĂ€lu vĂ€lja vahetamisel kasutatakse TMO-s uut vahetushĂŒpooteeti, mis vahetab anonĂŒĂŒmseid lehti ja faili vahemĂ€lulehtedeks proportsionaalselt.
Harva kasutatavate lehtede vahetamine aeglasemale mÀlule ei mÔjuta oluliselt toimivust, kuid vÔimaldab mÀrkimisvÀÀrselt vÀhendada seadmete kulusid. Andmed vahetatakse SSD-seadmetele vÔi kokku pakitud vahemÀlule operatiivmÀlu sees. Byte andmete hoidmise kulude osas on NVMe SSD rakendamine kuni 10 korda odavam kui kokkusurumise kasutamine operatiivmÀlu sees.

Allikas: opennet.ru
