Включение и использование ZSWAP

Автор Brainey, 02 июня 2015, 17:21:33

« назад - далее »

0 Пользователи и 3 гостей просматривают эту тему.

Brainey

Технология ZSWAP позволяет уменьшить количество обращений к SWAP путём сжатия страниц и размещения их в специальном пуле в оперативной памяти.
ЦитироватьРеализация такого подхода позволяет, при возникновении необходимости сброса памяти в раздел подкачки, сократить ввод-вывод и повысить скорость работы системы в целом, за счет того, что по возможности избегается использование медленного носителя. Ценой сокращения ввода/вывода является увеличение нагрузки на процессор, который тратит дополнительные ресурсы на сжатие и распаковку данных. По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. (c) opennet.ru
Проверка поддержки технологии в ядре:
cat /boot/config-`uname -r` | grep -i zswap
если получен вывод
ЦитироватьCONFIG_ZSWAP=y
значит, поддержка есть.
Для включения нужно добавить параметр
zswap.enabled=1
к параметрам загрузки ядра в /etc/default/grub
и выполнить обновление конфигурационных файлов grub:
# update-grub
Если нужно ограничить максимальный объём памяти для ZSWAP, то в параметрах загрузчика указываем ещё и
zswap.max_pool_percent=x
где x - процент отведённой для ZSWAP памяти.
Также имеется возможность изменения алгоритма сжатия для ZSWAP. Добавляется аналогично предудущим к параметрам загрузки ядра.
zswap.compressor=lzo #deflate #lz4
Я использовал lz4 (более быстрый алгоритм). Для этого сначала добавил модули в /etc/initramfs-tools/modules^
# echo lz4 >> /etc/initramfs-tools/modules
# echo lz4_compress >> /etc/initramfs-tools/modules

Обновил initramfs:
# update-initramfs -u
И перезагрузился.
Из вывода команды
dmesg | grep -i zswap
Цитировать
[    0.782491] zswap: loading zswap
[    0.784771] zswap: using lz4 compressor
следует, что технология работает с выбранным алгоритмом сжатия.
Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

ffrr

если сравнивать zswap, uksm и zram - что эффективнее на практике?
ffrr

ffrr

насколько я понял из практики zswap поэффективнее, чем zram, а вот ukms надо еще проюзать...
ffrr

Brainey

#3
Цитата: ffrr от 19 июня 2015, 07:53:34zswap, uksm и zram
uksm вообще не из этой оперы.

Cообщение объединено 27 июня 2015, 10:43:47

Подробно отличия расписаны здесь. Возможно, позже займусь переводом.
Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

ffrr

спасибо за пояснение, похоже uksm больше для виртуализации:

Наибольшей эффективности UKSM достигает при использовании в сочетании с системами виртуализации, позволяя экономить значительный объём памяти в ситуации запуска множества типовых гостевых окружений, ценой незначительного повышения нагрузки на CPU. В отличие от KSM, UKSM использует более быстрый и эффективный в плане снижения нагрузки на CPU алгоритм сканирования, производящий фоновое выявление и объединение областей памяти. Дубликаты могут объединяться не только для виртуальных машин (UKSM не привязан к KVM), но и для любых пользовательских процессов и системных данных, что является важным отличием от KSM и похожего проекта Xen Dedup, привязанных к системам виртуализации. Все операции UKSM производятся в прозрачном режиме и не заметны для пользователей и компонентов системы.
ffrr

Brainey

Цитата: ffrr от 27 июня 2015, 12:33:27спасибо за пояснение, похоже uksm больше для виртуализации:
Для виртуализации в ванильном ядре есть ksm. А Uksm в ванильном ядре нет, но зато он может работать не только с виртуализацией.

Cообщение объединено 28 июня 2015, 19:35:13

Нашёл сравнение на хабре.
Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

Brainey

#6
Цитата: Brainey от 02 июня 2015, 17:21:33Если нужно ограничить максимальный объём памяти для ZSWAP, то в параметрах загрузчика указываем ещё и
zswap.max_pool_percent=x
где x - процент отведённой для ZSWAP памяти.
Рекомендую обязательно это сделать, потому что по моим субъективным наблюдениям, черезмерно разросшийся пул от zsawp ни к чему хорошему не приводит.
На аппарате с 2 гб озу отвёл для него примерно 128 мб:
zswap.max_pool_percent=15
Т.е. все мои параметры zswap целиком таковы:
zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=15
Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

ffrr

все пункты выполнил, но при загрузке системы такие сообщения:

% dmesg | grep zswap
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.0.0-2-686-pae root=UUID=a7146157-a631-4994-bc9d-b402e9a3a66d ro quiet zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=15
[    1.437849] zswap: loading zswap
[    1.439822] zswap: zbud zpool not available
[    1.439883] zswap: zpool creation failed



как проверить, что zswap работает или нет?
ffrr

Brainey

ffrr, начиная с 4-го ядра zbud или zsmalloc, необходимые для zswap, собранны в виде модуля, поэтому сначала смотрим, что у нас есть:
cat /boot/config-`uname -r` | grep -i zbud
cat /boot/config-`uname -r` | grep -i zsmalloc
Открыть содержимое (спойлер)
В моём случае, есть оба модуля, но я выбрал ZBUD, т.к. обычно он используется по умолчанию
[свернуть]
Потом добавляем в список модулей initramfs:
# echo zbud >> /etc/initramfs-tools/modules
или
# echo zsmalloc >> /etc/initramfs-tools/modules
Затем обновляем initramfs:
# update-initramfs -u
В случае использования zsmalloc, это нужно указать в параметрах загрузки ядра:
zswap.zpool=zsmalloc

Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

ffrr

#9
ну а в случае использования zbud не нужно указывать в параметрах загрузки ядра:

zswap.zpool=zbud

?

Cообщение объединено 19 июля 2015, 22:44:13

спасибо, после перезагрузок варнингов и ерроров нету, как теперь проверить, что он работает нормально?
ffrr

Brainey

Конференция форума в jabber: debianforum@conference.jabber.ru | Клуб кедоводов: kde@conference.jabber.ru

Aalexeey

#11
А как полностью отключить zswap что бы при загрузке не выходило:zswap: default zpool zbud not available
zswap: pool creation failed

Пробовал так: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable zswap.enabled=0 zpool.enabled=0"
и так: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable zswap=disable zpool=disable"
Как отключить эту дрянь?
Помогло:
zswap.zpool=zsmalloc zswap.enabled=0
Позднее включил:
zswap.zpool=zsmalloc zswap.enabled=1
Сообщений никаких не выходит и в хозяйстве пригодится, работает. Ядро: 4.4-7.dmz.1-liquorix-...
https://debianforum.ru/index.php?topic=6879 100% защиты от "Ааааа у меня всё поломалось"