Когда СУБД упирается в память, одинаковое слово «расширить» может означать три разные задачи. Сервер способен плотнее использовать уже установленную RAM за счёт сжатия, сократить обращения к обычному swap или добавить физическую ёмкость NVMe под управлением модели. Эти варианты расходуют разные ресурсы.

zram, zswap и предиктивная память не образуют рейтинг от худшего к лучшему. zram создаёт сжатое блочное устройство в оперативной памяти. zswap удерживает swap-страницы в сжатом RAM-кэше. Предиктивный слой управляет тем, какие физические страницы находятся в DRAM и на NVMe.

Для CTO главный вопрос звучит не «какая технология быстрее», а «за какой ресурс платит конфигурация и какую сервисную цель она достигает». Сжатие обменивает процессорное время на более плотное использование RAM. NVMe добавляет отдельную ёмкость, но вводит I/O. Результат сравнивается по p99, SLO и стоимости обслуженной нагрузки.

zram увеличивает плотность внутри RAM

Документация Linux определяет zram как блочное устройство, основанное на оперативной памяти. Данные, записанные на него, сжимаются и хранятся в самой RAM. Такое устройство часто используют как swap, но оно также может служить для временных данных и других сценариев блочного доступа.

Источник ёмкости здесь — коэффициент сжатия. Если страницы хорошо сжимаются, их логический объём заметно превышает физически занятый. Если данные уже сжаты, зашифрованы или близки к случайным, выигрыш будет другим. Универсальная пропорция для СУБД из механизма не следует.

Цена тоже находится внутри сервера. Процессор сжимает страницы при записи и распаковывает при чтении. Оперативная память хранит сжатые данные, метаданные и накладные расходы распределителя. Поэтому заявленный размер устройства не равен фактически высвобождённой RAM.

Linux экспортирует отдельные показатели исходного размера, сжатого объёма и всей памяти, занятой zram. Для платформенной команды это полезное разделение: она видит не виртуальную ёмкость как обещание, а фактический обмен RAM и CPU на конкретной нагрузке.

zswap уменьшает часть swap I/O

zswap занимает другое место в пути памяти. Документация Linux называет его лёгким сжатым кэшем для swap-страниц. Когда страницу собираются вывести в swap, zswap пытается сжать её и сохранить в динамическом пуле оперативной памяти.

Если страница вскоре понадобится снова, её можно получить из сжатого пула без чтения с основного swap-устройства. При заполнении пула часть данных покидает его и записывается на backing swap. Поэтому zswap не является новым блочным устройством общего назначения: он оптимизирует конкретный путь swap.

Ресурсный обмен понятен. Компрессия расходует CPU, а пул занимает RAM, зато часть обращений к более медленному устройству не происходит. Ценность зависит от сжимаемости страниц, частоты повторных обращений и цены I/O именно на этом сервере.

Эта задача отличается от расширения физического уровня. zswap повышает эффективность существующего пути, но его ёмкость остаётся связанной с выделенным RAM-пулом и backing swap. Сервисный эффект измеряется не размером пула, а тем, как изменились задержка, I/O и полезная работа СУБД.

Предиктивная память управляет DRAM и NVMe

Предиктивный слой использует NVMe как отдельный физический уровень ёмкости. Он не получает пространство за счёт упаковки байтов внутри DRAM. Его задача — определить, каким страницам сейчас нужен быстрый уровень и какие могут находиться на NVMe до следующего возврата.

В gigaRAM предиктивная математическая модель по реальным обращениям решает, что, куда и когда перемещать или возвращать между DRAM и NVMe. Решения принимаются ниже приложения и не требуют ручных правил для таблиц, ключей или страниц. DRAM и NVMe становятся управляемой иерархией.

Сжатие отвечает на вопрос «сколько байтов поместится в RAM после упаковки». Предиктивное размещение отвечает на вопрос «какому физическому уровню поручить страницу в текущей фазе». Хорошо сжимаемая страница может быть критичной для p99, а плохо сжимаемая — обращаться редко. Эти признаки не заменяют друг друга.

Подробное отличие предиктивного управления от обычного swap как реактивного механизма раскрывается отдельно. Здесь важна ресурсная граница: дополнительную ёмкость предоставляет NVMe, а модель связывает её с DRAM по поведению реальной нагрузки.

Три механизма отвечают на разные вопросы

Сравнение удобно свести к одному управленческому экрану. Он не выбирает победителя заранее, а показывает, какой бюджет и какой результат надо измерять.

МеханизмОсновная цельКакой ресурс расходуетУправленческий вопрос
zramПлотнее разместить данные в существующей RAMCPU на сжатие и RAM на сжатый объёмДостаточен ли выигрыш сжатия при целевом p99?
zswapСократить часть обращений к backing swapCPU и RAM-пул, при необходимости I/O swapСколько полезного I/O удалось избежать в критичную фазу?
Предиктивная память DRAM+NVMeДобавить управляемый физический уровень ёмкостиNVMe, I/O и вычисление решений размещенияКакой объём нагрузки обслуживается внутри SLO при данной конфигурации?

Таблица также показывает риск смешения. Если проблема — нехватка физической ёмкости, один коэффициент сжатия не описывает весь вариант. Если CPU уже насыщен, дополнительная компрессия конкурирует с запросами. Если NVMe занят вводом-выводом СУБД, новый страничный поток рассматривается вместе с этим контуром.

Сочетание механизмов не следует предполагать автоматически. У них могут пересекаться процессорные, RAM- и I/O-бюджеты. Архитектура начинается с одной диагностированной цели, после чего команда измеряет итог на сервисе, а не складывает виртуальные гигабайты из разных механизмов.

Владельцы связывают ресурс с p99

Платформенная команда владеет конфигурацией RAM, CPU, NVMe и системной наблюдаемостью. DBA знает рабочие фазы, I/O базы и критичные запросы. Владелец сервиса задаёт SLO и цену задержки. Только вместе они могут решить, какой ресурс действительно ограничивает рост.

Linux PSI помогает перевести давление CPU, памяти и ввода-вывода в потерянное время выполнения. Материал о PSI и давлении памяти показывает, почему один высокий счётчик не равен бизнес-проблеме: важна связь с периодами, когда задачи перестают выполнять полезную работу.

Для zram команда сопоставляет сжатый объём с загрузкой CPU и p99. Для zswap — попадания в сжатый пул, backing I/O и задержку. Для предиктивной ёмкости — размещение страниц, I/O NVMe, объём DRAM и число операций внутри SLO. Метрики разные, итоговая единица одна.

Сигнал инвестировать в дополнительную ёмкость возникает, когда сжатие уже является осознанным CPU-компромиссом, рабочий набор продолжает расти, а линейная покупка DRAM повышает стоимость узла. Тогда DRAM+NVMe рассматривается как отдельная архитектура, а не как ещё один параметр swap.

Стоимость определяет обслуженная нагрузка

Цена гигабайта не соединяет три механизма в корректное сравнение. У zram и zswap часть стоимости выражена в процессорном времени и занятой RAM. У предиктивной памяти появляются NVMe и I/O. У всех вариантов есть влияние на хвост задержки и операционную работу.

Для действующего сервера бизнес сравнивает, сколько запросов или транзакций остаётся в пределах SLO при той же аппаратной базе. Для новой конфигурации — сколько полезной нагрузки обслуживает узел за выбранный бюджет. Такой подход не требует универсального процента замещения.

gigaRAM в этой системе координат представляет управление физической ёмкостью, а не сжатую память или замену механизмов Linux. zram и zswap сохраняют собственные роли. Выбор становится яснее, когда каждый инструмент оценивается по своей цели и общему результату сервиса.

Итоговая архитектура может использовать DRAM, CPU и NVMe в разных пропорциях, но последовательность остаётся одной. Сначала формулируется ограничение, затем определяется ресурсный обмен, после чего p99 и SLO подтверждают бизнес-эффект. Так память СУБД масштабируется без смешения технологий с разными задачами.

Источники. Документация Linux zram определяет сжатое блочное устройство в RAM и показатели исходного, сжатого и фактически занятого объёма. Документация Linux zswap описывает сжатый кэш swap-страниц и обмен процессорного времени на сокращение swap I/O.

Документация Linux DAMON подтверждает класс наблюдения за доступами. Meta Engineering: Transparent Memory Offloading используется как первичный отраслевой пример автоматического управления неоднородной памятью; его реализация и результаты на другой продукт не переносились.

Технология gigaRAM — единственная коммерческая ссылка и источник описания предиктивного размещения страниц между DRAM и NVMe.