KSM (kernel same-page merging) — это технология ядра linux, позволяющая объединить одинаковые страницы в памяти для её экономии. В зависимости от типа нагрузки может оказаться весьма эффективной.
Данная статья является просто краткой заметкой, как включить ksm в debian подобных дистрибутивах.
Zram — это технология, которая позволяет создать блочное устройство в оперативной памяти, данные на котором при сохранении сжимаются одним из выбранных алгоритмов. Доступно их несколько, в зависимости от версии операционной системы. Например, в последней версии Proxmox — это lzo, lz4, lz4hc, deflate. По умолчанию используется lzo. Вероятно, т.к. он был добавлен в модуль ядра ранее и сохранён в качестве стандартной настройки в целях совместимости. Наиболее оптимальным на данный момент будет выбор в пользу lz4. Он обладает оптимальным соотношением скорости и коэффициента сжатия и очень быстр в распаковке. Кроме того, lz4 доступен практически во всех актуальных дистрибутивах linux. Для наглядности можно обратиться к таблице:
Чем может быть полезен swap в оперативной памяти:
Если в системе стоят обычные диски (не ssd)? это существенно ускорит сброс памяти в раздел подкачки
Для ssd дисков можно таким образом сократить объём записываемых данных на диск и продлить срок службы ssd
Более эффективное использование памяти
Тут стоит отметить, нет смысла создавать раздел zram swap больше чем размер памяти умноженный на 2, т.к. ожидаемый коэффициент сжатия у нас 2:1. На практике, если система станет настолько сильно своппить, что займёт удвоенный размер памяти в zram, то, скорее всего, и работать на ней будет уже не возможно, т.к. процесс отправки и извлечения данных из swap станет непрерывным. Не стоит доводить до такого состояния, лучше добавить памяти. Поэтому, мы не рекомендуем создавать zram раздел больше, чем объём физической памяти. Также очень полезным может оказаться использование backing_dev — сброс несжимаемых данных на физическое устройство, но это тема отдельной статьи.
Далее рассмотрим настройку zram в качестве swap файла в Proxmox VE. Данным пример должен сработать также в свежих версиях Debian (9, 10) и Ubuntu (начиная с 18-й версии). В данном примере 32G нужно заменить на Ваш размер раздела zram.