Пользователь
46,5
рейтинг
30 апреля 2012 в 21:36

Администрирование → Экономим память с помощью UKSM

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
карма
622,0
рейтинг 46,5
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (16)

  • 0
    А если после совмещения происходят изменения? Тогда память опять увеличивается?
    • +12
      Кэп подсказывает, что да.
    • 0
      Наверняка что-то аналогично copy-on-write (а то и оно один-в-один).
      • 0
        KSM это технология комплементарная COW (Copy-On-Write)

        Т.е. она находит одинаковые страницы, объединяет их и помечает как COW. Дальше действуют стандартные механизмы виртуальной памяти.
        Если процесс пишет в COW страницу хотя бы один байт, то страница физически копируется в другое место и вносится изменение в карту виртуальной памяти изменяющего процесса. После этого уже происходит запись изменений.
  • 0
    Вот как бы эту штуку с openvz заставить работать
    • 0
      Наверное, никак. Там патча под такие старые ядра, вроде, нет.
  • 0
    не в курсе, не планируется в vanilla включать?
    • 0
      Пока ни то что не планируют включать в ваниллу, а даже англоязычное коммьюнити собирать(сайт на китайском)
  • +1
    Поставил на VPS — полет нормальный. Погонял нагрузочные тесты — вроде есть профит. На метров 100 больше свободной RAM остается. При общем объеме в 512Мб — существенная экономия.
    • 0
      На vps в смысле — внутрь виртуалки, или снаружи?
      • 0
        Внутрь, на веб-сервер. У меня критически важных проектов на нем нет, стрёма поэтому тоже нет.
  • 0
    Его уже можно ставить в продакшен, или ахтунговато?
  • 0
    Интересно, как сказывается на производительности в итоге
    • 0
      RAM работает быстрее диска, поэтому avoidance свопа и ре-подгркузки с диска образов приложений рулит.
    • 0
      Практически никак, загрузка процессора не поднялась.

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