zRam

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

zRam — модуль ядра Linux (ранее известный как compcache). Он создаёт в оперативной памяти сжатое блочное устройство (другими словами, RAM-диск со сжатием данных "на лету"), которое может использоваться, например, как устройство подкачки страниц, хранения временных файлов (/tmp), или же просто как RAM-диск общего назначения.

Хотя стоимость оперативной памяти сейчас относительно низкая, zRam всё же позволяет получить преимущества на компьютерах с малым количеством оперативной памяти, при виртуализации и во встраиваемых системах, использующих флеш-память, которая имеет ограниченное количество циклов перезаписи.[1] Т.к. скорость обмена с оперативной памятью выше, чем с жёстким диском, следовательно, zRam позволяет Linux производить большее число операций ввода-вывода, ускоряя таким образом процесс записи данных и их последующее чтение.[2][1] При этом использование алгоритмов сжатия увеличивает нагрузку на центральный процессор, но освобождает значительное количество оперативной памяти по сравнению с использованием обычного RAM-диска.

Включён в стандартную поставку ядра Linux начиная с версии 3.14[3]. Используется на Ubuntu Nexus 7.[4], в Android, CyanogenMod, а также Google использует его в ChromeOS.

Алгоритмы сжатия[править | править код]

Использует алгоритмы сжатия предоставляемые модулем Linux Crypto API. По умолчанию это обычно LZO или LZ4.

Недостатки zram как раздела подкачки[править | править код]

При наличии в системе нескольких разделов подкачки, zram-устройство, использующееся в качестве раздела подкачки страниц памяти, будет иметь более высокий приоритет, таким образом все выгружаемые страницы попадут в первую очередь в zram-устройство. При переполнении этого раздела вновь выгружаемые страницы будут попадать в следующие swap-разделы, в результате чего появляется высокая вероятность возникновения LRU-инверсии.[5]

Таким образом, использование zram-устройства в качестве раздела подкачки страниц имеет смысл при отсутствии других разделов подкачки в системе.

Отличие от zswap[править | править код]

zram часто путают со сходным модулем zswap, который сжимает данные, перехватывая попытки записи страниц памяти в swap-раздел на диске.

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

Начиная с версии ядра 4.14, пользователь имеет возможность указать для zram-устройства любое другое блочное устройство в качестве резервного хранилища, в которое могут выгружаться несжимаемые/неиспользуемые страницы памяти. При этом выгрузка страниц в резервное хранилище происходит в несжатом виде и, в отличие от zswap, только по команде администратора системы[6].

См. также[править | править код]

Примечания[править | править код]

  1. 1 2 Google Code compcache Compressed Caching for Linux (27 April 2010). Архивировано 17 января 2013 года.
  2. Increased performance in Linux with zRam (virtual swap compressed in ram), Web Upd8 (2 October 2011).
  3. 1.2. zram: Memory compression mechanism considered stable. Linux kernel 3.14. kernelnewbies.org (30 марта 2014). Дата обращения 1 апреля 2014.
  4. Michael Larabel, Ubuntu Linux Considers Greater Usage Of zRAM // Phoronix, 08.12.12
  5. Replacing zram with zswap.
  6. https://www.kernel.org/doc/Documentation/blockdev/zram.txt

Ссылки[править | править код]