LINUXTALKS.CO

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

 

L


0

0

Инженеры из компании 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, оценивает чувствительность
приложений к замедлению доступа к памяти и пытается определить тот
минимально необходимый контейнеру размер памяти, при котором требуемые
для работы данные остаются в ОЗУ, а сопутствующие данные, осевшие в
файловом кэше или напрямую не используемые в данный момент, вытесняются
в раздел подкачки.

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

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

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

>>> Подробности

★★☆☆☆

Звучит так, будто они переизобретают кэш, только задом наперёд

Нужны эксперты по ядру линукса. Насколько их подход разумен? Я не знаю.

Crocodoom    
★★★★★
Linux / Chrome

Но в целом это очевидное отражение кризиса идеи «хай тормозит, докупят планок памяти ессичо»

Crocodoom    
★★★★★
Linux / Chrome
Ответ на: комментарий от Crocodoom

Они изобрели «умный» своп. Хотя, кмк, болезни будут такие же – внезапные проседания производительности, когда понадобятся данные вытесненные в TMO.

cocucka    
★★★★★★★★★★★
Linux / Firefox
Ответ на: комментарий от cocucka

болезни будут такие же – внезапные проседания производительности, когда понадобятся данные вытесненные в TMO.

решение рассчитано на применение в инфраструктурах, в которых приложения запускаются в изолированных контейнерах.

Понятно всё. Если контейнеров тыщи штук, то «в среднем» это, наверное, и правда будет работать. Ну а «не в среднем» (пиковые просадки) можно на отчётах просто не показывать 🙂

P.S. Матан-куну: по L2 у них будет всё ок, по C0 скорее всего нет

Crocodoom    
★★★★★
Linux / Chrome

В качестве одного из критериев для вытеснения используется отсутствие обращения к странице памяти в течение 5 минут

Чего только не придумают, лишь бы говнокоды не фиксить.

d_a    
★★★★★★★★
Linux / Chrome
Ответ на: комментарий от d_a

Полагаю что это слишком дорого.

torvn77    
★★★
Android / Chrome
Ограничение на отправку комментариев: только для зарегистрированных пользователей, score>=90