Facebook выпустил патчи, улучшающие контроллер памяти Slab в Linux

Роман Гущин (инженер-программист Facebook) реестр в списке разработчиков ядра Linux, набор патчей к приложению отображения памяти контроллера slab (контроллер памяти).

Новый контроллер замечательный за счет перемещения блочного учета с уровня страницы памяти на уровень объекта ядра, что дает возможность совместно использовать slab-страницы в разных группах c, вместо того, чтобы выделять отдельные кэши slab для каждой группы c.

Роман обнаружил то, что он назвал «очень серьезным недостатком» в существующем контроллере памяти slab, который в наши дни приводит к низкому использованию cgroups.

«Настоящая причина, по которой существующий дизайн приводит к низкому использованию slab, проста: страницы slab используются исключительно пулом памяти.

Если cgroup делает только несколько распределений определенного размера, или если после удаления cgroup осталось несколько активных объектов, или cgroup содержит однопоточное приложение, которое почти не выделяет какие-либо объекты ядра, но каждый раз новый ЦП: во всех этих случаях результирующая загрузка плиты очень низка.

Если учет kmem отключен, ядро ​​может использовать свободное пространство на страницах slab для других распределений. «

Предлагаемый контроллер памяти Slab Романо Гущина в прошлом году был достаточно многообещающим, поскольку увеличивает эффективность использования плиты, уменьшить размер используемой памяти для slab на 30-45% и значительно снизит общее потребление памяти ядром.

Кроме того, реализованные патчи указали что Facebook уже использует этот код на своих серверах и был экономия ~ 650-700 МБ + для интерфейсных веб-серверов, кэширование баз данных и DNS-серверы, среди других наград.

За счет уменьшения количества немобильных плит также наблюдается положительный эффект в области уменьшения фрагментации памяти. Новый контроллер памяти значительно упрощает код для учета плиты и не требует сложных алгоритмов для динамического создания и удаления блочных кэшей для каждой группы c.

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

Реализованный в новом контроллере slab более точный учет ресурсов должен теоретически больше нагружать CPU, но на практике различия оказались незначительными.

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

Патч содержит пару полунезависимых частей, которые также могут найти свое применение вне контроллера памяти slab:

  • API загрузки подстраницы, который можно использовать в будущем для подсчета других объектов, размер которых не соответствует размеру страницы, например выделения percpu
  • API mem_cgroup_ptr, в котором подсчитываются указатели на memcg, можно повторно использовать для эффективного повторного родительства других объектов, например кэша страниц.

Al mismo tiempo, наблюдается значительное снижение потребления памяти- На некоторых хостах можно было сэкономить до 1 ГБ памяти, но этот показатель во многом зависит от характера нагрузки, общий объем оперативной памяти, объем процессора и характеристики работы с памятью.

Вместо создания отдельного набора kmem_caches для каждой контрольной группы памяти используются два глобальных набора: корневой набор для неучтенных и назначений контрольной группы корневой группы, а второй набор для всех остальных назначений. Это позволяет упростить управление временем жизни отдельных kmem_cache.

Наконец, если вам интересно узнать новый набор из 19 патчей, его можно найти в списке. почта ядра.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.