Когда СУБД приближается к пределу физической RAM, слово swap часто становится общим названием для любого движения страниц на накопитель. Из-за этого архитектурно разные механизмы выглядят одинаково: страница исчезла из DRAM, появилась на NVMe, а затем вернулась. Но для задержки и стоимости важен не только путь страницы, а цель системы, сигнал для решения и момент, когда оно принято.

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

Swap освобождает память в логике ОС

Linux управляет ограниченным набором физических страниц и возвращает память разными способами. Файловые страницы можно отбросить и при необходимости прочитать снова. Анонимные страницы процесса, если они должны сохраниться, могут быть записаны в swap. Когда приложение снова обращается к такой странице, возникает page fault, и содержимое возвращается с устройства в физическую память.

Сигналом для этого пути служит потребность системы в освобождении памяти. Параметр swappiness задаёт относительную оценку стоимости swap I/O и работы с файловыми страницами, но не сообщает ядру бизнес-ценность SQL-запроса или близость конкретной страницы к будущему обращению. Операционная система решает задачу сохранения работоспособности и баланса памяти на доступных ей сигналах.

Такой механизм не следует ругать за реактивность: он именно для этого и существует. Проблема начинается, когда от него ждут постоянного управления ёмкостью СУБД с заранее определённым p99. Если важная страница возвращается только после обращения приложения, задержка чтения попадает в критический путь запроса. Повторяющиеся возвраты способны одновременно занять I/O и растянуть хвост задержки.

Сжатые варианты подкачки имеют собственные цели и ресурсный обмен. Отдельное сравнение zram, zswap и предиктивной памяти объясняет цену CPU, RAM и I/O. В этой статье граница уже: обычный swap принимает решение внутри логики освобождения памяти, а предиктивное размещение строит управляемую иерархию для рабочего режима СУБД.

Предиктивный слой смотрит на ближайшую ценность

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

Цель здесь отличается от аварийного освобождения RAM. Система стремится поддерживать размещение до следующего обращения, а не только найти страницу для вытеснения после усиления давления. Возврат также является частью решения: если характер обращений меняется, странице снова назначается быстрый уровень. Так NVMe включается в планируемый контур памяти, а не становится складом с постоянным списком «ненужного».

Понятие cold memory и изменение рабочего набора важно именно поэтому. «Холодность» описывает наблюдаемое поведение на выбранном горизонте, а не свойство объекта навсегда. Предиктивный подход использует эту динамику, чтобы подготовить следующий вариант размещения до того, как цена промаха войдёт в p99.

Цель, сигнал и момент решения различаются

У swap цель системная: высвободить физическую память и дать ядру продолжить работу в условиях ограниченного ресурса. Сигнал связан с reclaim и давлением памяти. Момент решения определяется текущим состоянием подсистемы памяти, а результат виден через swap-in, swap-out, page faults, I/O и потерянное время задач.

У предиктивного уровня цель архитектурная: поддерживать требуемую СУБД ёмкость при заданной границе сервиса. Сигналом служит наблюдаемая последовательность обращений, из которой оценивается ближайшая ценность страниц. Решение охватывает и перемещение на NVMe, и своевременный возврат в DRAM, поэтому результат связывают не с одним системным счётчиком, а с полезной нагрузкой.

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

Отраслевой пример Meta TMO показывает класс проактивного offloading при низком давлении с обратной связью по PSI. Это не описание внутренней архитектуры другого продукта и не перенос результатов Meta. Исследование полезно как первичное подтверждение самого различия: объём переноса можно регулировать заранее и оценивать по реакции приложения, а не ждать только аварийной границы памяти.

Метрики связываются с SLO сервиса

Системные показатели объясняют путь, но решение принимает сервис. Swap-in и major faults показывают возвраты страниц; PSI memory и I/O — время, потерянное задачами из-за давления; очередь NVMe — конкуренцию на устройстве. Ни один показатель отдельно не говорит, выполнена ли бизнес-цель. Для этого их совмещают с p99 и числом операций внутри SLO.

Если при повторяемой фазе растут faults и PSI, а p99 выходит за целевую границу, реактивный путь уже имеет измеримую цену. Если рабочий набор растёт, но p99 сохраняется благодаря своевременному размещению, дополнительная ёмкость обслуживает полезную работу. Сравниваются одинаковые профили нагрузки и временные окна, а не просто гигабайты в разных уровнях.

Частые вопросы о swap и предиктивной памяти

Чем предиктивная память отличается от обычного swap?

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

NVMe означает, что система всё равно работает как swap?

Нет, один тип устройства не определяет архитектуру. В обычной подкачке NVMe хранит swap-страницы, выбранные подсистемой памяти. В предиктивной иерархии он является управляемым уровнем ёмкости, а модель принимает решения о перемещении и возврате по наблюдаемым обращениям. Физическая задержка NVMe учитывается через своевременность размещения и SLO.

Какие показатели показывают практическую разницу?

Для swap важны faults, swap-in/out, PSI и I/O в момент давления. Для предиктивного управления к ним добавляется связь размещения с фазой рабочего набора. Итог в обоих случаях проверяется на сервисе: p99, число операций внутри SLO и стоимость конфигурации для одинакового объёма нагрузки.

Повторяемые фазы становятся инвестиционным сигналом

Владелец решения не один. Платформенная команда отвечает за Linux, DRAM, NVMe и системную наблюдаемость. DBA понимает фазы СУБД и работу её буферов. Владелец сервиса определяет SLO и цену задержки. Вместе они связывают событие в памяти с операцией, которую бизнес действительно обслужил или потерял.

Инвестиционный сигнал появляется не при единичном page fault, а при повторяемой картине. Рабочий набор меняется предсказуемыми фазами, возвраты страниц входят в критический путь, PSI и p99 растут вместе, а линейное добавление DRAM повышает стоимость каждого следующего узла. В этот момент автоматическое управление ёмкостью становится архитектурной задачей.

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

gigaRAM в этой системе координат представляет предиктивный слой памяти, а не замену всем механизмам Linux. Его бизнес-результат оценивается по тому, сколько СУБД-нагрузки сервер обслуживает внутри SLO при заданных RAM, NVMe и I/O. Так решение о ёмкости опирается на стоимость промаха и полезную работу, а не на сходство названий.

Источники. Документация Linux о swappiness описывает относительную стоимость swap I/O и файлового paging. Документация Linux о page tables объясняет page fault и возврат страниц, ранее выведенных на постоянное хранилище.

Linux PSI является официальным источником о потерянном времени из-за давления CPU, памяти и I/O. Meta Engineering: Transparent Memory Offloading используется как первичный отраслевой пример проактивного управления offloading с обратной связью, без переноса его реализации и результатов.

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