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

Додати коментар або відгук