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].
См. также
- zCache
Примечания
- 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).
- 1.2. zram: Memory compression mechanism considered stable . Linux kernel 3.14. kernelnewbies.org (30 марта 2014). Дата обращения: 1 апреля 2014.
- Michael Larabel, Ubuntu Linux Considers Greater Usage Of zRAM // Phoronix, 08.12.12
- Replacing zram with zswap .
- https://www.kernel.org/doc/Documentation/blockdev/zram.txt
Ссылки
- 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 // Хабрахабр