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
