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

Автор Тема: Сохраненка в RAM vs ZRAM  (Прочитано 1305 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 32960
  • Репутация: +225/-0
  • Автор темы
    • PuppyRus-A
Сохраненка в RAM vs ZRAM
« : 20 Январь 2022, 11:30:09 »
/dev/zram1 /memory/changes ext4 rw,relatime,discard 0 0
Более общее обсуждение zram здесь

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

Если же сохраненка в RAM , но есть swap in zram - этой проблемы нет. Т.е. пока памяти достаточно - ничего зря не жмется. Как памяти стало мало - пошло в своп (который тоже в ram) со сжатием.
Если и этого мало : ZRAM_WRITEBACK

Мой вывод : сохраненка в ZRAM = зло

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 2959
  • Репутация: +33/-0
    • MagOS linux
Re: Сохраненка в RAM vs ZRAM
« Ответ #1 : 20 Январь 2022, 19:49:48 »
В целом логично, давайте попробую аргументов с другой стороны привести.
1. В вашем варианте данные начинают жаться когда система свопит, то есть когда уже хреново с ресурсами, если changes изначально в zram, данные жмутся постоянно и момент нехватки памяти наступит позже или не наступит вообще если нехватка спровоцирована использованием /tmp или логами.
2. При использовании сохранения в модуль самый беспроблемный способ подключения такого модуля распаковка в changes, в моем варианте эти данные  будут жатыми.
3. Мы точно знаем что в zram-changes у нас только файлы, которые в легаси линуксах вовсе на медленном диске лежат, а остальная часть ОЗУ используется софтом, в случае zram-swap вы не можете влиять на то какие страницы выдавливаются в своп.
4. Можно использовать zram-changes и zram-swap одновременно, но тут уже сложно предположить есть ли смысл, с zswap должно быть нормально, думаю.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4962
  • Репутация: +127/-1
Re: Сохраненка в RAM vs ZRAM
« Ответ #2 : 20 Январь 2022, 20:32:58 »
в случае zram-swap вы не можете влиять на то какие страницы выдавливаются в своп.
vm.swappiness=200 или le9-patch, или mgLRU
Все это (по отдельности) переносит акцент своппинга на анонимные страницы.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 2959
  • Репутация: +33/-0
    • MagOS linux
Re: Сохраненка в RAM vs ZRAM
« Ответ #3 : 20 Январь 2022, 21:10:44 »
Могу ошибаться, но всегда думал что swappiness совсем не про это. Этот параметр, как я помню, определяет что будет делать ядро при нехватке памяти свопить или сбрасывать кэши. Чем выше цифра тем больше свопит.И вроде максимально было 100. Все поменялось? Или память подводит )

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4962
  • Репутация: +127/-1
Re: Сохраненка в RAM vs ZRAM
« Ответ #4 : 20 Январь 2022, 21:19:40 »
Коммент, переводная статья, написана 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 (точные числа не играют роли — важен их вес относительно друг друга).


Вот так даешь ссылки на статьи, но их никто, из людей отвечающих за разработку, не читает. )

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 2959
  • Репутация: +33/-0
    • MagOS linux
Re: Сохраненка в RAM vs ZRAM
« Ответ #5 : 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;
« Последнее редактирование: 21 Январь 2022, 07:40:46 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 32960
  • Репутация: +225/-0
  • Автор темы
    • PuppyRus-A
Re: Сохраненка в RAM vs ZRAM
« Ответ #6 : 21 Январь 2022, 08:54:47 »
если changes изначально в zram, данные жмутся постоянно и момент нехватки памяти наступит позже
Тоже логично, но если такие моменты наступают часто - лучше задуматься об увеличении памяти. Тем более это дешевле и проще, чем менять проц
2. При использовании сохранения в модуль самый беспроблемный способ подключения такого модуля распаковка в changes, в моем варианте эти данные  будут жатыми.
Чем это будет лучше подключения сохраненки с предванительным копированием pfs в ram (copy2ram)

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4962
  • Репутация: +127/-1
Re: Сохраненка в RAM vs ZRAM
« Ответ #7 : 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


Так что, 200 возможно слишком агрессивно, но выше 100 уже считается приемлемым и допустимым.
« Последнее редактирование: 21 Январь 2022, 10:47:06 от krasnyh »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 2959
  • Репутация: +33/-0
    • MagOS linux
Re: Сохраненка в RAM vs ZRAM
« Ответ #8 : 21 Январь 2022, 12:33:16 »
Тоже логично, но если такие моменты наступают часто - лучше задуматься об увеличении памяти. Тем более это дешевле и проще, чем менять проц
Вот тут согласен. Никакие тайные знания хитромудрых параметров не заменят планку на 8G.
 
Чем это будет лучше подключения сохраненки с предванительным копированием pfs в ram (copy2ram)
Тем что не нужно склеивать changes со старой сохраненкой чтоб получить новый модуль. Не смотря на то, что такой вариант есть в uird.toxzm и для оверлея и для aufs по умолчанию модуль с сохраненкой распаковывается в changes.

Так что, 200 возможно слишком агрессивно, но выше 100 уже считается приемлемым и допустимым.
Буду знать. Спасибо.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 4962
  • Репутация: +127/-1
Re: Сохраненка в RAM vs ZRAM
« Ответ #9 : 21 Январь 2022, 16:09:11 »
Вот тут согласен. Никакие тайные знания хитромудрых параметров не заменят планку на 8G.
Но надо понимать, что sfs подразумевает именно домашний комп, где основное использование - браузер. А 8G под один 'браузеринг', это на мой взгляд диковато. :) Там 'за глаза и за уши' 2G хватит, на 64bit системе. )

По возможности память надо ставить по максимуму. Так было и будет
Сейчас для браузера под линуксом 2гб - грустновато. 4 норм. 8 хорошо
« Последнее редактирование: 21 Январь 2022, 17:08:33 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 32960
  • Репутация: +225/-0
  • Автор темы
    • PuppyRus-A
Re: Сохраненка в RAM vs ZRAM
« Ответ #10 : 22 Январь 2022, 08:19:42 »
sfs подразумевает именно домашний комп, где основное использование - браузер.
да
8G под один 'браузеринг', это на мой взгляд диковато
Когда я пишу "свежее железо" имею ввиду не старше 5 лет.
В таких вероятно будет DDR4, которых меньше 4гб не найти . Экономить 1т.руб глупо
Тем более для  винды рекомендуется  >=4. А если винда не нужна - дешевле взять ARM

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