Об этом сообщили инженеры Facebook. через отчет, внедрение технологии Денежный перевод по телеграфу (Прозрачная разгрузка памяти) в прошлом году, что позволяет существенно экономить оперативную память на серверах путем перемещения вторичных данных, которые не требуются для работы, на более дешевые диски, такие как твердотельные накопители NVMe.
Facebook оценивает, что TMO экономит от 20% до 32% оперативной памяти на каждом сервере. Решение предназначено для использования в инфраструктурах, где приложения работают в изолированных контейнерах. Компоненты TMO на стороне ядра они уже включены в ядро Linux.
На стороне ядра Linux операция технологии обеспечивается подсистемой PSI (Информация о остановке под давлением), поставляется с версии 4.20.
PSI уже используется в различных драйверах памяти и позволяет анализировать информацию о времени ожидания получения различных ресурсов (процессор, память, ввод-вывод). Благодаря PSI процессоры пользовательского пространства могут более точно оценивать загрузку системы и закономерности замедления, позволяя обнаруживать аномалии до того, как они окажут заметное влияние на производительность.
В пользовательском пространстве компонент Senpai запускает TMO., который динамически регулирует лимит памяти для контейнеров приложений через cgroup2 на основе данных, полученных от PSI.
Сенпай анализирует признаки начала нехватки ресурсов через PSI, оценивает чувствительность приложений к медленному доступу к памяти и пытается определить минимальный размер требуемой памяти для контейнера, в котором данные, необходимые для задания, остаются в ОЗУ, а связанные данные, которые находились в файловом кеше или в настоящее время напрямую не используются, вытесняются в раздел подкачки.
Прозрачная разгрузка памяти (TMO) — это решение Meta для гетерогенных сред центров обработки данных. В нем представлен новый механизм ядра Linux, который измеряет потерю работы из-за нехватки ресурсов ЦП, памяти и ввода-вывода в режиме реального времени. Руководствуясь этой информацией и не имея каких-либо предварительных знаний о приложении, TMO автоматически регулирует объем памяти для выгрузки на гетерогенное устройство, такое как сжатая память или твердотельный накопитель. Это делается на основе характеристик производительности устройства и чувствительности приложения к более медленному доступу к памяти.
Таким образом, суть TMO в том, чтобы держать процессы на "строгой диете" в плане потребления памяти, принудительное перемещение в раздел подкачки неиспользуемых страниц памяти, удаление которых не оказывает заметного влияния на производительность (например, страницы с кодом, используемым только при инициализации, и одноразовые данные, кэшированные на диске). В отличие от сброса данных в раздел подкачки в ответ на нехватку памяти, TMO сбрасывает данные на основе предиктивного прогнозирования.
Отсутствие доступа к странице памяти в течение 5 минут используется как один из критериев предпочтения. Эти страницы называются холодными и в среднем занимают около 35% памяти приложения (в зависимости от типа приложения колеблется от 19% до 65%).
Предпочтение учитывает активность, связанную с анонимными страницами памяти (память, выделенная приложением) и память, используемая для кэширования файлов (выделенная ядром). В некоторых приложениях основное потребление занимает анонимная память, но в других очень важен файловый кеш.
Чтобы избежать дисбаланса при сбросе памяти в кеш, TMO использует новый алгоритм разбиения по страницам, который пропорционально сбрасывает анонимные страницы и страницы, связанные с файловым кешем.
Перемещение редко используемых страниц в более медленную память не сильно влияет на производительность, но может значительно снизить затраты на оборудование. Данные отправляются на твердотельные накопители или в сжатое пространство подкачки в ОЗУ. По стоимости хранения одного байта данных использование твердотельных накопителей NVMe до 10 раз дешевле, чем использование сжатия в оперативной памяти.
Наконец, если вам интересно узнать об этом больше, вы можете ознакомиться с подробностями По следующей ссылке.
можно ли это использовать на обычных компьютерах с обычными приложениями?