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 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. 2011-10-02. Архивировано 14 февраля 2022. Дата обращения: 7 декабря 2012.
{{cite news}}
:|first=
пропущен|last=
(справка) - ↑ 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 // Хабрахабр