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-сервере.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Facebook предложил новый механизм управления памятью slab для ядра Linux», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.