zRam (zRam)

Перейти к навигации Перейти к поиску

zRam, ранее известный как compcache, — модуль ядра Linux. Он создаёт в оперативной памяти сжатое блочное устройство (другими словами, 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 апреля 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 года.