Jump to content

zswap

(Перенаправлено с Zcache )

zswap
Разработчик(и) Сет Дженнингс и другие
Первоначальный выпуск 2 сентября 2013 г .; 11 лет назад ( 2013-09-02 ) (Linux 3.11)
Написано в С
Операционная система Линукс
Тип Возможности ядра Linux
Лицензия GNU GPL
Веб-сайт ядро .org

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

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

Внутренности

[ редактировать ]

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

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

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

zbud — это специальный распределитель памяти, используемый внутри zswap для хранения сжатых страниц, реализованный как перезапись распределителя zbud, используемого zcache Oracle . [ 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 ]

Начиная с версии 6.8 ядра Linux, выпущенной 11 марта 2024 года, zswap поддерживает отключение обратной записи для определенных контрольных групп. [ 15 ]

Альтернативы

[ редактировать ]

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

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

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б с д Сет Дженнингс (12 февраля 2013 г.). «Сжатый кэш подкачки zswap» . LWN.net . Проверено 22 января 2014 г.
  2. ^ Jump up to: а б Дженифер Хоппер (11 декабря 2012 г.). «Новая функция сжатия zswap в Linux» . ИБМ . Проверено 31 января 2014 г.
  3. ^ Jump up to: а б Майкл Ларабель (11 июля 2013 г.). «Zswap интегрирован в ядро ​​Linux 3.11» . Фороникс . Проверено 5 февраля 2014 г.
  4. ^ Jump up to: а б с д «Документация по ядру Linux: Documentation/vm/zswap.txt» . ядро.орг . 22 ноября 2013 года . Проверено 22 января 2014 г.
  5. ^ Дэн Магенхаймер (22 апреля 2010 г.). «Frontswap [ОБНОВЛЕНИЕ 0/4] (было Transcendent Memory): Обзор» . gmane.org . Проверено 23 декабря 2014 г.
  6. ^ Джонатан Корбет (4 мая 2010 г.). «Очистить кэш и Frontswap» . LWN.net . Проверено 26 марта 2014 г.
  7. ^ «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: zswap: добавить в mm/» . ядро.орг . 11 июля 2013 года . Проверено 5 февраля 2014 г.
  8. ^ Дэн Магенхаймер (29 марта 2012 г.). «Zcache и RAMster (да, и frontswap тоже): обзор и некоторые тесты» (PDF) . oss.oracle.com . п. 12 . Проверено 19 августа 2015 г.
  9. ^ «Дерево исходного кода ядра Linux: kernel/git/torvalds/linux.git: zbud: добавить в mm/» . ядро.орг . 11 июля 2013 года . Проверено 5 февраля 2014 г.
  10. ^ «[ИСПРАВЛЕНИЕ 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: поддержка нескольких устройств подкачки» . ядро.орг . 7 апреля 2014 года . Проверено 15 июня 2014 г.
  15. ^ «zswap: memcontrol: реализовать отключение обратной записи zswap · torvalds/linux@501a06f» . Гитхаб .
  16. ^ Дэн Магенхаймер (3 апреля 2013 г.). «Сжатие памяти внутри ядра» . LWN.net . Проверено 8 марта 2014 г.


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 496ee913c69501acb56a11580153d526__1724076480
URL1:https://arc.ask3.ru/arc/aa/49/26/496ee913c69501acb56a11580153d526.html
Заголовок, (Title) документа по адресу, URL1:
zswap - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)