Facebook prezantoi mekanizmin TMO, duke ju lejuar të kurseni 20-32% të kujtesës në serverë

Inxhinierët nga Facebook (i ndaluar në Federatën Ruse) publikuan një raport mbi zbatimin vitin e kaluar të teknologjisë TMO (Transparent Memory Offloading), e cila lejon kursime të konsiderueshme në RAM në serverë duke zhvendosur të dhënat dytësore që nuk kërkohen për punë në disqe më të lirë, siç është NVMe SSD -disqe. Facebook vlerëson se përdorimi i TMO mund të kursejë 20 deri në 32% të RAM-it në çdo server. Zgjidhja është projektuar për përdorim në infrastrukturat ku aplikacionet funksionojnë në kontejnerë të izoluar. Komponentët nga ana e kernelit të TMO janë përfshirë tashmë në kernelin Linux.

Në anën e kernelit Linux, teknologjia mbështetet nga nënsistemi PSI (Pressure Stall Information), i disponueshëm duke filluar me versionin 4.20. PSI përdoret tashmë në mbajtës të ndryshëm me memorie të ulët dhe ju lejon të analizoni informacionin rreth kohës së pritjes për marrjen e burimeve të ndryshme (CPU, memorie, I/O). Me PSI, procesorët e hapësirës së përdoruesit mund të vlerësojnë më saktë nivelet e ngarkesës së sistemit dhe modelet e ngadalësimit, duke lejuar që anomalitë të identifikohen herët, përpara se të kenë një ndikim të dukshëm në performancë.

Në hapësirën e përdoruesit, TMO sigurohet nga komponenti Senpai, i cili, nëpërmjet cgroup2, rregullon në mënyrë dinamike kufirin e memories për kontejnerët e aplikacionit bazuar në të dhënat e marra nga PSI. Senpai analizon shenjat e fillimit të mungesës së burimeve nëpërmjet PSI, vlerëson ndjeshmërinë e aplikacioneve ndaj ngadalësimeve në aksesin e memories dhe përpiqet të përcaktojë madhësinë minimale të memories që kërkohet nga kontejneri, në të cilin të dhënat e kërkuara për funksionimin mbeten në RAM dhe shoqëruesit të dhënat e vendosura në memorien e skedarit ose nuk përdoren drejtpërdrejt në këtë moment, detyrohen të dalin në ndarjen e shkëmbimit.

Facebook prezantoi mekanizmin TMO, duke ju lejuar të kurseni 20-32% të kujtesës në serverë

Kështu, thelbi i TMO është të mbajë proceset në një dietë të rreptë për sa i përket konsumit të memories, duke detyruar shkëmbimin e faqeve të memories të papërdorura, nxjerrja e të cilave nuk ndikon ndjeshëm në performancën (për shembull, faqet me kod të përdorur vetëm gjatë inicializimit dhe një përdorim të dhënat në cache të diskut). Ndryshe nga nxjerrja e informacionit në ndarjen e shkëmbimit në përgjigje të presionit të kujtesës, në TMO të dhënat dëbohen bazuar në parashikimin proaktiv.

Një nga kriteret për dëbim është mungesa e aksesit në faqen e kujtesës për 5 minuta. Faqe të tilla quhen faqe memorie të ftohta dhe mesatarisht përbëjnë rreth 35% të memories së aplikacionit (në varësi të llojit të aplikacionit, ka një diapazon nga 19% në 65%). Preemption merr parasysh aktivitetin e lidhur me faqet anonime të memories (memoria e ndarë nga aplikacioni) dhe memorien e përdorur për ruajtjen e skedarëve në memorie (të alokuara nga kerneli). Në disa aplikacione konsumi kryesor është memoria anonime, por në disa të tjera, cache-i i skedarëve është gjithashtu i rëndësishëm. Për të shmangur çekuilibrat e nxjerrjes së cache-it, TMO përdor një algoritëm të ri paging që nxjerr në mënyrë proporcionale faqet anonime dhe faqet e lidhura me cache-in e skedarit.

Shtyrja e faqeve të përdorura rrallë në memorie më të ngadaltë nuk ka një ndikim të rëndësishëm në performancën, por mund të ulë ndjeshëm kostot e harduerit. Të dhënat derdhen në disqet SSD ose në një zonë të kompresuar shkëmbimi në RAM. Për sa i përket kostos së ruajtjes së një bajt të të dhënave, përdorimi i një SSD NVMe është deri në 10 herë më i lirë se përdorimi i kompresimit në RAM.

Facebook prezantoi mekanizmin TMO, duke ju lejuar të kurseni 20-32% të kujtesës në serverë


Burimi: opennet.ru

Shto një koment