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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
получили обычный медленный своп на диске
Могу дописать - "не рекомендуется, т.к. после заполнения zram - swap окажется на медленном носителе"
backing_dev
На моем 413 ядре это работает? А на каких еще?
На данный момент он поддерживает только раздел.
Неудобно. Улучшений не произошло?

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
"не рекомендуется, т.к. после заполнения zram - swap окажется на медленном носителе"
Там больше недостатков, ведь весь заполненный объем zram не будет освобождаться до перезагрузки компа. Мало хорошего, когда в памяти висит мертвым грузом приличный нерабочий кусок данных.

Часто, в контексте ситуации со zram и свопом на диске, упоминают словосочетание "инверсия LRU". Что такое, это гуглить, но сложно в понимании. :)
« Последнее редактирование: 09 Сентябрь 2021, 12:00:37 от krasnyh »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
На моем 413 ядре это работает? А на каких еще?
Но если нет backing_dev в /sys/block/zram0/, а там его нет, значит без поддержки.
Для примера, скрин из IceArch.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Там больше недостатков
Ну так я и напишу "не рекомендуется"
если нет backing_dev в /sys/block/zram0/, а там его нет
в моем 513 нет. А чем backing_dev лучше zswap?

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Я всего лишь предложил альтернативу для zram+диск в виде zswap и backing_dev. Причем backing_dev упомянут в контексте, если уж очень хочется именно zram.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
в uird по умолчанию включен zswap
Посмотрел конфиги ядра арча 
В арче тоже включен по дефолту
В магее выкл. В портеус и пупи zswap вообще нет в ядре

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

Кстати у нас в вики вообще не было про зрам. Добавил ссылку. Может там изложить подробнее? Есть идеи?
« Последнее редактирование: 16 Январь 2022, 10:01:14 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
В 6.2 ядре появилась интересная фича recompression
+рекомпрессия
+-------------
+
+С помощью 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 (бесплатная версия)

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Т.е. вот такой скрипт надо в автостарт
Код
 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 
Интересно, но как оценить эффективность...

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Т.е. вот такой скрипт надо в автостарт
В 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\""
Обсуждение.
« Последнее редактирование: 19 Июнь 2023, 14:41:03 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
как оценить эффективность...
Не имея четкого понимания, что это очень полезно не хочется добавлять сложных настроек

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Если Вы глубоко в теме (я - нет) - напишите инструкцию по правильному использованию zram здесь или в вики. на мой взгляд - так будет оптимально

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Чего-то нового к этой статье, не могу добавить. Там и про алгоритмы и степень сжатия, и про vm.swappiness...

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