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

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

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

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

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

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

Един от критериите за изгонване е липсата на достъп до страницата с памет за 5 минути. Такива страници се наричат ​​страници със студена памет и съставляват средно около 35% от паметта на приложението (в зависимост от типа приложение има диапазон от 19% до 65%). Изпреварването взема предвид дейността, свързана с анонимни страници с памет (памет, разпределена от приложението) и памет, използвана за кеширане на файлове (разпределена от ядрото). В някои приложения основната консумация е анонимна памет, но в други файловият кеш също е важен. За да избегне дисбаланси при изваждане на кеша, TMO използва нов алгоритъм за пейджинг, който пропорционално изгонва анонимни страници и страници, свързани с файловия кеш.

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

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


Източник: opennet.ru

Добавяне на нов коментар