Facebook представи механизъм TMO, позволяващ спестяване на 20-32% от паметта на сървърите

Инженерите от Facebook (забранена в РФ) публикуваха доклад за внедряването на технологията TMO (Transparent Memory Offloading) през миналата година, която позволява значителна икономия на оперативна памет на сървърите, като изхвърля ненужните вторични данни на по-евтини носители, като NVMe SSD дискове. Според оценките на Facebook, прилагането на TMO позволява икономия от 20 до 32% РАМ на всеки сървър. Решението е проектирано за инфраструктури, в които приложенията работят в изолирани контейнери. Компонентите TMO, работещи на ниво ядро, вече са включени в ядрото на Linux.

На нивото на ядрото на Linux, работата на технологията се осигурява от подсистемата PSI (Pressure Stall Information), налична от версия 4.20. PSI вече се използва в разнообразни обработващи единици за недостиг на памет и позволява анализ на информацията за времето на изчакване при получаване на различни ресурси (CPU, памет, вход/изход). Чрез PSI обработващите единици в потребителското пространство могат по-точно да оценят нивото на натовареност на системата и характера на забавянето на работата, което позволява идентифициране на отклонения в самото начало, когато те все още не оказват значително влияние върху производителността.

В потребителското пространство, работата на TMO се осигурява от компонента Senpai, който чрез cgroup2 динамично коригира лимита на паметта за контейнери на приложения на основата на данни, получени от PSI. Senpai анализира признаците на недостиг на ресурси чрез PSI, оценява чувствителността на приложенията към забавянето на достъпа до паметта и се опитва да определи минималния необходим размер на паметта за контейнера, при който необходимите за работата данни остават в РАМ, а съпътстващите данни, които са в кеша на файловете или не се използват в момента, се изхвърлят в разменна памет.

Facebook представи механизъм TMO, позволяващ спестяване на 20-32% от паметта на сървърите

Така, основната същност на TMO е да поддържа процесите на строга диета относно потреблението на памет, принудително прехвърляйки неизползвани страници на памет в свалящата памет, чието изтласкване не оказва съществено влияние на производителността (например, страници с код, който се използва само при инициализация, и данни, използвани само веднъж в дисковия кеш). За разлика от изтласкването на информация в свалящата памет в отговор на недостиг на памет, при TMO данните се изтласкват на база предвиждащо прогнозиране.

Като едно от критериите за изтласкване се използва отсъствието на достъп до страница на паметта в продължение на 5 минути. Подобни страници се наричат студени (cold memory page) и средно съставляват около 35% от паметта на приложенията (в зависимост от типа приложения, диапазонът варира от 19% до 65%). При изтласкването се взема предвид активността, свързана с анонимни страници на паметта (памет, заделена от приложението) и паметта, използвана при кеширане на файлове (заделяна от ядрото). В някои приложения основното потребление е свързано с анонимната памет, но в други значителна роля играе и файловият кеш. За да се избегне дисбаланс при изтласкването на памет в кеша, TMO прилага нов алгоритъм за сваляне, който изтласква анонимни страници и страници, свързани с файловия кеш, пропорционално.

Изтласкването на рядко използвани страници в по-бавна памет не влияе значително на производителността, но позволява значително да се намалят разходите за оборудване. Данните се изтласкват на SSD устройства или в компресирана област на свалящата памет в оперативната памет. По отношение на разходите за съхранение на байт данни, използването на NVMe SSD е до 10 пъти по-евтино от приложението на компресия в оперативната памет.

Facebook представи механизъм TMO, позволяващ спестяване на 20-32% от паметта на сървърите


Източник: opennet.ru
Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster