ZRam

Не следует путать с zswap.

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].

См. также

  • zCache

Примечания

  1. 1 2 Google Code compcache Compressed Caching for Linux  (неопр.) (27 апреля 2010). Архивировано 17 января 2013 года.
  2. "Increased performance in Linux with zRam (virtual swap compressed in ram)". Web Upd8. 2011-10-02. Архивировано 14 февраля 2022. Дата обращения: 7 декабря 2012. {{cite news}}: |first= пропущен |last= (справка)
  3. 1.2. zram: Memory compression mechanism considered stable  (неопр.). Linux kernel 3.14. kernelnewbies.org (30 марта 2014). Дата обращения: 1 апреля 2014. Архивировано 15 января 2021 года.
  4. Michael Larabel, Ubuntu Linux Considers Greater Usage Of zRAM Архивная копия от 1 мая 2013 на Wayback Machine // Phoronix, 08.12.12
  5. Replacing zram with zswap  (неопр.). Дата обращения: 7 октября 2020. Архивировано 14 мая 2022 года.
  6. Архивированная копия  (неопр.). Дата обращения: 31 октября 2016. Архивировано 22 марта 2016 года.

Ссылки

  • Nitin Gupta, Compcache: in-memory compressed swapping // LWN, May 26, 2009
  • Dan Magenheimer, In-kernel memory compression // LWN, April 3, 2013
  • dark_dimikus (Дмитрий), Использование zRam для увеличения количества доступной памяти под Linux // Хабрахабр