Facebook a introdus mecanismul TMO, care vă permite să economisiți 20-32% din memorie pe servere

Inginerii de la Facebook (interzis în Federația Rusă) au publicat un raport privind implementarea anul trecut a tehnologiei TMO (Transparent Memory Offloading), care permite economii semnificative de memorie RAM pe servere prin înlocuirea datelor secundare care nu sunt necesare pentru lucru pe unități mai ieftine, precum NVMe SSD - discuri. Facebook estimează că utilizarea TMO poate economisi 20 până la 32% din RAM pe fiecare server. Soluția este concepută pentru utilizarea în infrastructuri în care aplicațiile rulează în containere izolate. Componentele TMO din partea kernelului sunt deja incluse în nucleul Linux.

Pe partea de kernel Linux, tehnologia este susținută de subsistemul PSI (Pressure Stall Information), disponibil începând cu versiunea 4.20. PSI este deja folosit în diverse handlere cu memorie scăzută și vă permite să analizați informații despre timpul de așteptare pentru obținerea diverselor resurse (CPU, memorie, I/O). Cu PSI, procesoarele din spațiul utilizatorului pot evalua mai precis nivelurile de încărcare a sistemului și modelele de încetinire, permițând identificarea precoce a anomaliilor, înainte ca acestea să aibă un impact vizibil asupra performanței.

În spațiul utilizatorului, TMO este furnizat de componenta Senpai, care, prin cgroup2, ajustează dinamic limita de memorie pentru containerele de aplicații pe baza datelor primite de la PSI. Senpai analizează semnele apariției deficitului de resurse prin intermediul PSI, evaluează sensibilitatea aplicațiilor la încetinirile accesului la memorie și încearcă să determine dimensiunea minimă a memoriei cerută de container, la care datele necesare funcționării rămân în RAM și însoțitorul datele stabilite în memoria cache de fișiere sau nu sunt utilizate direct în acest moment, sunt forțate să iasă în partiția de swap.

Facebook a introdus mecanismul TMO, care vă permite să economisiți 20-32% din memorie pe servere

Astfel, esența TMO este menținerea proceselor pe o dietă strictă în ceea ce privește consumul de memorie, forțând schimbarea paginilor de memorie neutilizate a căror evacuare nu afectează semnificativ performanța (de exemplu, paginile cu cod folosit doar în timpul inițializării și de unică folosință). date din memoria cache a discului). Spre deosebire de evacuarea informațiilor către partiția de swap ca răspuns la presiunea memoriei, în TMO datele sunt evacuate pe baza predicției proactive.

Unul dintre criteriile de evacuare este absența accesului la pagina de memorie timp de 5 minute. Astfel de pagini se numesc pagini cu memorie rece și reprezintă în medie aproximativ 35% din memoria aplicației (în funcție de tipul de aplicație, există o gamă cuprinsă între 19% și 65%). Preempționarea ia în considerare activitatea asociată cu paginile de memorie anonime (memoria alocată de aplicație) și memoria utilizată pentru stocarea în cache a fișierelor (alocată de kernel). În unele aplicații consumul principal este memoria anonimă, dar în altele este important și cache-ul fișierelor. Pentru a evita dezechilibrele de evacuare a memoriei cache, TMO utilizează un nou algoritm de paginare care evacuează proporțional paginile anonime și paginile asociate cu memoria cache a fișierelor.

Împingerea paginilor utilizate rar în memorie mai lentă nu are un impact semnificativ asupra performanței, dar poate reduce semnificativ costurile hardware. Datele sunt transferate pe unități SSD sau într-o zonă de schimb comprimată din RAM. În ceea ce privește costul stocării unui octet de date, utilizarea unui SSD NVMe este de până la 10 ori mai ieftină decât utilizarea compresiei în RAM.

Facebook a introdus mecanismul TMO, care vă permite să economisiți 20-32% din memorie pe servere


Sursa: opennet.ru

Adauga un comentariu