TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #5614 2.52K
В чем сходство и в чем различие ZRAM и ZSWAP

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

1️⃣ Начнем с ZRAM. Эта технология создает в оперативной памяти блочное устройство и использует его в качестве пространства подкачки. Выделенная оперативная память сразу резервируется и не может быть использована системой.

Цель ZRAM – за счет сжатия предоставить системе большее количество доступной оперативной памяти, чем есть на самом деле. Это достигается за счет сжатия.

Средний коэффициент сжатия для LZ4 – 2,5, это значит, что, выделив для ZRAM 1 ГБ оперативной памяти мы получаем в свое распоряжение 2,5 ГБ очень быстрого swap, что позволяет достаточно эффективно решить вопрос нехватки ОЗУ.

Например, для машины с 4 ГБ ОЗУ, что по нынешним временам критический минимум, мы можем, разделив память пополам получить эквивалент 6-8 ГБ ОЗУ что радикально поменяет в лучшую сторону пользовательский опыт работы с системой.

Но за все нужно платить, за ZRAM мы платим процессорными ресурсами и ухудшением параметров доступа к сжатой памяти. Если сравнивать латентность доступа, то мы получим следующие цифры:

▫️Обычная RAM ~80–120 нс
▫️ZRAM (LZ4) ~1–5 мкс
▫️NVMe swap ~50–150 мкс
▫️SATA SSD swap ~200–500 мкс
▫️HDD swap миллисекунды

Как видим, ZRAM дает существенный рост латентности (в 10-50 раз), но все еще остается самым быстрым пространством подкачки, потому что даже при использовании быстрого NVMe разница будет уже на порядок.

Ну и ситуация, когда где-то что-то немного подтормаживает гораздо лучше ситуации, когда все стало колом из-за нехватки памяти.

Но если средняя латентность растет относительно незначительно, то вот рост tail latency (Tail latency (p95 / p99)) оказывается гораздо более высоким, что может приводить к заметным фризам и каскадному росту задержек.

Поэтому не следует использовать ZRAM в системах критичных к p95 / p99 – это большинство серверных применений, виртуализация и особенно СУБД, а также любые задачи критичные к задержкам, игры.

2️⃣ Теперь перейдем к ZSWAP, это Write Back кеш для пространств подкачки, общего с ZRAM у него только то, что он тоже использует сжатую память. В остальном это совершенно другая технология.

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

Задача ZSWAP кеша – уменьшить количество обращений к пространствам подкачки на дисках, а выгода здесь также получается от сжатия данных.

Например, в системе с 16 ГБ памяти для ZSWAP по умолчанию резервируется 20% или 3,2 ГБ, что эквивалентно (для LZ4) примерно 8 ГБ несжатой памяти. Т.е. получаем неплохой такой раздел подкачки прямо в ОЗУ.

Что касается латентности, то она ничем не отличается от ZRAM, но в случае ZSWAP это только плюс, так как латентность сжатой памяти в 50-100 раз ниже, чем латентность быстрых NVME и на порядок лучше обычных дисков.

Это позволяет эффективно сглаживать пиковые нагрузки и уменьшает рост p95 / p99, что позитивно сказывается на чувствительных к задержкам рабочих процессах.

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

Потому что в случае с ZRAM мы используем сжатую память вместо обычной, что ухудшает ее параметры. А ZSWAP использует сжатую память вместо дискового swap, который в любом случае гораздо более медленный.

‼️ Что касается совместного применения ZRAM и ZSWAP, то это не только лишено всякого смысла, но и серьезно ухудшает латентность, а также увеличивает нагрузку на CPU за счет двойного сжатия, потому что в этом случае у нас получится цепочка:

RAM – ZSWAP – ZRAM – SWAP

Поэтому так делать не нужно. А рекомендации просты:

🔹Мало памяти, нет особых требований к латентности – ZRAM

🔹Достаточно памяти, но требуется сгладить пики и улучшить производительность - ZSWAP
  • 👍 26
  • 🔥 6
  • ❤ 2
  • 👌 1
  • 🥱 1
More from @interface31
  1. Oct 2, 2026Post #6832
  2. Oct 2, 2026Без лишнего шума и пыли вышла Aspia 3.0. Ключевые изменения в выжимке ниже: 1️⃣ Архитектур…
  3. Oct 2, 2026Post #6826
  4. Oct 1, 2026V2V миграция при помощи Vinchin Backup & Recovery Виртуализация сегодня – норма жизни, даж…
  5. Oct 1, 2026Post #6822
  6. Oct 1, 2026Проблема, как и статья не новая, но регулярно возникают вопросы. Не включается сетевое обн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →