Inxhinierët nga kompania Facebook (e ndaluar në RF) publikuan një raport mbi implementimin vitin e kaluar të teknologjisë TMO (Transparent Memory Offloading), e cila lejon kursimin e konsiderueshëm të 기억국ës RAM në serverë duke hequr të dhënat dytësore që nuk kërkohen për ekzekutimin e punëve në ruajtës më të lirë, siç janë diskët NVMe SSD. Sipas vlerësimeve të Facebook, aplikimi i TMO lejon kursejtje prej 20 deri në 32% të RAM-it në çdo server. Zgjidhja është e destinuar për t'u përdorur në infrastruktura, ku aplikacionet ekzekutohen në konteinerë të izoluar. Komponentët që punojnë anash bërthamës TMO tashmë janë përfshirë në bërthamën Linux.
Anash bërthamës Linux, funksionimi i teknologjisë sigurohet nga nënsistemi PSI (Pressure Stall Information), i cili ofrohet duke filluar nga versioni 4.20. PSI tashmë përdoret në përpunues të ndryshëm të mungesës së memories dhe lejon analizimin e informacionit mbi kohën e pritjes për marrjen e burimeve të ndryshme (CPU, memorje, hyrje/dalje). Me anë të PSI, përpunuesit në hapësirën e përdoruesit mund të vlerësojnë më saktë nivelin e ngarkesës së sistemit dhe karakterin e ngadalësimit të funksionimit, e cila ndihmon në identifikimin e devijimeve në fazat e para, kur ato ende nuk kanë një ndikim të dukshëm në performancë.
Në hapësirën e përdoruesit, funksionimin e TMO e siguron komponenti Senpai, i cili përmes cgroup2 rregullon dinamik kufizimin e memories për konteinerët e aplikacioneve mbi bazën e të dhënave që merr nga PSI. Senpai analizojnë shenjat e fillimit të mungesës së burimeve përmes PSI, vlerëson ndjeshmërinë e aplikacioneve ndaj ngadalësimit të aksesit në memorje dhe përpiqet të përcaktojë madhësinë minimale të nevojshme për konteinerin për të mbajtur të dhënat e nevojshme për punë në memorje, ndërsa të dhënat anësore, që janë vendosur në cache të skedarëve ose që nuk përdoren drejtpërdrejt në atë moment, përzgjidhen për t'u transferuar në ndarjen e swapping.

Pra të përmbledhë, thelbi i TMO është të mbajë proceset në një regime të rreptë në lidhje me konsumimin e memories, duke detyruar transferimin në hapësirën e shkëmbimit të faqeve të memories që nuk përdoren, përjashtimi i të cilave nuk ndikon dukshëm në performancë (për shembull, faqet me kodin që përdoret vetëm gjatë inicializimit, dhe të dhënat që përdoren një herë në cache-në e diskut). Ndryshe nga përjashtimi i informacionit në hapësirën e shkëmbimit si përgjigje ndaj mungesës së memories, në TMO të dhënat përjashtohen mbi bazën e parashikimit proaktiv.
Si një nga kriteret për përjashtim, përdoret mungesa e qasjes në një faqe memorize për 5 minuta. Këto faqe quhen të ftohta (cold memory page) dhe në mesatare përbëjnë rreth 35% të memories së aplikacioneve (në varësi të llojit të aplikacioneve, ka një shpërndarje nga 19% deri në 65%). Gjatë përjashtimit llogaritet aktiviteti që lidhet me faqet e memories anonime (memoria e ndarë nga aplikacioni) dhe memoria e përdorur për caching-un e skedarëve (e ndarë nga bërthama). Në disa aplikacione, konsumimi kryesor lidhet me memorien anonime, por në të tjerë ka rëndësi të madhe dhe cache-i i skedarëve. Për të shmangur një disbalancë gjatë përjashtimit të memories në cache, TMO përdor një algoritëm të ri të shkëmbimit, i cili përjashton faqet anonime dhe ato që lidhen me cache-in e skedarëve, proporcionalisht.
Përjashtimi i faqeve që përdoren rrallë në një memorie më të ngadaltë nuk ka ndikim të madh në performancë, por lejon një ulje të konsiderueshme të cost-it të pajisjeve. Të dhënat përjashtohen në SSD ose në një zonë të kompresuar të hapësirës së shkëmbimit në memorien operuese. Nga këndvështrimi i kostos për ruajtjen e një byte të dhënash, përdorimi i NVMe SSD është deri në 10 herë më i lirë se përdorimi i kompresimit në memorien operuese.

Burimi: opennet.ru
