Форум проекта PuppyRus Linux

Дистрибутивы проекта PuppyRus Linux => PuppyRus-A [PRA] => Тема начата: krasnyh от 06 Ноябрь 2018, 17:30:52

Название: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 06 Ноябрь 2018, 17:30:52
Нехватка памяти, фризы:OOM KILLER , le9-patch и пр. (https://forum.puppyrus.org/index.php?topic=23160.0)
recompression (https://forum.puppyrus.org/index.php?topic=21154.msg186035#msg186035)

https://wiki.puppyrus.org/soft/porteus-initrd?&#zram
https://debianforum.ru/index.php?topic=9422.0
http://habrahabr.ru/post/172137/
http://archlinux.org.ru/forum/topic/11291/
https://webguard.pro/os/linux/zram-v-kachestve-swap-fajla-v-linux.html
zram vs zswap (https://ru.wikipedia.org/wiki/ZRam#%D0%9E%D1%82%D0%BB%D0%B8%D1%87%D0%B8%D0%B5_%D0%BE%D1%82_zswap)

zswap для minirc (http://forum.puppyrus.org/index.php?topic=21154.msg152738#msg152738)
UIRD (https://forum.puppyrus.org/index.php?topic=22645.msg167484#msg167484)
https://aur.archlinux.org/packages/sd-zram/

Ноут старый (2008 г.), памяти 2 Гб, из которых 256 Мб уходит на видео, поэтому пробую ставить разные оси, пробую, ищу.
А включить zswap?  Через systemd-swap или прописав в командной строке grub (grub2; в grub4dos не сработает ).
Zswap is a kernel feature that provides a compressed RAM cache for swap pages. Pages which would otherwise be swapped out to disk are instead compressed and stored into a memory pool in RAM. Once the pool is full or the RAM is exhausted, the least recently used (LRU) page is decompressed and written to disk, as if it had not been intercepted. After the page has been decompressed into the swap cache, the compressed version in the pool can be freed.
https://wiki.archlinux.org/index.php/Zswap
В комплекте с swap разделом или swap файлом.
(Здесь немного писал про systemd-swap http://forum.puppyrus.org/index.php?topic=21038.msg149139#msg149139)

Для командной строки груба:
zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold
1. zswap.max_pool_percent можно изменить на 50
2. zswap.zpool=
z3fold нашими ядрами не поддерживается, хотя это очень эффективный алгоритм в отличии от zbud.

z3fold is a special purpose allocator for storing compressed pages.
It is designed to store up to three compressed pages per physical page.
It is a zbud derivative which allows for higher compression
ratio keeping the simplicity and determinism of its predecessor.

https://www.kernel.org/doc/Documentation/vm/z3fold.txt

 К чему я это все написал. Просто я не верю, что full на старом железе даст какой-то выигрыш. Без SSD в качестве диска, там все будет тупить.
Фругал как раз и вдохнул новую жизнь в старичков за счет работы в оперативке. Для старого железа переходить на FULL это путь к тормозам (ИМХО).
Тем более в данном случае 2Gb памяти это совсем не плохо.

UPD.
или прописав в командной строке grub (grub2; в grub4dos не сработает ).
Команды работают и в grub4dos.
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 02:31:46
z3fold нашими ядрами не поддерживается
Поправка.
Не грузятся lz4/z3fold из под systemd-swap.
Код
dmesg| grep zswap
[    0.725832] zswap: loaded using pool lzo/zbud

И грузятся, если прописаны в командной строке grub2.
Код
dmesg |grep zswap
[    0.721714] zswap: loaded using pool lz4/z3fold

 С нашими ядрами все нормально. :)
Название: Re: zswap
Отправлено: Boris от 07 Ноябрь 2018, 08:56:59
в grub4dos не сработает ).
Работает:
Код
live@pra-roll:~$ dmesg |grep zswap
[    0.000000] Command line: zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=50 zswap.zpool=z3fold dir=praroll  quiet  noload=de-ops;vala;spacefm-ng-gtk3 load=mesa;de-lxqt;lxqt-gtk3;qt5-;gvfs;lxqt-arc
[    0.000000] Kernel command line: zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=50 zswap.zpool=z3fold dir=praroll  quiet  noload=de-ops;vala;spacefm-ng-gtk3 load=mesa;de-lxqt;lxqt-gtk3;qt5-;gvfs;lxqt-arc
[    0.828115]zswap: loaded using pool lz4/z3fold
Строки из menu.lst:
Код
title ▒▒ PRA-roll LXQT %l%  
set d=praroll
set k=-4.15.4-pf
kernel /%d%/vmlinuz%k%_64 zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=50 zswap.zpool=z3fold dir=%d% %s% quiet  %v% %x%;de-lxqt;lxqt-gtk3;qt5-;gvfs;lxqt-arc
initrd /%d%/initrd.xz
Название: Re: zswap
Отправлено: sfs от 07 Ноябрь 2018, 09:06:02
Если я правильно понял
Цитата
Zswap - это функция ядра, которая обеспечивает сжатый кеш RAM для страниц подкачки. Страницы, которые в противном случае были бы заменены на диск, вместо этого будут сжаты и сохранены в пуле памяти в ОЗУ. После того, как пул заполнен или ОЗУ исчерпано, последняя страница (LRU) распаковывается и записывается на диск, как если бы она не была перехвачена. После того, как страница была распакована в кэш подкачки, сжатая версия в пуле может быть освобождена.

Разница по сравнению с zram заключается в том, что zswap работает в сочетании с устройством подкачки, в то время как zram - это устройство подкачки в ОЗУ, которое не требует резервного обмена.
Это позволит юзать своп более эффективно (т.е. мало) за счет более рационального использования памяти
Чем это поможет компу, на котором памяти мало?
Название: Re: zswap
Отправлено: Boris от 07 Ноябрь 2018, 09:12:00
Это позволит юзать своп более эффективно (т.е. мало) ... Чем это поможет компу, на котором памяти мало?
Сами себе и ответили - реже будет обращаться к медленному диску.
Кстати, работает на всех PRA и PuppyRus 15.12 из grub2dos.
Название: Re: zswap
Отправлено: knn от 07 Ноябрь 2018, 10:12:13
  Можно ли zswap и zram применять одновременно?
Название: Re: zswap
Отправлено: sfs от 07 Ноябрь 2018, 10:13:44
реже будет обращаться к медленному диску.
Да, но при наличии приличного к-ва RAM
Без этого эффекта от sram(swap) не будет
Если памяти мало - поможет своп на быстром носителе (тего обычно тем более нет на старых пк)
Название: Re: zswap
Отправлено: knn от 07 Ноябрь 2018, 10:27:02
Если памяти мало - поможет своп на быстром носителе (тего обычно тем более нет на старых пк)
  Замечено ( 512 RAM, pent4, frugal):
-- когда заканчивается "свободная RAM"(нужно еще проверить при zswap) - индикатор(верхнее его значение) в трее "плавно доходит" практически до нуля - ! и начинается "тупость компьютера".
 Если перед этим при тех же условиях(каких- уточнить могу "много позже") сослать либы браузера до запуска оного - то индикатор постоянно "держится" в районе 10%( !? почему-то  :o) и комп "тупит" не на столько(не так как в "предыдущем варианте", а работает в целом намного шустрее).
http://forum.puppyrus.org/index.php?topic=20544.0
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 15:49:51
Да, но при наличии приличного к-ва RAM
Без этого эффекта от zram(zswap) не будет
Zswap
Смысл технологии сводится к тому, что при необходимости выгрузки страниц памяти на диск производится попытка сжать страницы, размещая их при этом в пуле в оперативной памяти. По мере возможности сжатые страницы не выгружаются на диск чтобы избежать операций ввода/вывода с медленным носителем.

Реализация такого подхода позволяет, при возникновении необходимости сброса памяти в раздел подкачки, сократить ввод-вывод и повысить скорость работы системы в целом, за счет того, что по возможности избегается использование медленного носителя.

https://www.opennet.ru/opennews/art.shtml?num=35610
https://wiki.archlinux.org/index.php/Improving_performance#Zram_or_zswap

Если поискать по сайту 4pda по zram и zswap:
http://4pda.ru/forum/index.php?act=search&source=all&forums%5B%5D=all&query=zram&x=0&y=0&subforums=1
http://4pda.ru/forum/index.php?act=search&source=all&forums%5B%5D=all&query=zswap&x=0&y=0&subforums=1

 У меня на роутере (openwrt):
Код
# opkg list-installed |grep zram
kmod-zram - 3.18.23-1
zram-swap - 1-2

Цитата
На компе с pentium4 2.40Mhz (478 сокет) с 1Gb DDR1 тоже включен zswap.

 Везде используются (zram или zswap). В телефонах или тв боксах (андроидах), на роутерах (openwrt), в линукс дистрибутивах. И только в PRA не надо, ибо требует много памяти. )
DdShurick называет sfs прогрессивистом, а на самом деле он ретроград. :)

Название: Re: zswap
Отправлено: betcher от 07 Ноябрь 2018, 16:21:06
Практическое использование zswap не столь радостно. В реальных условиях все зависит от конкретных условий.
Со включеным zswap если принудительно забивать рам, то запись в своп раздел начнется только когда размер доступной (available) памяти будет около нуля. Если забивать дальше, то начнется запись в своп, но размер доступной рам так и будет в районе 1-3%. При чем переход к началу записи в своп сопровождается фризами системы.
То есть ы итоге. Если в процессе работы системы вам хватило кэша zswap и на диск записи врообще не было, то zswap вам однозначно помог, тут все приблизительно аналогично zram-swap. Если памяти не хватило то вы словите фриз при начале записи на диск. Если бы zswap не был включен, то запись в своп раздел еачалась раньше и тормозить начало бы раньше, но резкого фриза как с   zswap, когда начинается распаковка из сжатого кэша и запись в своп вы бы не получили. Ну и когда память и своп сожраны почти полностью zswap опять немного выручит, так как обший размер zswap кэш плюс своп больше чем просто своп, но это уже предположение.
Для uird решили включать с uird.swap=auto (если своп найден) и с uird.swap=/dev/sda2;zswap если просто указать раздел то включать zswap uird не будет.
zram-swap включается с uitd.swap=auto если своп не найден и с uird.swap=zram
P.S. вклюяение zswap и zram-swap одновременно, кмк, смысла не имеет.
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 16:35:06
Если памяти не хватило то вы словите фриз при начале записи на диск
  Может еще от версии ядра зависит? У вас там, в magos, какие то древние ядра используются (4.9). :)
 У меня на pentium4 с ядром 4.13 проблем никогда не было. Длительное практическое использование zswap, своппинг происходит не заметно. Причем диск старенький, интерфейс ide.

UPD. Ну и, наши ядра типа оптимизированные - kernel-pf.
Название: Re: zswap
Отправлено: RoDoN от 07 Ноябрь 2018, 16:38:09
Цитата: https://www.opennet.ru/opennews/art.shtml?num=35610
Ценой сокращения ввода/вывода является увеличение нагрузки на процессор, который тратит дополнительные ресурсы на сжатие и распаковку данных.
Т.е. если процессор слабенький, то применение zswap может добавить тормозов?
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 16:39:32
Т.е. если процессор слабенький, то применение zswap может добавить тормозов?
А попробовать? :)

upd. Вот еще на форуме интересное, правда про zram
https://archlinux.org.ru/forum/topic/13907/
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 16:44:48
Если бы zswap не был включен, то запись в своп раздел началась раньше и тормозить начало бы раньше, но резкого фриза как с  zswap, когда начинается распаковка из сжатого кэша и запись в своп вы бы не получили
Может есть смысл 'поиграться' с vm.swappiness=  70 или 90?
Название: Re: zswap
Отправлено: RoDoN от 07 Ноябрь 2018, 16:48:08
Попробую, но имея сейчас практически везде 2 и более Гб памяти редко вижу использование свопа, точнее бывает незначительное, замечал иногда несколько десятков метров... тяжелых прог не использую, только браузер, видеоплеер и все :)
Название: Re: zswap
Отправлено: betcher от 07 Ноябрь 2018, 17:28:30
От ядра конечно зависеть может, пробовал только в магос с родным.
swappiness повлияет врядли, при тестах было в районе 50. Не помню точно как uird выставляет.. Но когда ядро уже начало свопить zswap перехватывает, жмет, и складывает в кэш пока память всю не пожрет.
Название: Re: zswap
Отправлено: krasnyh от 07 Ноябрь 2018, 17:50:20
при тестах было в районе 50
Значение swappiness может быть установлено в диапазоне от 0 до 100. Низкие значения предписывают использовать подкачку реже, высокие — чаще. Значение по-умолчанию равно 60. Это значит, что при достижении расхода RAM в 40%, ядро Linux активирует применение swap.

 Может надо было наоборот повысить, как я понимаю для zram и zswap актуальны как раз высокие значения. У себя правда я не заморачивался этим. Стоит дефолтное 60.


upd.
при тестах было в районе 50
Скрин из Magos.
Название: Re: zswap
Отправлено: betcher от 07 Ноябрь 2018, 18:04:14
Это значит, что при достижении расхода RAM в 40%, ядро Linux активирует применение swap.
Это не так работает. Все значительно хитрее. Ни где не нашел точного описания алгоритма, но чем выше цифра тем агрессивнее свопит. С процентом от свободной РАМ вроде как не связано.
Название: Re: zswap
Отправлено: knn от 07 Ноябрь 2018, 18:49:04
https://webhamster.ru/mytetrashare/index/mtb0/13695202627w5rypn8da (https://webhamster.ru/mytetrashare/index/mtb0/13695202627w5rypn8da)
Название: Re: zswap
Отправлено: betcher от 07 Ноябрь 2018, 19:31:00
Посмотрите swappiness на аглицкой википедии.
Или вот кусочек из комментариев с хабра.
Это значит, что ядро Linux начинает свопить редко используемые страницы оперативной памяти, когда использование свободной оперативной памяти достигает 100%-60%=40%.

Очень распространенное заблуждение. На самом деле vm.swappines делает следующее:
This control is used to define how aggressive the kernel will swap
memory pages. Higher values will increase aggressiveness, lower values
decrease the amount of swap. A value of 0 instructs the kernel not to
initiate swap until the amount of free and file-backed pages is less
than the high water mark in a zone.

(Из документации к ядру). Уже отсюда ясно, что никакого отношения к % свободной памяти эта настройка не имеет.
Чуть подробнее о работе этой опции рассказано на портале Red Hat:
A value from 0 to 100 which controls the degree to which the system favors anonymous memory or the page cache. A high value improves file-system performance, while aggressively swapping less active processes out of physical memory. A low value avoids swapping processes out of memory, which usually decreases latency, at the cost of I/O performance. The default value is 60.

То есть опция указывает приоритет дискового кэша перед данными приложений. Поэтому уменьшение этой опции увеличивает приоритет данных приложений, взамен ухудшается кэширование I/O.
0
 interrupt 16.12.2017 в 18:00
+1
Более того совсем не понятно что такое "% свободной памяти", поскольку само понятие свободная память (особенно при разрешенном оверкоммите) это тема для еще нескольких статей.
Название: Re: zswap
Отправлено: knn от 07 Ноябрь 2018, 21:06:04
интересный комментарий по логике/алгоритму работы zswap -
http://www.pivpav.com/post/150#comment-1540230756 (ниже указанной ссылки). + там есть еще познавательные комментарии по Теме.
Название: zram: swap - экономия RAM
Отправлено: Poisk от 15 Декабрь 2018, 04:08:04
Вопрос - надо ли это кому-нибудь?
Прошу помощи. Создал pfs модуль для автомонтирования zram. Файлы создаёт, но в /etc/fstab и /sys/block/zram0/disksize он не пишет, либо изменения перетираются во время дальнейшей загрузки. Посмотрите пожалуйста,что не так?

Команды брал тут:https://wiki.archlinux.org/index.php/Improving_performance#Zram_or_zswap
Хочу понять, какой код/файлы куда расставлять, и научиться глядя на подобный код из Wiki-справочника делать свои модули-pfs.
Название: Re: zram: swap - экономия RAM
Отправлено: betcher от 15 Декабрь 2018, 06:59:22
Если  initrd не принципиален попробуйте uird. Там с подключением свопа куча вариантов.
uird.swap=auto (если найдет своп раздел то подключит его + zswap если раздела нет то  zram-swap)
uird.swap=/dev/sda1
uurd.swap=file.swap (найти файл и подключить)
uird.swap=zram
uird.swap=zram::70::lz4 ( алгоритм сжатия и размер в процентах от  RAM)
можно и несколько
uird.swap=/dev/sda1;zram;myswap.swp
Если не хотите сам  uird  посмотрите функции 
init_swap, init_zram_swap в либе livekitlib в uird.
https://github.com/neobht/uird/blob/master/modules.d/00uird/livekit/livekitlib
Название: Re: zram: swap - экономия RAM
Отправлено: Poisk от 15 Декабрь 2018, 16:38:42
Если  initrd не принципиален попробуйте uird.
Спасибо за вариант! Мои знания фрагментарны. Могу понимать С-код, несколько Bash. Сейчас пытаюсь понять как можно 1) автозапуском/автоконфигурированием выделить в RAM место при одновременном сжатии, т.е наверное это функция или команда или методика - zram.По приведённой мною выше ссылке, вручную получилось выделить zram. По крайней мере Htop->swp показывает столько сколько просил.  Для меня конфигурирование системы это новое. Т.е пока не знаю где должны быть по канонам управляющие скрипты/параметры.
Initrd и uird так же новое. Может я и попробую их, но куда  это прописывать пока не знаю. По сему и не знаю принципиально ли initrd или нет.
2) Выделить swap в zram и оформить это через самостоятельную сборку pfs, чтобы понимать, как можно собрать систему из модулей-pfs.
Название: Re: zram: swap - экономия RAM
Отправлено: krasnyh от 15 Декабрь 2018, 16:49:38
Команды брал тут:https://wiki.archlinux.org/index.php/Improving_performance#Zram_or_zswap
По этой ссылке предложены два пакета со скриптами включения zram (systemd-swap и zramswap). Ничего придумывать не надо. Если PRA с systemd, то включить службу и перезагрузиться. Если c minirc, то ... не знаю. :)

 По systemd-swap некоторая инфа здесь http://forum.puppyrus.org/index.php?topic=21038.msg149139#msg149139
Название: Re: zram: swap - экономия RAM
Отправлено: Poisk от 15 Декабрь 2018, 18:49:46
Ничего придумывать не надо.
Вот этот код я расположил по указанным в тексте каталогам и файлам и запаковал в pfs. И судя по суффиксам каталогов ".d" код как раз и является реализацией средствами systemd.:
Код
/etc/modules-load.d/zram.conf

zram

Configure the number of /dev/zram nodes you need.

/etc/modprobe.d/zram.conf

options zram num_devices=2

Create the udev rule as shown in the example.

/etc/udev/rules.d/99-zram.rules

KERNEL=="zram0", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"

Add /dev/zram to your fstab.

/etc/fstab

/dev/zram0 none swap defaults 0 0
/dev/zram1 none swap defaults 0 0

Но не все файлы после перезагрузки дописываются или перезаписываются(должны они перезаписываться или дополнятся не знаю. только приобретаю опыт). pfs находится в каталоге base. Что не так - не знаю.

Если PRA с systemd
Как узнать? По умолчанию в PRA1612-middle systemd работает? А если и работает, то влияет ли на возможность записи в файл,например в /etc/fstab и /sys/block/zram0/disksize?
Название: Re: zram: swap - экономия RAM
Отправлено: krasnyh от 15 Декабрь 2018, 19:50:16
По умолчанию в PRA1612-middle systemd работает?
Цитата
$ systemctl --version                                           
systemd 239
+PAM +AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

влияет ли на возможность записи в файл,например в /etc/fstab
Цитата
$ cat /etc/fstab
# При использовании porteus-initrd (initrd.xz)
# Не редактируйте этот файл так как fstab пересоздается автоматически во время каждой загрузки.

 Скачать пакет https://aur.archlinux.org/packages/zramswap/
Использовать zramctrl в качестве примера для собственного скрипта. Или дефолтный автозагружать каким-то способом (если нет systemd).
Название: Re: zram: swap - экономия RAM
Отправлено: Poisk от 15 Декабрь 2018, 20:21:37
$ systemctl --version   
У меня:
Код
$ systemctl --version 
bash: systemctl: команда не найдена
Значит отсутствует.

$ cat /etc/fstab
# При использовании porteus-initrd (initrd.xz)
# Не редактируйте этот файл так как fstab пересоздается автоматически во время каждой загрузки.
Понятно.
Т.е если отсутствует systemd,  то работает initrd. И в командной строке сработал код посредством initrd.
Тогда в какой файл и по какому пути будет верно разместить этот код-подключения zram, чтобы упаковать в pfs?
Код
# modprobe zram
# echo lz4 > /sys/block/zram0/comp_algorithm
# echo 32G > /sys/block/zram0/disksize
# mkswap --label zram0 /dev/zram0
# swapon --priority 100 /dev/zram0

Название: Re: zram: swap - экономия RAM
Отправлено: krasnyh от 15 Декабрь 2018, 20:33:07
Скачать пакет
Если сложно с AUR.
Скопировать скрипт https://aur.archlinux.org/cgit/aur.git/tree/zramctrl?h=zramswap
Сделать исполняемым и пробовать запустить.
Название: Re: zram: swap - экономия RAM
Отправлено: Poisk от 15 Декабрь 2018, 20:54:49
...и пробовать запустить.
Становится яснее. Посмотрел приведённый Вами скрипт и пришёл к выводу, что это почти тот же код, только с многочисленными проверками. Но и Bash-код и C-код необходимо где-то размещать для автостарта. По Вашей сслыке в заголовке кода указано:"path: root/zramctrl" Это рекомендуемое место? А имя скрипта имеет значение?
Название: Re: zram: swap - экономия RAM
Отправлено: krasnyh от 15 Декабрь 2018, 21:21:27
Это рекомендуемое место?
Нет, это часть aur пакета zramswap-2-1-any:
Цитата
$ find .
.
./usr
./usr/lib
./usr/lib/systemd
./usr/lib/systemd/scripts
./usr/lib/systemd/scripts/zramctrl
./usr/lib/systemd/system
./usr/lib/systemd/system/zramswap.service

И запускается через systemd:
Код
sudo systemctl enable zramswap.service 
Код
sudo systemctl start zramswap.service 
Название: Re: zram: swap - экономия RAM
Отправлено: sfs от 15 Декабрь 2018, 22:51:11
перенес, объединил
bash: systemctl: команда не найдена
вики (http://wiki.puppyrus.org/puppyrus/pra-roll#%D0%B4%D0%B5%D0%BC%D0%BE%D0%BD%D1%8B_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_systemd_minirc)
Название: Re: zram: swap - экономия RAM
Отправлено: Poisk от 16 Декабрь 2018, 00:27:43
И запускается через systemd:
А если systemd, тогда вижу противоречие: для Archlinux добавление кода в /etc/fstab приемлемая практика, а в PRA: (# Не редактируйте этот файл так как fstab пересоздается автоматически во время каждой загрузки.). Какой вариант типичный для Linux-OS, запрет или разрешение? И дополнять /etc/fstab не следует не только руками, но и опосредовано через скрипты автозагрузки? Т.е функционал sftab не следует расширять или ещё что? Не понятно. 
Название: Re: zram: swap - экономия RAM
Отправлено: DdShurick от 16 Декабрь 2018, 07:56:25
а в PRA: (# Не редактируйте этот файл
В PRA /etc/fstab создаётся заново при каждой загрузке скриптом linuxrc (строки 56 -93) и не являются запретом на редактирование, а всего лишь предупреждением, что файл будет переписан с нуля при перезагрузке.
Название: Re: PRA03-retro. i686(32-бит). Для слабого железа, флэшек и т.п.
Отправлено: krasnyh от 11 Январь 2019, 19:15:49
 Для retro с minirc простой способ включить zswap. Своппинг в swapfile.
1. В menu.lst прописать
Цитата
kernel /%d%/vmlinuz-4.4.1-pf3 dir=%d% quiet zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=z3fold zswap.max_pool_percent=50

Создаем swapfile, пишу как сделано у меня.
https://wiki.archlinux.org/index.php/Swap#Swap_file
Код
sudo dd if=/dev/zero of=/mnt/sda2/swapfile bs=1M count=512 status=progress
sudo chmod 600 /mnt/sda2/swapfile
sudo mkswap /mnt/sda2/swapfile
sudo swapon /mnt/sda2/swapfile
Далее в /etc/rc.d создан исполняемый файл:
Код
cat /etc/rc.d/swapfile
#!/bin/ash
`which sudo` swapon /mnt/sda2/swapfile &
Перезагрузка.

Поверить включение можно:
a) запустив htop
b) dmesg | grep swap
c) в директории /sys/module/zswap/parameters

P.s. Если уже есть swap-раздел, то создавать swapfile не надо и в /etc/rc.d тоже ничего делать не надо. Только прописать параметры в menu.lst. 
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 12 Февраль 2019, 14:05:38
 Zram на одноплатниках, много полезной информации в комментах https://www.cnx-software.com/2018/05/14/running-out-of-ram-in-ubuntu-enable-zram/
Ссылка из комментов на некоторые тесты https://forum.armbian.com/topic/5565-zram-vs-swap/?do=findComment&comment=54487

p.s. В Chrome OS/Chromium OS по дефолту используется zram https://www.chromestory.com/2013/03/google-enabling-zram-for-chrome-os-by-default/

Так же ссылка на интересное обсуждение некоторых параметров zram с разработчиками Chromium OS http://chromium.2324630.n4.nabble.com/cros-discuss-Do-we-know-the-current-ZRAM-settings-td27175.html
https://productforums.google.com/forum/#!topic/chromebook-central/HmfWTDyBITk;context-place=forum/chromebook-central

upd. Также в AlexELEC добавлен zram:
zRam.
Добавление этого сервиса позволило избежать проблемы опустошения ОЗУ (и как следствие зависание системы) при использовании таких программ как «AceStream/TorrServer»...

http://www.alexelec.in.ua/alexelec-s905-arm-3-0-2-amlogic-s905/

upd2. Спустя столько времени обнаружил, что компилить какие-то вещи намного быстрее в ~/Загрузки (или в каком-то подобном месте), чем на физическом разделе HDD. )
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 13 Февраль 2019, 09:23:44
swap - лучше вообще не использовать. Только там где мало памяти. А на таких компах , как правило и проц слабый
zram - т.к. у нас активно исользуется tmpfs надо бы опробовать
Можете сделать модуль включения с пояснениями. Протестим на разном железе
обнаружил, что компилить какие-то вещи намного быстрее в ~/Загрузки (или в каком-то подобном месте), чем на физическом разделе HDD. )
Т.к. при компиляции много обращений к маленьким файлам - идеально будет когда исходники и Devx - в RAM.  Т.е. исходники в /tmp , DEVX грузим copy2ram
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 13 Февраль 2019, 10:53:07
swap - лучше вообще не использовать.
Почему? Сейчас алгоритмы использования свопа уже не такие как раньше. Своп так просто не используется, только по делу.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 13 Февраль 2019, 10:53:56
Тогда оба протестировать и определиться
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: imp от 13 Февраль 2019, 11:16:57
Зашибись!Не хватает ОЗУ - пишемся в своп. А его держим в ОЗУ:)Так толсто, что даже тонко)Фругал, кстати на ram<256 жизнь в старичков никак не вдыхает, а даже наоборот. Если можете, обоснуйте мне тугодуму обратное.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 13 Февраль 2019, 11:27:16
Не хватает ОЗУ - пишемся в своп. А его держим в ОЗУ:)
На 2 гиговой машине zram + lzo очень спасают.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: imp от 13 Февраль 2019, 11:41:07
Я ничего не понял. По сути вопроса
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 13 Февраль 2019, 11:50:55
Я ничего не понял. По сути вопроса
Это работает )
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 13 Февраль 2019, 12:48:56
Я ничего не понял. По сути вопроса
https://wiki.archlinux.org/index.php/Zswap
Цитата
Zswap - это функция ядра, которая обеспечивает сжатый кэш RAM для страниц подкачки.  Страницы, которые в противном случае были бы выгружены на диск, вместо этого сжимаются и сохраняются в пул памяти в ОЗУ.  Когда пул заполнен или ОЗУ исчерпано, страница с наименее использованным (LRU) распаковывается и записывается на диск, как если бы она не была перехвачена.  После распаковки страницы в кэш подкачки сжатую версию в пуле можно освободить.
https://wiki.archlinux.org/index.php/Improving_performance#Zram_or_zswap
Цитата
Модуль ядра zram (ранее назывался compcache) предоставляет сжатое блочное устройство в ОЗУ.  Если вы используете его как устройство подкачки, ОЗУ может хранить гораздо больше информации, но использует больше ЦП.  Тем не менее, это гораздо быстрее, чем обмен на жесткий диск.  Если система часто возвращается к свопу, это может улучшить отзывчивость.  Использование zram также является хорошим способом сокращения циклов чтения / записи на диске из-за подкачки на SSD.

 Аналогичные преимущества (при аналогичных затратах) могут быть достигнуты с использованием zswap, а не zram.  Эти два, как правило, похожи по своему намерению, но не по действию: zswap работает как сжатый кэш ОЗУ и не требует (и не разрешает) обширной конфигурации пользовательского пространства.
Не надо теоретизировать. Давайте тестировать  ;)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: imp от 13 Февраль 2019, 12:59:16
Если ОЗУ заканчивается, надо добавлять ОЗУ)Привет, Кэп
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 13 Февраль 2019, 13:02:37
Если ОЗУ заканчивается, надо добавлять ОЗУ)
А своп по вашему чем занимается?)) Физически добавить память не всегда возможно.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 13 Февраль 2019, 13:07:37
Если ОЗУ заканчивается, надо добавлять ОЗУ
Это по любому лучший вариант
Но zram и еще uksm (есть в нашем ядре) чутка подэкономят. Без иллюзий про чудеса
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: imp от 13 Февраль 2019, 13:22:47
А своп по вашему чем занимается?))

Вы серьезно?!Своп, находящийся в оперативе добавляет оперативу...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: betcher от 13 Февраль 2019, 13:27:27

Вы серьезно?!Своп, находящийся в оперативе добавляет оперативу
Если коротко, то да!
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 13 Февраль 2019, 14:35:13
Своп, находящийся в оперативе добавляет оперативу...
Это сжимающее блочное устройство в памяти. Если вы архивы в ОЗУ не храните, в нашем случае это могут быть модули при copy2ram, то сжатие в среднем 2.5-3 раза. 1000 мб могут сжаться до 350-400 мб, тем самым освободив в ОЗУ 600-650 мб, по-другому говоря добавив в распоряжение другим программам 600 мб дополнительной памяти. Сжатие конечно зависит от характера данных. В общем получается использование ОЗУ более оптимальное. Все ненужное сжимается и зря в памяти не болтается. Докупить физической памяти можно для компа или ноута, а для паншета, смартфона или ТВ приставки? Не говорю что невозможно, но там сложнее с этим. Это надо жестко кулибничать.
На 2 гиговой тачке, где без zram давно бы уже встало колом, можно продолжать работать не испытвая особых тормозов при свопировании.
Название: Re: Grub4dos. Использование переменных (унификация, универсализация).
Отправлено: knn от 13 Февраль 2019, 21:57:14
Не надо теоретизировать. Давайте тестировать  ;)
kernel /%d%/vmlinuz%k%_64 zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=50 zswap.zpool=z3fold dir=%d% %s%
  Вариант для задания "zswap и его параметров" одной переменной (например для опционального применения):
Код
title set zswap %zs%
set "zs=zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=z3fold zswap.max_pool_percent=50"
lock
+ добавить в кернель-строке запуска переменную %zs%

  По аналогии можно применять для задания каких-либо других "длинных переменных". ;)

p.s.  g4d -0.4.6a
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: knn от 13 Февраль 2019, 23:12:57
zswap
пока недопонял - для прменения zswap наличие swap обязательно?
   Достаточно ли наличия "дефолтного свап-раздела" , подключаемого по-умолчанию (без параметра noswap ) ?
   ------------------------------------
zram
   На основании https://habr.com/ru/post/172137/#comment_5986503 сделал модуль zram-swap-kn01.pfs ( в прикреплении).[ для ПРА, для подключения при первоначальной загрузке]
    /dev/zram0 - создается. Как "оценить" "правильность работы" zram?
   
upd:
zram:
 в комментарии, по ссыле выше, упоминается возможность выставлять приоритет при монтировании в /etc/fstab
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 13 Февраль 2019, 23:22:48
пока недопонял - для прменения zswap наличие swap обязательно?
Для zswap наличие swap обязательно. А вот в каком виде - раздел или файл, без разницы. Swap-раздел проще, т.к. подхватывается автоматом.
   Достаточно ли наличия "дефолтного свап-раздела" , подключаемого по-умолчанию (без параметра noswap ) ?
Достаточно.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 13 Февраль 2019, 23:31:17
На основании https://habr.com/.....
Статья старая, в zram появились с тех пор новые параметры и возможности.
https://www.kernel.org/doc/Documentation/blockdev/zram.txt (13-Jan-2019 22:47)

Вот статья чуть посвежее (# отредактировано 3 года, 10 месяцев назад)
zRam + swap (https://archlinux.org.ru/forum/topic/13907/)

Как "оценить" "правильность работы" zram?
Код
$ zramctl
Более подробный вывод:
Код
$ zramctl --output-all

Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: knn от 13 Февраль 2019, 23:37:44
в zram появились с тех пор новые параметры и возможности.
https://www.kernel.org/doc/Documentation/blockdev/zram.txt
приблизительно понятно: в /sys/block/zram0/* нужно/можно прописывать параметры.
:) Для начала наверное - /sys/block/zram0/disksize.
--------------
$ zramctl
- пока у меня "не показывает" (пра03-рет)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 13 Февраль 2019, 23:45:09
пока у меня "не показывает" (пра03-рет)
Код
% zramctl --version   
zramctl из util-linux 2.33
Должен быть установлен пакет util-linux (у меня он по умолчанию) :
Код
% pacman -Qs util-linux                                           
local/util-linux 2.33-2 (base base-devel)

upd. Swap on zRAM using a udev rule (https://wiki.archlinux.org/index.php/Improving_performance#Swap_on_zRAM_using_a_udev_rule)
Цитата
Create the udev rule as shown in the example.

/etc/udev/rules.d/99-zram.rules

KERNEL=="zram0", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram0", TAG+="systemd"
KERNEL=="zram1", ATTR{disksize}="512M" RUN="/usr/bin/mkswap /dev/zram1", TAG+="systemd"

Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: knn от 14 Февраль 2019, 06:13:11
zram-swap-kn02.pfs (без TAG+="systemd")(прикреплен):
на 1801-lxqt:
Код
live@pc:~$ zramctl
NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo           512M   4K   76B   12K       2
--------------------------
на пра03-рет:
Код
live@pc:~$ zramctl
bash: zramctl: команда не найдена
/sys/block/zram0/disksize - 536870912
  Можно как-нибудь еще "увидеть" работоспособность zram на ПРА-ретро?
--------------------------------------------
p.s.
в выводе на lxqt вроде в "MOUNTPOINT" пусто...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: betcher от 14 Февраль 2019, 06:44:16
upd. Swap on zRAM using a udev rule
Это плохая идея. Зрам не имеет отношения к свопу, своп это только один из способов его использования.
Например с уирд можно changes   держать в zram вместо tmpfs. А правило при появлении устройств zram тут же делает из них своп.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 14 Февраль 2019, 17:56:39
 Есть еще некоторые полезные параметры. Монтировать /dev/zram0 с параметром discard:
Код
$ swapon --help
-d, --discard[=<policy>] enable swap discards, if supported by device

Available discard policy types (for --discard):
 once    : only single-time area discards are issued
 pages   : freed pages are discarded before they are reused
If no policy is selected, both discard types are enabled (default).
sudo swapon -d /dev/zram0

Это, как я понял, чтоб освобождать zram от старых данных, чтобы они не висели 'мертвым грузом'?

Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 14 Февраль 2019, 20:36:17
Это, как я понял, чтоб освобождать zram от старых данных, чтобы они не висели 'мертвым грузом'?
Да, ФС сразу освобождает не занятые блоки. В uird при использовании zram для tmpfs discard используется, иначе при удалении данных из tmpfs ОЗУ не освобождается.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 14 Февраль 2019, 21:09:59
sudo swapon -d /dev/zram0
У меня своп монтируется обычно, без -d, но при этом при освобождении свопа ОЗУ тоже освобождается, своп естественно на zram.
Вот данные после заполнения свопа:
Код
~ > free -h                                                                                                                                                                                                                                   
              total        used        free      shared  buff/cache   available
Mem:           3,9G        3,1G        175M        204M        559M        309M
Swap:          5,8G        2,2G        3,6G
~ > sudo zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo           5,8G  2,1G  1,9G  1,9G       2 [SWAP]
А вот после освобождения:
Код
~ > free -h
              total        used        free      shared  buff/cache   available
Mem:           3,9G        1,3G        2,0G        156M        550M        2,2G
Swap:          5,8G        371M        5,4G
~ > sudo zramctl
NAME       ALGORITHM DISKSIZE   DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo           5,8G 352,3M 91,8M 97,4M       2 [SWAP]
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 14 Февраль 2019, 23:33:15
  Еще один момент по поводу zRam.
В ссылках в этом сообщении http://forum.puppyrus.org/index.php?topic=21154.msg154073#msg154073 много упоминается параметр mem_limit. Там предлагается создавать zram в, скажем, 2Gb, а потом mem_limit в 1Gb. Чтобы не копаться там в массе информации, даю ссылку на конкретный пример https://gist.github.com/sultanqasim/79799883c6b81c710e36a38008dfa374

Зачем это делается? У меня сложилось мнение, что таким образом из массива сжимаемых и несжимаемых данных отбрасываются последние, чтобы бесполезно не занимать озу?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 15 Февраль 2019, 13:55:43
Еще один момент по поводу zRam
Еще 4 момента )) Понять бы точно что все это значит )
Цитата
compr_data_size  compressed size of data stored in this disk
mem_used_total   the amount of memory allocated for this disk. This
                  includes allocator fragmentation and metadata overhead,
                  allocated for this disk. So, allocator space efficiency
                  can be calculated using compr_data_size and this statistic. Unit: bytes
mem_limit        the maximum amount of memory ZRAM can use to store the compressed data
mem_used_max     the maximum amount of memory zram have consumed to store the data
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 18 Февраль 2019, 16:55:31
  Можно как-нибудь еще "увидеть" работоспособность zram на ПРА-ретро?
Код
cat /sys/block/zram0/mm_stat
Вывод в байтах. В таком порядке (можно грепнуть для удобства две первые строчки):
orig_data_size  compr_data_size  mem_used_total  mem_limit  mem_used_max  same_pages  pages_compacted  huge_pages


Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 18 Февраль 2019, 20:27:07
В качестве эксперимента задал MEM-LIMIT, а также vm.swappiness 90. Несколько дней смотрю уже.
Код
% zramctl --output-all
NAME DISKSIZE DATA COMPR ALGORITHM STREAMS ZERO-PAGES TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0
         1,7G  45M 14,9M zstd            4        294 16,1M      800M    20,5M     648B [SWAP]
Код
% free -m
              total        used        free      shared  buff/cache   available
Mem:           3498        1150        1593         256         754        1810
Swap:          1749          46        1703
Насчет swapon -d, наверно не надо, раз в документации о zram не упоминается discard.
https://www.kernel.org/doc/Documentation/blockdev/zram.txt
Цитата
6) Activate:
   mkswap /dev/zram0
   swapon /dev/zram0

   mkfs.ext4 /dev/zram1
   mount /dev/zram1 /tmp
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 18 Февраль 2019, 21:55:07
Открыл в firefox около 600 вкладок.
Код
% zramctl --output-all
NAME DISKSIZE  DATA  COMPR ALGORITHM STREAMS ZERO-PAGES  TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0
         1,7G  1,7G 394,1M zstd            4      11493 407,8M      800M   408,1M    15,9K [SWAP]
Код
% free -m
              total        used        free      shared  buff/cache   available
Mem:           3498        3155         129          89         214          45
Swap:          1749        1745           3
Пришлось в конце убить firefox через xkill.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 18 Февраль 2019, 21:56:35
В качестве эксперимента задал MEM-LIMIT
Надо попробовать забить своп так, чтоб COMPR дошло до 800+, но при этом чтоб свободное место в свопе ещё осталось, то есть чем-то не особо сжимаемым. Очень интересно что произойдет))
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 18 Февраль 2019, 22:06:23
попробовать забить своп так, чтоб COMPR дошло до 800+
Это только если zram создать на 4Gb. Или mem_limit в 300 mb.

Очень интересно что произойдет))
Дым из компа?  :)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 18 Февраль 2019, 22:27:20
Это только если zram создать на 4Gb. Или mem_limit в 300 mb.
Да нет же. Скопируйте в tmpfs модули)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 18 Февраль 2019, 22:31:07
Скопируйте в tmpfs модули
Мне показалось, что когда DATA сравнялось с DISKSIZE, COMPR тоже остановился. Но долго я не проверял - фризы.

Upd. Имеется в виду использовать что-то заведомо несжимаемое, например модули в tmpfs? Мне кажется, что я не пойму результат. Если бы была какая-то статистика по сжимаемыми и несжимаемым данным. В том смысле, где посмотреть что попало в zram, а что нет.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 18 Февраль 2019, 23:12:41
В том смысле, где посмотреть что попало в zram, а что нет.
Да это не важно. Если много залить, то часть все равно уйдет в zram. Я просто хотел понять как поведет себя ядро, если в свопе место ещё будет, а COMPR, который фактически равен размеру zram в ОЗУ, упрется в mem limit.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: Gerasats от 18 Февраль 2019, 23:20:16
Господа вы это на полном серьезе пишите или по приколу, какое освобождение памяти? ну да если у вас стоит SSD последнего поколения 3D+ на который воткнули swаp или zram, вы можете хоть что-то ощутить в задачах ну допустим по перекодированию видео, ну большой файл mkv будет перекодироваться не 3 часа 30 минут, а аж целых 3 часа 29минут и 30 секунд, я уже не пытаюсь даже упоминать частоту работы памяти, шины и блока обмена с носителями (на которых это добро поместили) .....хотя ладно боритесь, но читать весело  :D
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 18 Февраль 2019, 23:47:49
если у вас стоит SSD последнего поколения 3D+ на который воткнули swаp или zram
zram на SSD?  ???
хотя ладно боритесь, но читать весело
Вас читать не менее весело :)
можете хоть что-то ощутить в задачах ну допустим по перекодированию видео
Для этой задачи от zram никакого профита.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 00:10:36
Для статистики. Изменил zram 1:1. Тест тот же (600 вкладок). Все в предел железа уперлось, убил firefox под конец.
Код
% zramctl --output-all
NAME DISKSIZE  DATA  COMPR ALGORITHM STREAMS ZERO-PAGES  TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0
         3,4G  1,8G 457,7M zstd            4      18270 472,3M      800M   512,4M   112,4K [SWAP]
Код
% free -m
              total        used        free      shared  buff/cache   available
Mem:           3498        3175         156          76         166          56
Swap:          3498        1781        1716
upd. С включенным mem_limit выдерживается степень сжатия,  DATA/COMPR?
Отсылка к http://forum.puppyrus.org/index.php?topic=21154.msg154073#msg154073, где часто упоминается mem_limit.

upd. Опять же для статистики, MEM-LIMIT в отношении к DISKSIZE как 1:3 (тот же тест):
Код
% zramctl --output-all
NAME DISKSIZE  DATA  COMPR ALGORITHM STREAMS ZERO-PAGES  TOTAL MEM-LIMIT MEM-USED MIGRATED MOUNTPOINT
/dev/zram0
         1,7G  1,7G 424,7M zstd            4      14237 439,5M      500M   439,6M    64,1K [SWAP]
Код
% free -m
              total        used        free      shared  buff/cache   available
Mem:           3498        3107         157          74         233          91
Swap:          1749        1714          34
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 19 Февраль 2019, 10:42:57
Код
~ $ free -m
              total        used        free      shared  buff/cache   available
Mem:           2000        1279          65         150         655         416
Swap:          1400         687         712
Код
~ $ cat /proc/swaps 
Filename                                Type            Size    Used    Priority
/dev/zram0                              partition       1434060 704276  100
Код
ALGORITHM DISKSIZE   DATA COMPR TOTAL STREAMS MOUNTPOINT MEM-LIMIT MEM-USED ZERO-PAGES
lzo           1,4G 304,4M   96M  100M       2 [SWAP]          100M     100M      30040
А теперь вопрос, куда запихнулось 687 мб, если DATA всего 304. ZERO-PAGES?
Причем интересно, COMPR и MEM-USED остановились, а DATA продолжало увеличиваться.

P.S. Своп освободил, COMPR уменьшился, а MEM-USED так и остался 100M.

P.P.S С лимитом dmesg забит вот этим:
Код
[  636.891597] Write-error on swap-device (251:0:1943184)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 11:20:36
С лимитом dmesg забит вот этим
А если mem_limit сделать как и советуют в половину DISKSIZE, т.е. в данном случае 700mb?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 19 Февраль 2019, 11:34:03
А если mem_limit сделать как и советуют в половину DISKSIZE
Ну если адекватного размера сделать, то уж пока лимит не исчерпается ошибок не будет. Я то специально сделал поменьше, чтоб посмотреть что будет когда mem_used упрется в mem_limit. Так и предполагал, что ядро будет пытаться свопить, а zram limit не даст.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 11:46:59
  Из ссылок, которые я неоднократно давал выше, некоторые пользователи  применяют zram в связке со свопом на диске, давая им разный приоритет. Сначала забивается zram, потом подключается дисковый своп. Там даже подумывали, как сделать, чтобы происходило не переключение между ними, а zram именно освобождался при полном заполнении на дисковый, и был опять готов к приему данных.
Так сложно написал.)

Но они там используют несколько дисков /dev/zram0 /dev/zram1 /dev/zram2 /dev/zram3. И озвучивали идею чередования их. Сначала один сбрасывает на дисковый, потом другой. Но это как я понял, лишь в качестве идеи.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 19 Февраль 2019, 11:51:59
Так сложно написал.)
Все понятно)
Zswap что ли хотят изобрести?))
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 11:58:16
Пример использования связки zram+дисковый из комментариев https://www.cnx-software.com/2018/05/14/running-out-of-ram-in-ubuntu-enable-zram/#comment-553682
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 12:03:29
Zswap что ли хотят изобрести?))
Zram и zswap все-таки они очень разные. Если цель использовать на устройствах с маленьким размером памяти (одноплатники), то zswap здесь уже не поможет. А zram даст выигрыш добавив памяти (виртуально?).
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 19 Февраль 2019, 14:55:34
Если цель использовать на устройствах с маленьким размером памяти (одноплатники), то zswap здесь уже не поможет.
Без свопа на диске конечно не поможет, да и так они очень разные, не спорю, но то что пытаются сделать те ребята очень похоже на zswap с использованием zbud или z3fold. Основную разницу вижу лишь в том, что zswap проиграет по сжатию, хотя с z3fold проигрыш будет минимальный, но со сжатием zstd скорее всего отрыв увеличится, и общий размер свопа у связки zram + своп на диске будет больше на размер zram. Если уж есть своп на диске, то на мой взгляд zswap предпочтительнее. Изначально известный размер сжатого пула в ОЗУ, никаких лимитов не нужно и вытекающих из этого ошибок записи в своп при достижении этого самого лимита.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 19 Февраль 2019, 16:13:59
Может уже кто-то может подвести итоги: что для чего на чем рекомендуется использовать + пошаговая инструкция настройки
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 19 Февраль 2019, 16:30:48
подвести итоги: что для чего на чем рекомендуется использовать
Наверно это зависит о желаемой цели.
 - Например, второй комп у меня (1Gb озу; 1 ядро) используется как мультимедийный центр (музыка, ютуб, браузер), там я уже давно использую zswap.
 - Основной комп я еще частенько использую для компиляции, и для ускорения задач желательно это делать в оперативке. Здесь предпочтительней, думаю, будет zram.

А все инструкции есть в арчвики, и на форуме часто выкладывали разные конфиги.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 19 Февраль 2019, 16:44:45
Может уже кто-то может подвести итоги: что для чего на чем рекомендуется использовать + пошаговая инструкция настройки
У меня обычно везде uird.swap=auto, это значит, что при отсутствии дискового свопа включается zram, при наличии zswap. Но сейчас ввиду экспериментов на флешке задаю zram вручную, то есть не auto, а например uird.swap=zram::100::lz4, что как видно позволяет и размер задать и алгоритм. Смотрел тесты, читал комментарии, пришел к выводу, что на практике lzo все-таки получше будет чем lz4, а zstd пока не доехал.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: Gerasats от 19 Февраль 2019, 22:19:08
от zram никакого профита.
Да и от свопа тоже, ну если вы еще физику считаете наукой, а не буржуазной отрыжкой, то никакой экономии, увеличения производительности (а при zram так еще и потеря будет) не будет, ну для другого это все предумывается, для чего? Для завершения обработки значительных цело-дробночисленных массивов, коих в бытовой жизни не бывает, ну разве что перекодировка блу-рэя в мкв или мп4, ну по времени и современном инете выкачать требуемое из инета в разы быстрее. А если еще ОЗУ от 8 гБ, то и последняя операция становится просто маниакальной по желанию нагружать проц....
может подвести итоги:
тут процесс важен..сколько копий по этому вопросу поломано в хлам на прочих линукс форумах, вот и до вас добрело, что примечательно, со временем затихнет, а потом опять взорвется :)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: imp от 19 Февраль 2019, 23:04:02
Gerasats, массивы бывают очень разные. Но я до сих пор не пойму, как за счет оперативы добавить ее же. Не, ну черт с ним с компрессией. Хотя на нее тож надо тратить время на запаковку и распаковку (диинамическую, заметьте). И енто дело один хрен в ОЗУ... То ли я тупой, то ли лыжи не едут...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: neobht от 20 Февраль 2019, 04:59:23
Gerasats, массивы бывают очень разные. Но я до сих пор не пойму, как за счет оперативы добавить ее же. Не, ну черт с ним с компрессией. Хотя на нее тож надо тратить время на запаковку и распаковку (диинамическую, заметьте). И енто дело один хрен в ОЗУ... То ли я тупой, то ли лыжи не едут...
Все просто. Сжатие идет блочными методами. То есть при сжатии берется блок, он сжимается в 3-5 раз и размещается. В итоге получается, что в процессе сжатия требуется оперативки чуть больше, чем на блок, но сжимается куча блоков и в целом часть озу содержит сжатое в 3-5 раз. Поэтому реально в среднем около 2 размеров оперативной памяти получается. Но работает чуть сильнее процессор, который в повседневных задачах простаивает.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: RoDoN от 20 Февраль 2019, 09:42:54
Читаю тему поверхностно, не особо вникал, возник вопрос на каких минимальных характеристиках железа можно получить осязаемый эффект, т.е. проц не хуже какого-то и памяти нужно не меньше скольки?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 20 Февраль 2019, 10:22:42
на каких минимальных характеристиках железа можно получить осязаемый эффект, т.е. проц не хуже какого-то и памяти нужно не меньше скольки?
Использую zram на 2-х ядерном Celeron E3300 2.5GHz c 2 ГБ ОЗУ.
Алгоритм lzo. При свопинге есть небольшие подтормаживания, но это ерунда по сравнению со ступором от нехватки памяти, к которому мог приводить запуск воторого браузера.
Да и от свопа тоже, ну если вы еще физику считаете наукой, а не буржуазной отрыжкой, то никакой экономии, увеличения производительности (а при zram так еще и потеря будет) не будет
При нехватке ОЗУ от свопа очень даже большая польза. Своп вообще не для увеличения производительности предназначен, а как вынужденная мера. zram-swap тоже самое, но он по сравнению с обычным свопом, в большинстве случаев, тормозить будет меньше, так как запись/чтение и скорость компресси/декомпрессии данных в ОЗУ будет быстрее чем запись/чтение на жесткий диск.
я до сих пор не пойму, как за счет оперативы добавить ее же. Не, ну черт с ним с компрессией. Хотя на нее тож надо тратить время на запаковку и распаковку (диинамическую, заметьте). И енто дело один хрен в ОЗУ...
В памяти много неиспользуемых страниц, если их сжать в 3 раза, то освободится 2/3 от ранее занимаемого ими места. А трата времени на запаковку и распаковку можно не брать во внимание, так как алгоритмы быстрые и даже на слабых процах не займут критично много времени.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: Gerasats от 20 Февраль 2019, 11:31:03
скорость компресси/декомпрессии данных в ОЗУ будет быстрее чем запись/чтение на жесткий диск
И какая компрессия-декомпресия в свопе? Своп не жмет и не разжимает данные, туда просто вкидываются куски согласно очереди обработки в ОЗУ, в отличии от зрама где таки жмем и пережимаем куски, из-за чего и тормозим...ну это так в порядке общения, по сути зрам тоже сжатие данных в винде, объем показываем в разы меньше на самом деле хаваем в разы больше...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: Gerasats от 20 Февраль 2019, 11:38:22
можно получить осязаемый эффект
:) Вот это извечный вопрос во всех обсуждениях временного хранилища, такой же вопрос задавался и на Минтах, и на Убунтах и на Манджарах...и знаете если и был ответ, и находилась пара с одинаковым железом (от слова совсем мать+проц+память+видео+винт) всегда возникал диспут: у одного космический успех, у второго космических размеров тормоз, поэтому по-моему вся полемика лежит в плоскости осязаемых реакций, в точнее кто что хочет, тот и видит....особо, как я уже говорил если ОЗУ от 4 до 8гБ, то как правило эффект близок к 0, при более 8гБ его вообще нету от слова совсем, а вот в пределах до 2гБ и идет война народная, при этом у одних это полный восторг, у других полное неприятие...так что с эффектом, как то все сложно...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 20 Февраль 2019, 12:18:08
Своп не жмет и не разжимает данные
А кто утверждает обратное?
в отличии от зрама где таки жмем и пережимаем куски, из-за чего и тормозим
Еще раз говорю, основная цель не быстродействие, а освободждение памяти от неиспользуемых страниц.
как я уже говорил если ОЗУ от 4 до 8гБ, то как правило эффект близок к 0, при более 8гБ его вообще нету от слова совсем
В том то и дело, что это чаще всего нужно на компах с ОЗУ до 4 гб. На 6 и более гигах своп редко когда используется, разве что если вы занимаетесь видео монтажом и тому подобным или запускаете кучу виртуалок, но в таких случаях лучше припасти именно реальной оперативной памяти, если мать позволяет. А так, если у вас 8 гб и этого хватает, то о каком эффекте от зрам можно вообще говорить. Эффект только при дефиците памяти.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 23 Февраль 2019, 15:44:28
Zstd по умолчанию жмет с 3:
Код
$ zstd --help
 -#     : # compression level (1-19, default: 3)
  Но теперь появилась возможность задавать степень сжатия через переменную.
Speaking of compression of level : it's now possible to use environment variable ZSTD_CLEVEL to influence default compression level. This can prove useful in situations where it's not possible to provide command line parameters, typically when zstd is invoked "under the hood" by some calling process.
https://github.com/facebook/zstd/releases/tag/v1.3.8

Не знаю только, насколько это востребовано в zRam.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 23 Февраль 2019, 16:10:45
Не знаю только, насколько это востребовано в zRam.
Для zram важна скорость, особенно если в нем своп. Думаю по умолчанию 3 оптимально дня большинства, хотя для вашего проца наверно можно и побольше )
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: arcad от 09 Март 2019, 11:44:59
Для retro с minirc простой способ включить zswap. Своппинг в swapfile.
[ Читать далее ]
В ddr01  не получилось подключить swapfile автоматом.
Спойлер
live@live:~$ free
              total        used        free      shared  buff/cache   available
Mem:        1019392      173348      303548      180736      542496      650568
Swap:             0           0           0
live@live:~$ dmesg | grep swap
[    0.000000] Kernel command line: dir=ddr01 quiet copy2ram noswap rw zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=z3fold zswap.max_pool_percent=50
[    0.691586] zswap: zpool z3fold not available, using default zbud
[    0.691613] zswap: loaded using pool lz4/zbud
live@live:~$ zramctl --output-all
bash: zramctl: команда не найдена
live@live:~$ cat /proc/swaps
Filename            Type      Size   Used   Priority


[свернуть]

а руками подключается
Спойлер
live@live:~$ sudo swapon /mnt/sda8/swapfile
swapon: /mnt/sda8/swapfile: insecure file owner 1000, 0 (root) suggested.
live@live:~$ free
              total        used        free      shared  buff/cache   available
Mem:        1019392      355732       36120      184056      627540      464864
Swap:       2097148           0     2097148
live@live:~$
[свернуть]
zpool z3fold недоступно, использовано по умолчанию zbud  - есть какая то разница?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 09 Март 2019, 11:54:30
В DDR01 нет minirc
А обычный своп без noswap автоподключается?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 09 Март 2019, 12:05:15
zpool z3fold недоступно, использовано по умолчанию zbud  - есть какая то разница?
  Если коротко и своими словами, то разница в степени сжатия. С z3fold она больше.
https://wiki.archlinux.org/index.php/Zswap#Compressed_memory_pool_allocator
https://www.kernel.org/doc/Documentation/vm/z3fold.txt
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 09 Март 2019, 12:05:50
zpool z3fold недоступно, использовано по умолчанию zbud  - есть какая то разница?
zbud пакует максимум 2 страницы в одну, z3fold 3 в одну. То есть если у zbud в среднем сжатие 1.7, то у z3fold 2.7. Есть ещё zmalloc. Он жмёт максимально, но по сравнению с этими двумя работает иначе. Первые двое после заполнения пула переносят более старые страницы из пула на диск, а новые в пул. zmalloc же заполняет пул и далее все на диск.
Чтобы использовать z3fold он должен быть в инитрд.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 11 Март 2019, 13:40:43
systemd-zpool-scrub-1.1-1-any.pkg.tar.xz (ftp://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/systemd-zpool-scrub-1.1-1-any.pkg.tar.xz)
systemd-zram-1.0-1-any.pkg.tar.xz (ftp://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/systemd-zram-1.0-1-any.pkg.tar.xz)
zfs-utils-p-0.7.13_64-sf01.pfs (ftp://ftp.yandex.ru/puppyrus/puppyrus-a64/pfs-portable/zfs-utils-p-0.7.13_64-sf01.pfs)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: krasnyh от 15 Март 2019, 13:20:03
 Помимо обсуждаемого в этой теме mem_limit, есть еще параметр backing_dev.
Цитата
backing_dev        RW   set up backend storage for zram to write out

With CONFIG_ZRAM_WRITEBACK, zram can write idle/incompressible page
to backing storage rather than keeping it in memory.
To use the feature, admin should set up backing device via

   "echo /dev/sda5 > /sys/block/zramX/backing_dev"
https://www.kernel.org/doc/Documentation/blockdev/zram.txt

Пример его использования по ссылке, внизу страницы на гитхабе:
Чтобы не копаться там в массе информации, даю ссылку на конкретный пример https://gist.github.com/sultanqasim/79799883c6b81c710e36a38008dfa374
Цитата
modprobe zram num_devices=5; ((z=0)); for d in /dev/mmcblk0pX /dev/sdaX /dev/sdbX /dev/sdcX /dev/sddX; do echo $d >/sys/block/zram${z}/backing_dev; echo lz4 >/sys/devices/virtual/block/zram${z}/comp_algorithm; echo 96m >/sys/devices/virtual/block/zram${z}/mem_limit; echo 512m >/sys/devices/virtual/block/zram${z}/disksize; mkswap /dev/zram${z}; swapon -p 15 /dev/zram${z}; ((z++)); done

 Как я понял, там утверждается, что с mem_limit несжимаемые данные отбрасываются, но с backing_dev они сохраняются на внешних устройствах.

 Чтобы использовать backing_dev должен быть включен в ядре CONFIG_ZRAM_WRITEBACK. В наших ядрах - # CONFIG_ZRAM_WRITEBACK is not set

p.s. Навеяло обсуждениями в соседней теме. Это для теории, о практическом применении здесь речи не идет.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 16 Декабрь 2019, 14:22:48
Посмотрел как сделан zram (http://wiki.puppyrus.org/soft/porteus-initrd#zram)= в портеус
Передрал ничего не меняя - в аттаче. Положить в /etc/rc.d (для minirc). Или  добавить вызов этого скрипта в /etc/rc.local
По дефолту будет lzo компрессия. Если надо  lz4 :
Код
echo lz4 > /sys/block/zram0/comp_algorithm
Zstd (http://forum.puppyrus.org/index.php?topic=21154.msg154276#msg154276) - наверное только на свежих ядрах - короче, точно не знаю

Если я правильно понял - если памяти столько, что в своп ничего не попадает - это бесполезно
А если в своп что-то попадает - памяти и так мало и как это поможет.... не очень понимаю

Меня другое заинтересовало
При работе фругала без сохраненки (или с save.pfs) - /home и пр. находятся в tmpfs
Почему бы не сделать вместо tmpfs - zram ...
Например кэш браузера может прилично занимать. Почему бы это не сжать...
Всякие файловые кэши тоже не помешает сжать в ram (тем самым ускорить)
В porteus-initrd для этого надо поправить пару строк в функции fail_chm
Есть смысл заморачиваться или я не понял идеи zram...
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 16 Декабрь 2019, 14:35:11
А если в своп что-то попадает - памяти и так мало и как это поможет.... не очень понимаю
"Ненужное" будет в сжатом виде.
Почему бы не сделать вместо tmpfs - zram ...
Можно, почему нет. В UIRD сделано. Еще есть варианты с btrfs образом в tmpfs.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 16 Декабрь 2019, 14:39:23
"Ненужное" будет в сжатом виде.
в памяти, которой и так не хватает (раз лезет в своп)
Когда своп на винте - понятно, чем это поможет и за счет чего (тормозов)
А здесь, какая-то "змея, кусающая свой хвост". Не понимаю - но выше по теме люди пишут, что помогает...
Поэтому передрал из портеуса. Раз там это так долго есть - значит кому-то надо...
В UIRD сделано
Юзали? помогает?
есть варианты с btrfs образом в tmpfs.
Я так понимаю, что будет примерно тоже но более настраиваемо и посложней
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 16 Декабрь 2019, 14:46:44
Вот и автор slax нахваливает (https://www.slax.org/blog/18384-Double-RAM-with-zram.html)
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 16 Декабрь 2019, 15:12:39
Не понимаю - но выше по теме люди пишут, что помогает...
Юзали? помогает?
Использовал. Мне на 2 гиговом ПК очень помогало. Сейчас на этом ПК использую виндовый своп, потому что для copy2ram, ввиду несжимаемости модулей, такой вариант не подходит. А в последнее время copy2ram часто использую.
Я так понимаю, что будет примерно тоже но более настраиваемо и посложней
Да. Даже не знаю что лучше.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 16 Декабрь 2019, 15:18:17
Мне на 2 гиговом ПК очень помогало
При каких задачах?
в последнее время copy2ram часто использую.
Вроде обсуждали и пришли к выводу, что польза только на ноуте - вообще носители отключить, чтобы батарею не жрали. В остальных случаях ускорит только первый запуск проги...
Это не так?
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 16 Декабрь 2019, 15:25:05
При каких задачах?
Браузер в основном, плюс офис, телеграм и терминал.
В остальных случаях ускорит только первый запуск проги...
Мне чтоб флешку вытащить. Почему-то иногда отваливается. Вроде и не задеваю.
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: sfs от 16 Декабрь 2019, 15:31:07
Браузер в основном, плюс офис, телеграм и терминал.
Тогда - пробуем. Делимся впечатлениями
Название: Re: zswap - уменьшить количество обращений к SWAP
Отправлено: ilfat от 16 Декабрь 2019, 15:47:22
Кстати, мне больше понравился алгоритм lzo, по сравненю с lz4. При таком использовании видимо эффективность сжатия важнее чем скорость, если оно конечно не чересчур медленное. Да и скорость судя по тестам не так уж и сильно у них отличается. Я это вижу так, что чем эффективнее сжатие, тем больше памяти освобождается и тем реже приходится прибегать к свопингу. И видимо от этого по ощущениям на lzo комфортнее. Но сейчас вроде и zstd можно использовать, но я не уверен.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 01 Январь 2021, 13:20:39
Офф-топик:
Завязывайте
кто-то может в цифрах показать у себя работу zram? swap в zram? zswap? И что, система не уходит в lockdown на ядре << 5.10 ?
Юзал на твбокс (под линуксом). Когда хром сжирал память - висло
Отключил. Так предсказуемее
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 16 Февраль 2021, 11:36:08
https://aur.archlinux.org/packages/sd-zram/
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 28 Март 2021, 18:49:42
Юзал на твбокс (под линуксом). Когда хром сжирал память - висло
Отключил. Так предсказуемее
Ну да, современные тенденции - использовать пользовательский oom-killer (earlyoom,nohang...), ибо родной не справляется.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 15 Апрель 2021, 20:54:03
Компания Google представила патчи многоуровневого LRU для Linux (https://www.opennet.ru/opennews/art.shtml?num=54972)

Цитата
Компания Google представила патчи (https://lore.kernel.org/lkml/20210413065633.2782273-1-yuzhao@google.com/) с улучшенной реализацией механизма LRU для Linux. LRU (Least Recently Used (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%BA%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F#Least_recently_used_(%D0%92%D1%8B%D1%82%D0%B5%D1%81%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D0%B2%D0%BD%D0%BE_%D0%BD%D0%B5%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D0%BC%D1%8B%D1%85))) - это механизм, позволяющий отбрасывать или выгружать в своп неиспользуемые страницы памяти. По мнению корпорации Google, существующая реализация механизма определения подлежащих вытеснению страниц создаёт слишком высокую нагрузку на CPU, а также часто принимает неудачные решения о том, какие именно страницы выгружать.

В экспериментах, проведённых компанией, новая реализация LRU сократила количество принудительных завершений программ из-за нехватки памяти в системе (OOM kill) на 18%, в Chrome OS на 96% снизилось число отброшенных вкладок браузера из-за недостатка памяти и на 59% уменьшилось число OOM kill в нагруженных устройствах. Это вторая версия патчей, где устранена регрессия производительности и иные замеченные при тестировании недостатки.
Название: Re: Новые возможности свежего софта
Отправлено: krasnyh от 07 Сентябрь 2021, 13:18:59
Переписал в нашей вики https://wiki.puppyrus.org/soft/porteus-initrd?&#zram Так понятно?
Цитата
При использовании swap in zram вместе с обычным swap (на диске) - выставляйте zram больший приоритет : swapon –priority 100 /dev/zram0, чтобы он использовался в первую очередь
Тема на лоре zram и zswap или что то ещё,вместе? (https://www.linux.org.ru/forum/general/16233491). Там упоминается и этот случай, в негативном контексте и предложением использовать zswap, если нужен своп на диске + сжатие.
Название: Re: Re: Новые возможности свежего софта
Отправлено: krasnyh от 07 Сентябрь 2021, 16:12:03
Или все же реализовать желаемое через возможности самого zram, с backing_dev.
https://forum.puppyrus.org/index.php?topic=23160.msg178482#msg178482

Это, кстати, будет ответом на пост (https://forum.puppyrus.org/index.php?topic=23160.msg178883#msg178883) из другой темы, ибо все несжимаемые/простаивающие данные будут отбрасываться на этот диск.
Название: Re: Re: Новые возможности свежего софта
Отправлено: sfs от 08 Сентябрь 2021, 08:43:32
предложением использовать zswap
Добавил
Цитата
Кроме того, для ускорения медленных носителей можно использовать zswap
Норм? Или есть еще идеи?
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 08 Сентябрь 2021, 09:45:29
Норм?
Цитата
При использовании swap in zram вместе с обычным swap (на диске) - выставляйте zram больший приоритет : swapon –priority 100 /dev/zram0, чтобы он использовался в первую очередь
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 09 Сентябрь 2021, 09:17:46
Что не так?
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 09 Сентябрь 2021, 11:27:13
Имеем два свопа, быстрый в RAM (zram) и медленный на HDD (swap). Сначала заполняется zram, как имеющий больший приоритет. После полного заполнения, он повисает мертвым грузом и и своппинг взаимодействует только со вторым медленным swap.

В итоге, хотели ускорить ввод-вывод используя быстрый zram в памяти + сжатие, а получили обычный медленный своп на диске + без сжатия увеличен обмен данными. т.е. HDD 'скрипит' безостановочно, мигая лампочкой.


Или все же реализовать желаемое через возможности самого zram, с backing_dev.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 09 Сентябрь 2021, 11:33:23
получили обычный медленный своп на диске
Могу дописать - "не рекомендуется, т.к. после заполнения zram - swap окажется на медленном носителе"
backing_dev
На моем 413 ядре это работает? А на каких еще?
На данный момент он поддерживает только раздел.
Неудобно. Улучшений не произошло?
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 09 Сентябрь 2021, 11:44:21
"не рекомендуется, т.к. после заполнения zram - swap окажется на медленном носителе"
Там больше недостатков, ведь весь заполненный объем zram не будет освобождаться до перезагрузки компа. Мало хорошего, когда в памяти висит мертвым грузом приличный нерабочий кусок данных.

Часто, в контексте ситуации со zram и свопом на диске, упоминают словосочетание "инверсия LRU". Что такое, это гуглить, но сложно в понимании. :)
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 09 Сентябрь 2021, 11:53:23
На моем 413 ядре это работает? А на каких еще?
Но если нет backing_dev в /sys/block/zram0/, а там его нет, значит без поддержки.
Для примера, скрин из IceArch.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 09 Сентябрь 2021, 12:07:28
Там больше недостатков
Ну так я и напишу "не рекомендуется"
если нет backing_dev в /sys/block/zram0/, а там его нет
в моем 513 нет. А чем backing_dev лучше zswap?
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 09 Сентябрь 2021, 12:10:59
Я всего лишь предложил альтернативу для zram+диск в виде zswap и backing_dev. Причем backing_dev упомянут в контексте, если уж очень хочется именно zram.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 16 Январь 2022, 09:33:05
в uird по умолчанию включен zswap
Посмотрел конфиги ядра арча (https://wiki.archlinux.org/title/zswap#Toggling_zswap) 
В арче тоже включен по дефолту
В магее выкл. В портеус и пупи (https://oldforum.puppylinux.com/viewtopic.php?t=112599) zswap вообще нет в ядре

Вот вы опять запутались. Теперь понимаете , почему не упирался что-то добавлять про всключение zswap в исо. Не для широких масс такие тонкие настройки

Кстати у нас в вики (https://wiki.puppyrus.org/setups/swap) вообще не было про зрам. Добавил ссылку. Может там изложить подробнее? Есть идеи?
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 21 Февраль 2023, 10:01:54
В 6.2 ядре появилась интересная фича recompression (https://www.opennet.ru/opennews/art.shtml?num=58640)
+рекомпрессия
+-------------
+
+С помощью CONFIG_ZRAM_MULTI_COMP zram может повторно сжимать страницы, используя альтернативные алгоритмы сжатия.
+(вторичных) алгоритмов сжатия. Основная идея заключается в том, что альтернативный
+алгоритм сжатия может обеспечить лучшую степень сжатия ценой
+(потенциально) более низкой скорости сжатия/декомпрессии. Альтернативный алгоритм сжатия
+алгоритм может, например, более успешно сжимать огромные страницы (те.
+которые алгоритм по умолчанию не смог сжать). Другим применением являются простаивающие страницы
+рекомпрессия - страницы, которые остыли и сидят в памяти, могут быть повторно сжаты
+используя более эффективный алгоритм и, следовательно, уменьшить использование памяти zsmalloc.
+
+С помощью CONFIG_ZRAM_MULTI_COMP, zram поддерживает до 4 алгоритмов сжатия:
+один первичный и до 3 вторичных. Первичный компрессор zram объясняется
+в разделе "3) Выбор алгоритма сжатия", вторичные алгоритмы настраиваются
+используя атрибут устройства recomp_algorithm.
+
+Пример::
+
+ #показать поддерживаемые алгоритмы рекомпрессии
+ cat /sys/block/zramX/recomp_algorithm
+ #1: lzo lzo-rle lz4 lz4hc [zstd]
+ #2: lzo lzo-rle lz4 [lz4hc] zstd
+
+Альтернативные алгоритмы сжатия сортируются по приоритету. В примере
+выше, zstd используется как первый альтернативный алгоритм, который имеет приоритет
+1, а lz4hc настроен как алгоритм сжатия с приоритетом 2.
+Приоритет альтернативного алгоритма сжатия задается во время алгоритмов
+конфигурации:::
+
+ #выбрать алгоритм рекомпрессии zstd, приоритет 1
+ echo "algo=zstd priority=1" > /sys/block/zramX/recomp_algorithm
+
+ #выбрать алгоритм рекомпрессии deflate, приоритет 2
+ echo "algo=deflate priority=2" > /sys/block/zramX/recomp_algorithm
+
+Еще один атрибут устройства, который CONFIG_ZRAM_MULTI_COMP включает, это recompress,
+который управляет рекомпрессией.
+
+Примеры::
+
+ #IDLE страницы рекомпрессия активируется режимом `idle`.
+ echo "type=idle" > /sys/block/zramX/recompress
+
+ #HUGE рекомпрессия страниц активирована режимом `huge`
+ echo "type=huge" > /sys/block/zram0/recompress
+
+ #HUGE_IDLE рекомпрессия страниц активирована режимом `huge_idle`
+ echo "type=huge_idle" > /sys/block/zramX/recompress
+
+Количество простаивающих страниц может быть значительным, поэтому в пользовательском пространстве можно задать размер
+порог (в байтах) ручке рекомпрессии: zram будет рекомпрессировать только страницы
+равного или большего размера:::
+
+ #перекомпрессия всех страниц размером более 3000 байт
+ echo "threshold=3000" > /sys/block/zramX/recompress
+

+ #рекомпрессия всех страниц размером более 3000 байт
+ echo "threshold=3000" > /sys/block/zramX/recompress
+
+ #рекомпрессия простаивающих страниц размером более 2000 байт
+ echo "type=idle threshold=2000" > /sys/block/zramX/recompress
+
+ Рекомпрессия простаивающих страниц требует отслеживания памяти.
+
+Во время повторного сжатия для каждой страницы, которая соответствует критериям повторного сжатия,
+ZRAM итерирует список зарегистрированных альтернативных алгоритмов сжатия в
+порядке их приоритетов. ZRAM останавливается либо когда повторное сжатие было
+успешным (повторно сжатый объект меньше по размеру, чем исходный)
+и соответствует критериям повторного сжатия (например, порог размера), либо когда не осталось
+не осталось вторичных алгоритмов, которые можно было бы попробовать. Если ни один из вторичных алгоритмов не может
+успешно повторно сжать страницу, такая страница помечается как несжимаемая,
+поэтому ZRAM не будет пытаться повторно сжать ее в будущем.
+
+Это поведение повторного сжатия, когда он итеративно просматривает список
+зарегистрированных алгоритмов сжатия, увеличивает наши шансы найти
+алгоритм, который успешно сжимает конкретную страницу. Однако иногда,
+очень удобно (а иногда даже необходимо) ограничить рекомпрессию
+только одним конкретным алгоритмом, чтобы не пробовать другие алгоритмы.
+Этого можно добиться, задав параметр algo=NAME:::
+
+ #использовать только алгоритм zstd (если он зарегистрирован)
+ echo "type=huge algo=zstd" > /sys/block/zramX/recompress
+

Переведено с помощью www.DeepL.com/Translator (бесплатная версия)
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 21 Февраль 2023, 10:02:06
Т.е. вот такой скрипт надо в автостарт
Код
 echo "algo=zstd priority=1" > /sys/block/zramX/recomp_algorithm                                                
 #выбрать алгоритм рекомпрессии deflate, приоритет 2                                                           
 echo "algo=deflate priority=2" > /sys/block/zramX/recomp_algorithm                                             
                                                                                                               
 #IDLE страницы рекомпрессия активируется режимом `idle`.                                                       
 echo "type=idle" > /sys/block/zramX/recompress                                                                 
 #HUGE рекомпрессия страниц активирована режимом `huge`                                                         
 echo "type=huge" > /sys/block/zram0/recompress                                                                 
 #HUGE_IDLE рекомпрессия страниц активирована режимом `huge_idle`                                               
 echo "type=huge_idle" > /sys/block/zramX/recompress                                                           
                                                                                                               
 #перекомпрессия всех страниц размером более 3000 байт                                                         
 echo "threshold=3000" > /sys/block/zramX/recompress                                                           
 #рекомпрессия всех страниц размером более 3000 байт                                                           
 echo "threshold=3000" > /sys/block/zramX/recompress                                                           
 #рекомпрессия простаивающих страниц размером более 2000 байт                                                   
 echo "type=idle threshold=2000" > /sys/block/zramX/recompress 
Интересно, но как оценить эффективность...
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 19 Июнь 2023, 14:36:57
Т.е. вот такой скрипт надо в автостарт
В CachyOS уже добавили такое, https://github.com/CachyOS/CachyOS-Settings/blob/master/etc/udev/rules.d/30-zram.rules:
Код
ACTION=="add", KERNEL=="zram[0-9]*", ATTR{recomp_algorithm}=="", ATTR{recomp_algorithm}="algo=lz4 priority=1"
IMPORT{program}="/sbin/sh -c \"echo \"type=idle\" > /sys/block/zram*/recompress\""
Обсуждение (https://github.com/CachyOS/CachyOS-Settings/pull/13).
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 19 Июнь 2023, 15:08:44
как оценить эффективность...
Не имея четкого понимания, что это очень полезно не хочется добавлять сложных настроек
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 19 Июнь 2023, 15:19:04
Так кто механизмы ослеживания существуют, https://docs.kernel.org/admin-guide/blockdev/zram.html#memory-tracking.
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: sfs от 19 Июнь 2023, 16:35:07
Если Вы глубоко в теме (я - нет) - напишите инструкцию по правильному использованию zram здесь или в вики. на мой взгляд - так будет оптимально
Название: Re: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)
Отправлено: krasnyh от 19 Июнь 2023, 16:46:21
Чего-то нового к этой статье (https://notes.valdikss.org.ru/linux-for-old-pc-from-2007/), не могу добавить. Там и про алгоритмы и степень сжатия, и про vm.swappiness...

А по новым фичам, ничего пока неясно. И примеров использования в интернете мало.