Разработчик ядра Linux Кайруи Сун (Kairui Song) представил обновленный набор патчей для механизма MGLRU-FG (Frequency Guided Promotion for MGLRU). Эта технология направлена на совершенствование алгоритмов управления памятью в ядре, обеспечивая более интеллектуальное продвижение страниц в активные уровни на основе частоты обращений.
Принципы работы частотно-ориентированного продвижения
Суть нововведения заключается в дополнении существующей системы защиты MGLRU, основанной на времени вытеснения, механизмом продвижения, который опирается на частоту доступа. В рамках реализации разработчик ввел унифицированный набор вспомогательных функций, работающих со счетчиком обращений (refs) конкретного фолио. При каждом обращении значение счетчика увеличивается. Эти данные теперь сопоставляются с логарифмической структурой уровней и новыми пороговыми значениями: LRU_REFS_REFERENCED (1), LRU_REFS_WORKINGSET (2), LRU_REFS_PROTECTED (3) и LRU_REFS_MAX (7).
Когда счетчик достигает определенного порога, страница переводится на более высокий уровень проактивно, не дожидаясь срабатывания PID-контроллера. Кроме того, упрощено использование флагов PG_workingset и PG_referenced: теперь они занимают младшие два бита счетчика, а более высокие биты обеспечиваются маской LRU_REFS_MASK. Это изменение позволило сократить использование битов для учета ссылок на один, при этом сделав систему учета более точной.
Результаты тестов и перспективы развития
По словам Кайруи Суна, основной целью разработки было повышение способности системы LRU более эффективно определять «горячие» рабочие наборы данных. Тестирование, проведенное на серверах различных архитектур, настольных ПК и устройствах Android, показало стабильные и многообещающие результаты. В различных сценариях наблюдается прирост производительности от 10% до 40% либо значительное снижение количества повторных обращений к вытесненным страницам.
Конкретные показатели производительности выглядят следующим образом:
- При компиляции ядра Linux с 96 потоками время выполнения сократилось почти на 10 секунд в условиях повышенной нагрузки на память.
- Производительность MongoDB увеличилась на 13,5%.
- В тестах Chromium и Node.js, использующих zRAM в качестве раздела подкачки, зафиксировано улучшение показателей на 76%.
- В тестах FIO пропускная способность возросла до 11%.
Несмотря на то, что текущая версия патчей уже демонстрирует стабильность и высокую эффективность, автор классифицирует проект как RFC (Request for Comments). Это связано с фундаментальным характером изменений, затрагивающих работу механизмов Active/Inactive. Разработчик также отметил, что в текущей версии V3 наблюдается влияние чрезмерного восстановления анонимной памяти, что потребует дополнительной корректировки в будущих обновлениях.






