Сайт | Скачать | Видео | Wiki

Автор Тема: zram (RAM-диск со сжатием данных), zswap (уменьшить количество обращений к SWAP)  (Прочитано 34644 раз)

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

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: zswap
« Ответ #15 : 07 Ноябрь 2018, 17:28:30 »
От ядра конечно зависеть может, пробовал только в магос с родным.
swappiness повлияет врядли, при тестах было в районе 50. Не помню точно как uird выставляет.. Но когда ядро уже начало свопить zswap перехватывает, жмет, и складывает в кэш пока память всю не пожрет.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: zswap
« Ответ #16 : 07 Ноябрь 2018, 17:50:20 »
при тестах было в районе 50
Значение swappiness может быть установлено в диапазоне от 0 до 100. Низкие значения предписывают использовать подкачку реже, высокие — чаще. Значение по-умолчанию равно 60. Это значит, что при достижении расхода RAM в 40%, ядро Linux активирует применение swap.

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


upd.
при тестах было в районе 50
Скрин из Magos.
« Последнее редактирование: 19 Октябрь 2019, 00:20:08 от krasnyh »

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: zswap
« Ответ #17 : 07 Ноябрь 2018, 18:04:14 »
Это значит, что при достижении расхода RAM в 40%, ядро Linux активирует применение swap.
Это не так работает. Все значительно хитрее. Ни где не нашел точного описания алгоритма, но чем выше цифра тем агрессивнее свопит. С процентом от свободной РАМ вроде как не связано.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: zswap
« Ответ #18 : 07 Ноябрь 2018, 18:49:04 »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: zswap
« Ответ #19 : 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
Более того совсем не понятно что такое "% свободной памяти", поскольку само понятие свободная память (особенно при разрешенном оверкоммите) это тема для еще нескольких статей.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: zswap
« Ответ #20 : 07 Ноябрь 2018, 21:06:04 »
интересный комментарий по логике/алгоритму работы zswap -
http://www.pivpav.com/post/150#comment-1540230756 (ниже указанной ссылки). + там есть еще познавательные комментарии по Теме.
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн Poisk

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +2/-0
zram: swap - экономия RAM
« Ответ #21 : 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.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: zram: swap - экономия RAM
« Ответ #22 : 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
« Последнее редактирование: 15 Декабрь 2018, 10:57:21 от betcher »

Оффлайн Poisk

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +2/-0
Re: zram: swap - экономия RAM
« Ответ #23 : 15 Декабрь 2018, 16:38:42 »
Если  initrd не принципиален попробуйте uird.
Спасибо за вариант! Мои знания фрагментарны. Могу понимать С-код, несколько Bash. Сейчас пытаюсь понять как можно 1) автозапуском/автоконфигурированием выделить в RAM место при одновременном сжатии, т.е наверное это функция или команда или методика - zram.По приведённой мною выше ссылке, вручную получилось выделить zram. По крайней мере Htop->swp показывает столько сколько просил.  Для меня конфигурирование системы это новое. Т.е пока не знаю где должны быть по канонам управляющие скрипты/параметры.
Initrd и uird так же новое. Может я и попробую их, но куда  это прописывать пока не знаю. По сему и не знаю принципиально ли initrd или нет.
2) Выделить swap в zram и оформить это через самостоятельную сборку pfs, чтобы понимать, как можно собрать систему из модулей-pfs.
« Последнее редактирование: 15 Декабрь 2018, 19:50:28 от Poisk »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: zram: swap - экономия RAM
« Ответ #24 : 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

Оффлайн Poisk

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +2/-0
Re: zram: swap - экономия RAM
« Ответ #25 : 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?
« Последнее редактирование: 15 Декабрь 2018, 19:03:55 от Poisk »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: zram: swap - экономия RAM
« Ответ #26 : 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).

Оффлайн Poisk

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +2/-0
Re: zram: swap - экономия RAM
« Ответ #27 : 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

« Последнее редактирование: 15 Декабрь 2018, 20:37:00 от Poisk »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
  • Автор темы
Re: zram: swap - экономия RAM
« Ответ #28 : 15 Декабрь 2018, 20:33:07 »
Скачать пакет
Если сложно с AUR.
Скопировать скрипт https://aur.archlinux.org/cgit/aur.git/tree/zramctrl?h=zramswap
Сделать исполняемым и пробовать запустить.

Оффлайн Poisk

  • Пользователь
  • **
  • Сообщений: 45
  • Репутация: +2/-0
Re: zram: swap - экономия RAM
« Ответ #29 : 15 Декабрь 2018, 20:54:49 »
...и пробовать запустить.
Становится яснее. Посмотрел приведённый Вами скрипт и пришёл к выводу, что это почти тот же код, только с многочисленными проверками. Но и Bash-код и C-код необходимо где-то размещать для автостарта. По Вашей сслыке в заголовке кода указано:"path: root/zramctrl" Это рекомендуемое место? А имя скрипта имеет значение?