Один из членов команды разработки социальной сети Facebook, Роман Гущин, предложил в рассылке разработчиков набор из патчей для ядра Linux, направленных на улучшение работы с памятью через реализацию нового контроллера управления оной - slab (slab memory сontroller). Распределение slab –– это механизм управления памятью, предназначенный для более эффективного распределения памяти и устранения значительной фрагментации. Основой этого алгоритма является сохранение выделенной памяти, содержащей объект определенного типа, и повторное использование этой памяти при следующем выделении для объекта того же типа. Этот метод был впервые введен в SunOS Джефом Бонвиком и сейчас широко используется в ядрах многих операционных систем Unix, включая FreeBSD и Linux. В основе нового контроллера лежит перенос учёта slab с уровня страниц памяти на уровень объектов ядра, что предоставляет возможность совместного использования одной slab-страницы в разных cgroup, вместо выделения отдельного кэша для каждой cgroup. По результатам испытаний следует, что предложенный метод управления памятью позволяет повысить эффективность использования slab до 45%, а также понизит общее потребление памяти ядром ОС. Также за счет сокращения количества выделяемых под slab страниц уменьшается фрагментация памяти в целом, что не может не сказаться на быстродействии системы. Новый контроллер уже несколько месяцев тестируется на рабочих серверах Facebook, и пока это тестирование можно назвать успешным: при отсутствии потерь в быстродействии и увеличения количества ошибок замечено явное уменьшение расхода памяти — на некоторых серверах до 1Гб. Это число довольно субъективно, так, например, ранее проведенные тесты показали немного меньшие результаты: 650-700 МБ на веб-фронтенде 750-800 МБ на сервере с кэшем баз данных 700 МБ на DNS-сервере >>> [ Страничка автора на GitHub ](
https://github.com/rgushchin ) >>> [ Результаты ранних тестов ](
https://lwn.net/Articles/798605/ )
Ссылка:
https://www.linux.org.ru/news/linux-general/15659654