
MongoDB прибавила 13,5% в тестах новых патчей памяти Linux
Экспериментальные патчи MGLRU-FG улучшили результат теста Chromium и Node.js с zRAM в качестве swap на 76%, по данным разработчика Kairui Song. В других нагрузках выигрыш оказался скромнее: около 13,5% для MongoDB и до 11% по пропускной способности FIO. Автор опубликовал третью версию серии, но она пока остаётся предложением для обсуждения — RFC — и не включена в основное ядро Linux.
Патчи меняют работу Multi-Gen LRU — механизма, который помогает ядру выбирать, какие страницы памяти сохранить, а какие вытеснить при нехватке RAM. Если система освобождает активно используемые данные, вскоре их приходится загружать снова. MGLRU-FG должен точнее распознавать такие данные и заранее усиливать их защиту от вытеснения.
Для этого используется счётчик обращений refs. По мере его роста страница может переходить в более защищённое состояние. Механизм дополняет существующую защиту MGLRU: продвижение происходит при учёте обращений, без ожидания решения контроллера на этапе вытеснения.
Пороги счётчика обозначены как LRU_REFS_REFERENCED со значением 1, LRU_REFS_WORKINGSET — 2 и LRU_REFS_PROTECTED — 3. Максимальное значение LRU_REFS_MAX составляет 7. Также серия упрощает использование флагов PG_workingset и PG_referenced, сокращая число занятых битов флагов страницы на один.
Помимо тестов приложений, разработчик проверил сборку ядра Linux. При запуске 96 параллельных задач, увеличивающих нагрузку на управление памятью, время сборки сократилось почти на 10 секунд. По словам Song, серия проверялась на серверах с разными архитектурами, настольных компьютерах и устройствах Android.
Общую оценку в 10–40% важно читать с уточнением: в зависимости от теста автор говорит либо о росте производительности, либо о снижении числа повторных обращений к уже вытесненным страницам — refault. Это разные показатели. Меньшее число refault не означает автоматически такой же процент ускорения приложения.
Результат в 76% тоже относится к конкретному сценарию с Chromium, Node.js и zRAM в роли swap. Он не обещает аналогичного ускорения повседневной работы браузера или любого JavaScript-приложения. Представленные измерения принадлежат автору патчей, а не независимому тестированию Phoronix.
У третьей версии остаётся известная проблема: по сравнению со второй она сильнее подвержена избыточному вытеснению анонимной памяти. Разработчик предлагает исправить это отдельно или в следующих версиях. Он считает текущую реализацию стабильной и пригодной для использования, однако сохраняет статус RFC из-за масштаба изменений.
Сроки включения MGLRU-FG в основное ядро пока неизвестны. Поэтому обычное обновление ядра Linux само по себе не даст описанного выигрыша: для проверки этих результатов нужна сборка с экспериментальной серией патчей.
Источник: Phoronix