Экономим память с помощью UKSM

в 17:36, , рубрики: linux, ram, память, метки: , ,

UKSM (Ultra Kernel Samepage Merging) — технология совмещения одинаковых страниц памяти в одну.

UKSM вдохновлен KSM(технология от RedHat), но практически полностью переписан.
У KSM есть несколько недостатков:

  • Непрозрачность для пользователя и разработчика. Программа должна сообщать ядру, какие страницы объединить, этим пользуются редко
  • Достаточно глупый алгоритм: сканирует память с постоянной скоростью. Зачем тратить CPU, если нет страниц, которые можно объединить?
  • Достаточно медленный: максимальная скорость сканирования, которой удалось добиться при тестах ­— 260 МБ/с.


И тут приходит UKSM:

  • Сканирует память сам. Разработчикам не нужно править исходники.
  • Не тратит CPU зря. UKSM автоматически определяет несовмещенные страницы, основываясь на истории случайных выборок. Пространству с большим количеством известных несовмещенных страниц дается вся скорость, в то время как пространству с низким количеством совмещаемых страниц отдается низкий приоритет, практически не расходуя циклы процессора.
  • Очень высокая скорость работы. Для этого используется новый алгоритм хэширования. Обычно, чтобы отличить страницы одну от другой, достаточно прохэшировать только ее часть. В лучшем случае, алгоритму достаточно прохэшировать только одно 32-битное слово, а не всю страницу, а в худшем, его скорость сравнима с SuperFastHash. Скорость поиска страниц: 627 — 2445 МБ/с, а скорость совмещения: 477 — 923 МБ/с. Также, не тратится CPU и в зонах трешинга, что дает значительно меньшее использование процессорного времени взамен немного худшей экономии памяти.

Какой выигрыш можно получить?
На моем десктопе, потребляемая память сократилась на 50-100МБ. В идеале, 10 одинаковых виртуалок будут потреблять оперативную память, как одна.

Сайт проекта: kerneldedup.org/en/

Автор: ValdikSS

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js