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

Разработки проекта PuppyRus => Разработка PFS и Initrd => Initrd UIRD => Тема начата: sfs от 20 Январь 2022, 11:30:09

Название: Сохраненка в RAM vs ZRAM
Отправлено: sfs от 20 Январь 2022, 11:30:09
/dev/zram1 /memory/changes ext4 rw,relatime,discard 0 0
Более общее обсуждение zram здесь (https://forum.puppyrus.org/index.php?topic=22645.msg167484#msg167484)

Я так понимаю :
Когда сохраненка в ZRAM - она постоянно жмется. Даже если свободной памяти полно. Лишняя нагрузка на проц. Небольшое ускорение чтения (т.к.  нужно меньше прочитать ,Ю т.к. сжато)

Если же сохраненка в RAM , но есть swap in zram - этой проблемы нет. Т.е. пока памяти достаточно - ничего зря не жмется. Как памяти стало мало - пошло в своп (который тоже в ram) со сжатием.
Если и этого мало : ZRAM_WRITEBACK (https://forum.puppyrus.org/index.php?topic=21154.msg154785#msg154785)

Мой вывод : сохраненка в ZRAM = зло
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: betcher от 20 Январь 2022, 19:49:48
В целом логично, давайте попробую аргументов с другой стороны привести.
1. В вашем варианте данные начинают жаться когда система свопит, то есть когда уже хреново с ресурсами, если changes изначально в zram, данные жмутся постоянно и момент нехватки памяти наступит позже или не наступит вообще если нехватка спровоцирована использованием /tmp или логами.
2. При использовании сохранения в модуль самый беспроблемный способ подключения такого модуля распаковка в changes, в моем варианте эти данные  будут жатыми.
3. Мы точно знаем что в zram-changes у нас только файлы, которые в легаси линуксах вовсе на медленном диске лежат, а остальная часть ОЗУ используется софтом, в случае zram-swap вы не можете влиять на то какие страницы выдавливаются в своп.
4. Можно использовать zram-changes и zram-swap одновременно, но тут уже сложно предположить есть ли смысл, с zswap должно быть нормально, думаю.
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: krasnyh от 20 Январь 2022, 20:32:58
в случае zram-swap вы не можете влиять на то какие страницы выдавливаются в своп.
vm.swappiness=200 или le9-patch, или mgLRU
Все это (по отдельности) переносит акцент своппинга на анонимные страницы.
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: betcher от 20 Январь 2022, 21:10:44
Могу ошибаться, но всегда думал что swappiness совсем не про это. Этот параметр, как я помню, определяет что будет делать ядро при нехватке памяти свопить или сбрасывать кэши. Чем выше цифра тем больше свопит.И вроде максимально было 100. Все поменялось? Или память подводит )
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: krasnyh от 20 Январь 2022, 21:19:40
Коммент (https://forum.puppyrus.org/index.php?topic=23672.msg181932#msg181932), переводная статья, написана Chris Down — SRE из Facebook, который, в частности, занимается разработкой новых метрик в ядре, помогающих анализировать нагрузку на оперативную память.
Цитата
Какой должна быть настройка swappiness?

Во-первых, важно понимать, что делает vm.swappiness. Это системная настройка (sysctl), смещающая высвобождение памяти в сторону анонимных страниц или файловых страниц. Для реализации используются два разных атрибута: file_prio (стремление высвобождать файловые страницы) и anon_prio (стремление высвобождать анонимные страницы). vm.swappiness обыгрывает эти атрибуты, становясь значением по умолчанию для anon_prio и вычитаясь из стандартного значения 200 в file_prio, то есть vm.swappiness = 50 равносильно значению anon_prio в 50 и file_prio в 150 (точные числа не играют роли — важен их вес относительно друг друга).


Вот так даешь ссылки на статьи, но их никто, из людей отвечающих за разработку, не читает. )
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: betcher от 21 Январь 2022, 05:36:27
В целом не противоречит тому, что я написал. Смещение приоритета в сторону анонимных страниц как раз и будет означать более агрессивное использование свопа, их же нельзя просто  сбросить в отличии от файлового кэша. А вот на счет 200 - надо почитать.

P.S. Исходники ядра 5.4.0, файл mm/vmscan.c

/*
 * From 0 .. 100.  Higher means more swappy.
 */
int vm_swappiness = 60;

Про 200 там тоже есть, но нигде не сказано что такое значение можно высталять для swappiness

* With swappiness at 100, anonymous and file have the same priority.
* This scanning priority is essentially the inverse of IO cost.
 */
   anon_prio = swappiness;
   file_prio = 200 - anon_prio;
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: sfs от 21 Январь 2022, 08:54:47
если changes изначально в zram, данные жмутся постоянно и момент нехватки памяти наступит позже
Тоже логично, но если такие моменты наступают часто - лучше задуматься об увеличении памяти. Тем более это дешевле и проще, чем менять проц
2. При использовании сохранения в модуль самый беспроблемный способ подключения такого модуля распаковка в changes, в моем варианте эти данные  будут жатыми.
Чем это будет лучше подключения сохраненки с предванительным копированием pfs в ram (copy2ram)
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: krasnyh от 21 Январь 2022, 09:47:16
Исходники ядра 5.4.0
Новая документация уже предлагает использовать значения выше 100, если устройство подкачки на быстром носителе (zram, zswap...):
swappiness это всего лишь уровень баланса между файловыми страницами и анонимными
Да. От swappiness зависит какие страницы будет выталкиваться при нехватке памяти - файловые или анонимные. Высокий swappiness дает эффект, подобный le9 - защищает кэш файлов.

Высокий своппинес идеален тогда, когда система на медленном устройстве (HDD), а устройство подкачки - быстрое (zram). Смотрите последнюю документацию:

For in-memory swap, like zram or zswap, as well as hybrid setups that have swap on faster devices than the filesystem, values beyond 100 can be considered. For example, if the random IO against the swap device is on average 2x faster than IO from the filesystem, swappiness should be 133 (x + 2x = 200, 2x = 133.33).
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/sysctl/vm.rst#swappiness

Цитата
не забудьте выставить swappiness >= 150
hakavlad (https://www.linux.org.ru/forum/general/16497110?cid=16498259)


Так что, 200 возможно слишком агрессивно, но выше 100 уже считается приемлемым и допустимым.
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: betcher от 21 Январь 2022, 12:33:16
Тоже логично, но если такие моменты наступают часто - лучше задуматься об увеличении памяти. Тем более это дешевле и проще, чем менять проц
Вот тут согласен. Никакие тайные знания хитромудрых параметров не заменят планку на 8G.
 
Чем это будет лучше подключения сохраненки с предванительным копированием pfs в ram (copy2ram)
Тем что не нужно склеивать changes со старой сохраненкой чтоб получить новый модуль. Не смотря на то, что такой вариант есть в uird.toxzm и для оверлея и для aufs по умолчанию модуль с сохраненкой распаковывается в changes.

Так что, 200 возможно слишком агрессивно, но выше 100 уже считается приемлемым и допустимым.
Буду знать. Спасибо.
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: krasnyh от 21 Январь 2022, 16:09:11
Вот тут согласен. Никакие тайные знания хитромудрых параметров не заменят планку на 8G.
Но надо понимать, что sfs подразумевает именно домашний комп, где основное использование - браузер. А 8G под один 'браузеринг', это на мой взгляд диковато. :) Там 'за глаза и за уши' 2G хватит, на 64bit системе. )

По возможности память надо ставить по максимуму. Так было и будет
Сейчас для браузера под линуксом 2гб - грустновато. 4 норм. 8 хорошо
Название: Re: Сохраненка в RAM vs ZRAM
Отправлено: sfs от 22 Январь 2022, 08:19:42
sfs подразумевает именно домашний комп, где основное использование - браузер.
да
8G под один 'браузеринг', это на мой взгляд диковато
Когда я пишу "свежее железо" имею ввиду не старше 5 лет.  (https://businessman.ru/normativnyiy-srok-slujbyi-kompyutera.html)
В таких вероятно будет DDR4 (https://ru.wikipedia.org/wiki/DDR4_SDRAM), которых меньше 4гб  (https://www.citilink.ru/catalog/moduli-pamyati--moduli-pamjati-dliya-ddr4/?text=ddr4&sorting=price_asc&f=discount.any%2Crating.any%2C647_28ddr4%2C650_284d1gb&pf=discount.any%2Crating.any%2C647_28ddr4%2C650_284d1gb%2C650_288d1gb&pc=moduli-pamjati-dliya-ddr4)не найти . Экономить 1т.руб глупо
Тем более для  винды рекомендуется  >=4 (https://support.microsoft.com/ru-ru/windows/windows-11-%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BA-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5-86c11283-ea52-4782-9efd-7674389a7ba3). А если винда не нужна - дешевле взять ARM

В итоге в 2022 году:
Свежее железо >=4Gb RAM - PRAR, LFDS
Живое ("мои офисные задачи выполняет") >=2 - LFD10
Мертвое (музей или орудие пыток) 1 Gb - DDR01