Размещение файла подкачки в сжатом RAM-диске позволяет системе выгружать неиспользуемые страницы памяти не на медленный диск, а в сжатую область самой оперативной памяти — и это кардинально меняет поведение компьютера при нехватке RAM. Вместо долгих обращений к SSD или HDD система просто сжимает данные и держит их в быстрой памяти, а при обращении распаковывает за микросекунды. Именно так работают механизмы zram и zswap в Linux, а также сжатие памяти в Windows 10/11 и macOS.

Идея выглядит парадоксально: подкачка внутри самой оперативной памяти, которой и так не хватает. Но за счёт сжатия данные типичной рабочей нагрузки уменьшаются в несколько раз, поэтому «сжатый своп» фактически расширяет полезный объём RAM. В этой статье разберём принцип работы механизма, его плюсы и ограничения, а также как настроить его в разных системах.

Как работает подкачка в сжатой области памяти

Классический файл подкачки (pagefile или swap) — это область на диске, куда операционная система выгружает страницы памяти, которые давно не использовались. Проблема в том, что даже быстрый NVMe-накопитель на порядки медленнее оперативной памяти, а при активном свопинге система начинает заметно «тормозить».

Сжатый RAM-диск решает эту проблему иначе. Система создаёт виртуальное блочное устройство, физически расположенное в оперативной памяти, но все записываемые в него страницы предварительно сжимаются. Типичные рабочие данные — текст, код, кэш приложений — сжимаются в 2–3 раза и более, поэтому фактический расход RAM оказывается значительно меньше объёма выгруженных данных.

Когда приложению снова нужна выгруженная страница, происходит обратная операция: данные распаковываются прямо в память. Это занимает доли миллисекунды и не трогает диск вообще. Плата за такую скорость — дополнительная нагрузка на процессор, ведь сжатие и распаковка требуют вычислений.

💡

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

Реализации в разных операционных системах

Механизм сжатой подкачки реализован во всех современных ОС, хотя названия и детали отличаются. В Linux существуют два родственных подхода, которые часто путают между собой.

  • 🐧 zram — виртуальное блочное устройство в памяти, которое используется как обычный swap-раздел, но хранит данные в сжатом виде. Применяется по умолчанию во многих дистрибутивах, включая Fedora и Android.
  • 💾 zswap — сжатый кэш перед настоящим swap-разделом на диске: страницы сначала попадают в сжатый пул в RAM и лишь при его переполнении записываются на диск.
  • 🪟 Сжатие памяти в Windows — начиная с Windows 10, система сжимает неактивные страницы прямо в памяти (видно в Диспетчере задач как «Сжатая память»), обращаясь к pagefile.sys только при необходимости.
  • 🍎 macOS — использует собственный механизм сжатия памяти (compressed memory), активируемый автоматически под нагрузкой.

Разница между zram и zswap принципиальна: первый полностью заменяет дисковый своп, второй лишь смягчает обращения к нему. Выбор зависит от того, есть ли в системе вообще swap-раздел и насколько критичен износ накопителя.

Преимущества и ограничения метода

Главный выигрыш — скорость. Распаковка страницы из сжатой области памяти занимает микросекунды, тогда как чтение с диска — миллисекунды, а при активном свопинге эта разница складывается в ощутимую отзывчивость системы. Особенно заметен эффект на устройствах с малым объёмом RAM: нетбуков, одноплатных компьютеров вроде Raspberry Pi, виртуальных машин и смартфонов.

Второй плюс — бережное отношение к накопителю. Постоянная запись в файл подкачки изнашивает flash-память SSD и eMMC, а сжатый своп в RAM сводит число таких записей к минимуму или вовсе к нулю.

⚠️ Внимание: сжатый своп не создаёт память из ничего. Если рабочий набор данных принципиально не сжимается (например, уже сжатые видео, архивы, зашифрованные данные), выигрыш будет минимальным, а нагрузка на процессор останется.

Ограничения тоже есть. На слабом процессоре сжатие может конкурировать за ресурсы с основной задачей. Кроме того, выделенная под zram область недоступна приложениям напрямую, поэтому при агрессивных настройках можно фактически уменьшить объём свободной памяти без реальной пользы.

📊 Используете ли вы сжатую подкачку (zram/zswap) на своих системах?
Да, включена по умолчанию в моём дистрибутиве
Да, настроил вручную
Нет, пользуюсь обычным swap на диске
Впервые узнал об этом механизме

Настройка zram в Linux

Во многих современных дистрибутивах zram уже активен из коробки — проверить это можно одной командой. Если устройство /dev/zram0 существует и участвует в подкачке, ничего настраивать не нужно.

zramctl

swapon --show

Если механизм не активен, в большинстве дистрибутивов достаточно установить небольшой системный пакет (в Debian/Ubuntu это обычно zram-tools или systemd-zram-generator, точное имя зависит от версии дистрибутива) и перезагрузиться. Размер сжатого устройства и алгоритм сжатия задаются в конфигурационном файле — путь к нему зависит от выбранного пакета, поэтому сверяйтесь с документацией вашего дистрибутива.

Из алгоритмов чаще всего доступны lzo, lz4 и zstd. Первые два быстрее, последний обычно сжимает плотнее ценой большей нагрузки на CPU. Для слабых машин разумнее скорость, для мощных — плотность.

☑️ Проверка и настройка zram

Выполнено: 0 / 5
⚠️ Внимание: не задавайте размер zram-устройства больше физического объёма RAM без крайней необходимости. Слишком большой лимит при плохо сжимаемых данных может привести к тому, что сжатый пул сам съест значительную часть памяти, и система начнёт завершать процессы по нехватке RAM.

Сжатие памяти в Windows: что можно контролировать

В Windows 10 и 11 сжатие памяти работает автономно и не требует настройки: система сама решает, какие страницы сжать, а какие отправить в pagefile.sys. Посмотреть объём сжатых данных можно в Диспетчере задач на вкладке «Производительность» → «Память», в строке «Используется (сжато)».

Отключать сжатие памяти или файл подкачки «для ускорения» — популярный, но вредный совет. Без pagefile часть приложений и системных механизмов (включая создание дампов при сбоях) работает некорректно, а сжатие памяти при нехватке RAM только помогает. Ручное вмешательство оправдано разве что при диагностике необычного поведения системы.

💡

Если в Диспетчере задач Windows объём сжатой памяти постоянно велик, а система подтормаживает — это верный признак, что физической RAM не хватает. Настройки тут не помогут, реальное решение — добавить планки памяти или сократить число одновременно запущенных программ.

Сравнение подходов к подкачке

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

ПодходСкорость доступаИзнос накопителяНагрузка на CPUТипичный сценарий
Swap на HDD/SSDНизкаяЕстьМинимальнаяСерверы, системы с большим запасом RAM
zram (сжатый RAM-диск)Очень высокаяНетЗаметнаяМало RAM, слабый накопитель, SSD/eMMC
zswap + swap на дискеВысокая для кэшаСниженУмереннаяДесктопы с небольшим swap-разделом
Сжатие памяти (Windows/macOS)ВысокаяСниженУмереннаяАвтоматический режим по умолчанию

На практике варианты не исключают друг друга: например, zswap работает поверх обычного swap-раздела, а в Windows сжатие памяти сосуществует с pagefile. Комбинированный подход даёт наилучший баланс скорости и надёжности.

Почему сжатые данные занимают меньше места

Алгоритмы сжатия находят повторяющиеся последовательности байтов и заменяют их короткими ссылками. Рабочие данные приложений — текст, структуры кода, кэш интерфейсов — содержат много повторов и нулевых областей, поэтому хорошо поддаются сжатию. А вот уже сжатые форматы (JPEG, MP4, ZIP) повторно почти не сжимаются, и выгода от zram для них невелика.

Когда сжатый своп не поможет

Есть ситуации, в которых подкачка в сжатом RAM-диске не даст эффекта или даже навредит. К ним относятся сценарии с действительно огромным потреблением памяти — рендеринг, большие базы данных, десятки виртуальных машин — где дефицит RAM измеряется десятками гигабайт. Никакое сжатие не компенсирует такой разрыв, нужен физический апгрейд.

Также осторожность нужна на системах со слабым одно- или двухъядерным процессором: фоновое сжатие может отбирать заметную долю вычислительных ресурсов. В таком случае стоит выбрать самый быстрый алгоритм (обычно lz4) или уменьшить размер сжатого пула.

💡

Сжатый своп — это инструмент сглаживания кратковременных пиков нехватки памяти, а не замена физическому увеличению RAM при систематическом дефиците.

Часто задаваемые вопросы

Замедляет ли сжатая подкачка работу процессора?

Сжатие и распаковка действительно потребляют ресурсы CPU, но современные алгоритмы вроде lz4 и zstd очень быстры, и на типичном десктопном процессоре накладные расходы обычно незаметны. На слабых одноплатных системах нагрузка может быть ощутимее — там стоит выбирать самые лёгкие алгоритмы.

Нужен ли обычный swap на диске, если включён zram?

Зависит от сценария. Для десктопа с умеренной нагрузкой zram часто достаточно. Но если вы используете гибернацию (в Linux она требует swap на диске) или работаете с задачами, где дефицит памяти велик, дисковый swap как «последний рубеж» полезен.

Можно ли настроить сжатие памяти в Windows вручную?

Штатных пользовательских настроек алгоритмов и размера сжатой памяти в Windows нет — механизм управляется системой автоматически. Вмешательство через отключение сжатия или файла подкачки обычно ухудшает, а не улучшает работу системы.

Насколько сильно сжимаются данные в zram?

Точное значение предсказать нельзя — оно зависит от характера данных. Текст, код и кэш приложений обычно сжимаются в несколько раз, а уже сжатые медиафайлы и архивы — почти нет. Реальную статистику по вашей системе можно посмотреть в выводе команды zramctl.

Вредит ли файл подкачки твердотельному накопителю?

Постоянная запись в swap действительно расходует ресурс циклов перезаписи SSD и особенно eMMC. Использование сжатого свопа в RAM (zram или zswap) заметно сокращает объём таких записей, что продлевает срок службы накопителя.