» » » Как и зачем мы оптимизировали алгоритм очистки SLAB-кэшей в ядре Linux

 

Как и зачем мы оптимизировали алгоритм очистки SLAB-кэшей в ядре Linux

Автор: admin от 11-01-2019, 06:40, посмотрело: 28

Рост популярности контейнеров и их использование в совокупности с контрольными группами выявили серьезную проблему масштабируемости, которая приводит к значительному падению производительности на больших машинах. Проблема в том, что время обхода SLAB-кэшей зависит квадратично от количества контейнеров, а активное потребление больших объемов памяти за короткий период может стать причиной ухода системы в busy loop, потребляющий 100% процессорного времени. Сегодня мне хотелось бы рассказать, как мы решили эту проблему, изменив алгоритм учета использования контрольной группой memcg объектов SLAB-кэшей и оптимизировав функцию shrink_slab().



Как и зачем мы оптимизировали алгоритм очистки SLAB-кэшей в ядре Linux



коммите на Github.



Если повторить тест сбросf кэшей, то с использованием нового алгоритма он показывает существенно лучшие результаты:

$time echo 3 > /proc/sys/vm/drop_caches

Первая итерация: 0.00user 1.10system 0:01.10elapsed 99%CPU

Вторая итерация: 0.00user 0.00system 0:00.01elapsed 64%CPU

Третья итерация: 0.00user 0.01system 0:00.01elapsed 82%CPU

Четвертая итерация: 0.00user 0.00system 0:00.01elapsed 64%CPU

Пятая итерация: 0.00user 0.01system 0:00.01elapsed 82%CPU



Поскольку аналогичные действия по сбросу кэшей происходят при каждой нехватке памяти на машине, то эта оптимизация существенно улучшает работу машин с большим количеством контейнеров и контрольных групп памяти. Набор патчей (17 штук) был принят в ванильное ядро, и вы можете найти его там, начиная с версии 4.19.



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

В результате патчсет был принят с 9-й итерации; а его вхождение в ванильное ядро заняло около 4-х месяцев. Также на сегодня патчсет включен в наше собственное ядро Virtuozzo 7, начиная с версии vz7.71.9

Источник: Хабр / Интересные публикации

Категория: Linux

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *