Facebook предложил новый механизм управления памятью slab для ядра Linux
23 апреля 2020 года
Роман Гущин ( Roman Gushchin) из компании Facebook опубликовал в списке рассылки разработчиков ядра Linux набор патчей с реализацией нового контроллера распределения памяти slab (slab memory controller). Новый контроллер примечателен переносом учёта slab с уровня страниц памяти на уровень объектов ядра, что даёт возможность совместно использовать slab-страницы в разных cgroup, вместо выделения отдельных кэшей slab для каждой cgroup.
Предложенный подход позволяет повысить эффективность использования slab, на 30-45% сократить размер используемой для slab памяти и значительно уменьшить общее потребление памяти ядром. За счёт сокращения числа неперемещаемых slab также наблюдается положительный эффект в области снижения фрагментации памяти. Новый контроллер памяти заметно упрощает код для учёта slab и не требует применения усложнённых алгоритмов динамического создания и удаления slab-кэшей для каждой cgroup. Все cgroup для памяти в новой реализации используют общий набор кэшей slab, а время жизни кэшей slab больше не привязано к времени жизни установленных через cgroup ограничений на использование памяти.
Реализованный в новом контроллере slab более точный учёт ресурсов теоретически должен больше нагружать CPU, но на практике различия оказались несущественными. В частности, новый контроллер slab уже несколько месяцев используется на рабочих серверах Facebook, обрабатывающих разные виды нагрузки, и заметных регрессий пока не выявлено. При этом наблюдается существенное снижение расхода памяти - на некоторых хостах удалось сэкономить до 1ГБ памяти, но данный показатель сильно зависит от характера нагрузки, общего размера ОЗУ, числа CPU и особенностей работы с памятью. Ранее проведённые тесты показали снижение расхода памяти на 650-700 МБ (42% от slab-памяти) на web-фронтэнде, 750-800 МБ (35%) на сервере с кэшем СУБД и 700 МБ (36%) на DNS-сервере.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.