Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Zcache )
Перейти к навигации Перейти к поиску

zswap является ядро Linux функция , которая обеспечивает сжатую в обратной записи кэша для выгруженных страниц, как форма сжатия виртуальной памяти . Вместо того, чтобы перемещать страницы памяти на устройство подкачки, когда они должны быть заменены, zswap выполняет их сжатие, а затем сохраняет их в пуле памяти, динамически выделяемом в системной RAM . Позже обратная запись на фактическое устройство подкачки откладывается или даже полностью исключается, что приводит к значительному сокращению операций ввода-вывода для систем Linux, требующих подкачки; компромисс - необходимость в дополнительном процессорециклов для выполнения сжатия. [1] [2] [3]

В результате сокращенного количества операций ввода-вывода zswap предлагает преимущества для различных устройств, использующих флеш-накопители , включая встроенные устройства , нетбуки и аналогичные недорогие аппаратные устройства, а также для других устройств, использующих твердотельные накопители (SSD). для хранения. Флэш-память имеет ограниченный срок службы из-за ее природы , поэтому отказ от ее использования для обеспечения пространства подкачки предотвращает ее быстрый износ. [4]

Внутреннее [ править ]

zswap интегрирован в остальную часть подсистемы виртуальной памяти ядра Linux с помощью API, предоставляемого frontswap , который представляет собой механизм ядра Linux, который абстрагирует различные типы хранилищ, которые могут использоваться в качестве пространства подкачки. [5] В результате zswap работает как внутренний драйвер для frontswap, предоставляя то, что внутренне видно как устройство псевдо-RAM. Другими словами, интерфейс frontswap API делает zswap способным перехватывать страницы памяти, пока они выгружаются , и перехватывать ошибки страниц для уже замененных страниц; доступ к этим двум путям позволяет zswap действовать как сжатый кеш с обратной записью для подкачанных страниц. [1] [6]

Внутри zswap использует модули сжатия, предоставляемые криптографическим API ядра Linux , что позволяет, например, выгружать задачи сжатия с основного процессора с помощью любого из аппаратных ускорителей сжатия, поддерживаемых ядром Linux. Выбор желаемого модуля сжатия может выполняться динамически во время загрузки с помощью значения параметра загрузки ядра zswap.compressor ; если не указано иное, выбирается сжатие Лемпеля – Зива – Оберхумера (LZO). Начиная с версии ядра Linux 3.13, zswap также необходимо явно включить, указав значение 1 для параметра загрузки ядра zswap.enabled . [1][2] [4]

Максимальный размер пула памяти, используемого zswap, настраивается с помощью параметра sysfs max_pool_percent , который указывает максимальный процент общей системной RAM, который может быть занят пулом. Пул памяти не выделяется заранее до настроенного максимального размера, а вместо этого увеличивается и уменьшается по мере необходимости. Когда настроен максимальный размер пула достигаются в результате проведенного свопинга, или при выращивании пула невозможно из - за вне-память состояния, перепутаны страницы выселены из пула памяти в устройство подкачки на минимум в последнее время используется(LRU) основа. Такой подход делает zswap настоящим кешем подкачки, поскольку самые старые кешированные страницы перемещаются на устройство подкачки после заполнения кеша, освобождая место для сжатия и кеширования новых подкачиваемых страниц. [1] [4] [7]

zbud является специальным назначение Распределителя памяти используется внутри zswap для хранения сжатых страниц, реализован в виде переписывания в zbud распределителя , используемом в Oracle zcache «с, [8] , который является еще одним виртуальной реализацией сжатия памяти для ядра Linux. Внутренне zbud работает, сохраняя до двух сжатых страниц (« приятели », отсюда и имя распределителя) на каждую страницу физической памяти, что дает как преимущества из-за простого объединения и повторного использования освобожденного пространства, так и недостатки из-за возможного более низкого использования памяти. Однако из-за своей конструкции zbud не может выделить больше места в памяти, чем было бы изначально занято несжатыми страницами. [3] [9]

История [ править ]

И zswap, и zbud были созданы Сетом Дженнингсом. Первое публичное объявление было сделано в декабре 2012 года, и разработка продолжалась до мая 2013 года, после чего кодовая база достигла своей зрелости, хотя все еще имела статус экспериментальной функции ядра. [10] [11]

zswap (вместе с zbud) был объединен с основной веткой ядра Linux в версии ядра 3.11, выпущенной 2 сентября 2013 г. [4] [12]

Начиная с версии 3.15 ядра Linux, выпущенной 8 июня 2014 года, zswap правильно поддерживает несколько устройств подкачки. [13] [14]

Альтернативы [ править ]

Одной из альтернатив zswap является zram , который предоставляет аналогичный, но все же другой механизм «подкачки сжатых страниц в ОЗУ» для ядра Linux.

Основное отличие заключается в том, что zram предоставляет сжатое блочное устройство, использующее ОЗУ для хранения данных, которое действует как обычное и отдельное устройство подкачки.

Для сравнения, zswap действует как кэш на основе RAM для устройств подкачки. Это обеспечивает zswap с выселением механизмом менее используемыми обмениваемых страниц, в котором отсутствует zram. Хотя, в результате его конструкции, для использования zswap требуется по крайней мере одно уже существующее устройство подкачки. [15]

См. Также [ править ]

  • Кэш (вычисления)
  • Своп Linux
  • Разделы подкачки на SSD

Ссылки [ править ]

  1. ^ a b c d Сет Дженнингс (12 февраля 2013 г.). «Сжатый кэш подкачки zswap» . LWN.net . Проверено 22 января 2014 года .
  2. ^ a b Дженифер Хоппер (11 декабря 2012 г.). «Новая функция сжатия Linux zswap» . IBM . Проверено 31 января 2014 года .
  3. ^ a b Майкл Ларабель (11 июля 2013 г.). «Zswap слился с ядром Linux 3.11» . Фороникс . Проверено 5 февраля 2014 года .
  4. ^ a b c d "Документация ядра Linux: Documentation / vm / zswap.txt" . kernel.org . 22 ноября 2013 . Проверено 22 января 2014 года .
  5. ^ Dan Magenheimer (22 апреля 2010). «Frontswap [PATCH 0/4] (был Transcendent Memory): обзор» . gmane.org . Проверено 23 декабря 2014 года .
  6. Джонатан Корбет (4 мая 2010 г.). «Cleancache и Frontswap» . LWN.net . Проверено 26 марта 2014 года .
  7. ^ "Дерево исходных текстов ядра Linux: kernel / git / torvalds / linux.git: zswap: добавить в mm /" . kernel.org . 11 июля 2013 . Проверено 5 февраля 2014 года .
  8. ^ Dan Magenheimer (29 марта 2012). «Zcache и RAMster (ну, и frontswap тоже): обзор и некоторые тесты производительности» (PDF) . oss.oracle.com . п. 12 . Проверено 19 августа 2015 года .
  9. ^ "Дерево исходных текстов ядра Linux: kernel / git / torvalds / linux.git: zbud: добавить в mm /" . kernel.org . 11 июля 2013 . Проверено 5 февраля 2014 года .
  10. ^ "[PATCH 0/8] zswap: сжатое кэширование подкачки" . gmane.org . 11 декабря 2012 . Проверено 5 января 2014 года .
  11. ^ "[PATCHv10 0/4] zswap: сжатое кэширование подкачки" . gmane.org . 8 мая 2013 года . Проверено 5 января 2014 года .
  12. ^ «Ядро Linux 3.11, раздел 9. Zswap: сжатый кэш подкачки» . kernelnewbies.org . 2 сентября 2013 . Проверено 22 января 2014 года .
  13. ^ «Ядро Linux 3.15, Раздел 4. Управление памятью» . kernelnewbies.org . 8 июня 2014 . Проверено 15 июня 2014 года .
  14. ^ "Дерево исходных текстов ядра Linux: kernel / git / torvalds / linux.git: mm / zswap: поддерживает несколько устройств подкачки" . kernel.org . 7 апреля 2014 . Проверено 15 июня 2014 года .
  15. ^ Dan Magenheimer (3 апреля 2013). «Сжатие памяти внутри ядра» . LWN.net . Проверено 8 марта 2014 года .

Внешние ссылки [ править ]

  • zswap документация ядра Linux
  • Сжатие прозрачной памяти Linux на YouTube , 30 сентября 2013 г., Сет Дженнингс
  • Zswap - надстройка сжатой страницы для Linux kswapd , Льежский университет, 15 марта 2013 г., автор - Сильвен Мартин
  • Кэш сжатия: сжатие виртуальной памяти для карманных компьютеров , 16 марта 2000 г., Майкл Дж. Фридман.