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 2 Google Code compcache Compressed Caching for Linux (27 апреля 2010). Архивировано 17 января 2013 года.
- ↑ Increased performance in Linux with zRam (virtual swap compressed in ram), Web Upd8 (2 октября 2011). Архивировано 14 февраля 2022 года. Дата обращения: 7 декабря 2012.
- ↑ 1.2. zram: Memory compression mechanism considered stable . Linux kernel 3.14. kernelnewbies.org (30 марта 2014). Дата обращения: 1 апреля 2014. Архивировано 15 января 2021 года.
- ↑ Michael Larabel, Ubuntu Linux Considers Greater Usage Of zRAM Архивная копия от 1 мая 2013 на Wayback Machine // Phoronix, 08.12.12
- ↑ Replacing zram with zswap . Дата обращения: 7 октября 2020. Архивировано 14 мая 2022 года.
- ↑ Архивированная копия . Дата обращения: 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 // Хабрахабр