Компанія Meta розробила нову технологію стиснення даних під назвою CRAM, призначену для оптимізації використання оперативної пам'яті в середовищі Linux. Основна відмінність рішення від наявних механізмів, зокрема ZRAM і Zswap, полягає у відмові від підкачки на диск. Замість імітації блочного пристрою для тимчасового зберігання даних CRAM зберігає стиснуті об'єкти безпосередньо в оперативній пам'яті, що дозволяє уникнути затримок, характерних для традиційних методів управління пам'яттю.
Технічна реалізація CRAM передбачає використання спеціального вузла NUMA, який функціонує як окремий обчислювальний ресурс. Такий підхід дає ядру Linux змогу продовжувати працювати зі стиснутими даними як зі звичайними сегментами пам'яті, використовуючи наявні механізми міграції та динамічного масштабування. Для запобігання системним збоям у моменти високого навантаження розробники впровадили інструмент, відомий як Chicken Bit. Він тимчасово призупиняє процеси алокації, якщо швидкість запису перевищує можливості системи стиснення обробляти вхідний потік інформації.
Ефективність технології підтверджується вимірюваннями продуктивності при читанні даних. У режимі лише для читання швидкість операцій досягає 489 мільйонів операцій на секунду, що перевищує показники ZRAM, які становлять близько 1,1 мільйона операцій на секунду. Таке прискорення у 452 рази пояснюється усуненням накладних витрат на виникнення помилок доступу до сторінок пам'яті та відмовою від взаємодії з шаром підкачки. Це дозволяє системі працювати зі швидкістю, близькою до пропускної здатності DRAM.
Ситуація суттєво змінюється при виконанні операцій запису, оскільки стиснуті дані потребують декомпресії та перенесення до іншого домену NUMA для внесення змін. У тестах із 20 відсотками операцій запису швидкість CRAM перевищує продуктивність ZRAM у 5,4 раза. Незважаючи на падіння продуктивності порівняно з режимом читання, показник залишається суттєвим для серверної інфраструктури, де обсяги оброблюваних даних вимірюються терабайтами, а ефективність роботи пам'яті є критичним фактором загальної продуктивності обчислювальних систем.
Поточний статус проєкту CRAM характеризується як етап триваючих досліджень, оскільки розробники ще не вирішили проблему точного прогнозування доступного обсягу пам'яті при змінному коефіцієнті стиснення. Різні типи даних стискаються неоднаково, що створює непередбачуваність щодо фактичної місткості оперативної пам'яті. Однак завдяки потенційній інтеграції в ядро Linux ця технологія може отримати широке застосування в серверному сегменті та на пристроях з обмеженими ресурсами, де оптимізація використання пам'яті прямо впливає на стабільність роботи програмного забезпечення.
7
