LINUX.ORG.RU

Поясните за zram-generator

 , ,


1

1

Вот был systemd-swap. Поставил, запустил и все работает. Не нравятся дефолтные конфиги - переназначил. Нет, надо было нагородить всякой хрени, которая даже дефолтного конфига не содержит, надо прописывать самому.

  1. Какие пункты надо прописать в конфиге? Интересуют только обязательные, без которых ничего работать не будет. C тонкой настройкой потом разберусь сам, если понадобится.

  2. [zram0], [zram1]... [zram100500] Что это? Сколько их должно быть? Что в них прописывать?

  3. systemd-zram-setup@zramN.service Что за @? Что ставить вместо N? Как вообще его запускать?

★★★
λ sudo systemctl cat systemd-zram-setup@.service
# /etc/systemd/system/systemd-zram-setup@.service
# SPDX-License-Identifier: MIT
# This file is part of the zram-generator project
# https://github.com/systemd/zram-generator

[Unit]
Description=Create swap on /dev/%i
Documentation=man:zram-generator(8) man:zram-generator.conf(5)
After=dev-%i.device
DefaultDependencies=false

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/lib/systemd/system-generators/zram-generator --setup-device '%i'
ExecStop=/usr/lib/systemd/system-generators/zram-generator --reset-device '%i'
tz4678 ★★
()
Ответ на: комментарий от tz4678
systemctl start systemd-zram-setup@shit

Создаст виртуальное устройство /dev/shit

tz4678 ★★
()

После @ идет какое-то имя, которое можно в сервисе получить с помощью %i. По стандарту назови @zram0. Нужно только одно, но никто не запрещает создать хоть 100

tz4678 ★★
()

Очередные косяки сисямбды, или ставь нормальный инит, или страдай. А тэг арч тут при том,что?..

Dog ★★★
()
Ответ на: комментарий от tz4678

Теперь хоть что-то понятно стало. Но

systemctl start systemd-zram-setup@shit
Job for systemd-zram-setup@shit.service failed because the control process exited with error code.
See "systemctl status systemd-zram-setup@shit.service" and "journalctl -xeu systemd-zram-setup@shit.service" for details.
qtm ★★★
() автор топика

Поставь федору. Там Zram по умолчанию идёт. Я долго не понимал откуда у меня своп берётся и как его выпилить.

Red_Rain
()
Ответ на: комментарий от Dog

Нормальные иниты - это те, которые делают все то же самое, только через написание баш-портянок? Нет, спасибо. Да и вопрос не про инит, если чо.

А тег Арч тут при том, что у меня Арч.

qtm ★★★
() автор топика
Ответ на: комментарий от qtm

я не помню что делал уже, но у меня zram. там, возможно, еще конфиг нужно поставить дефолтный:

yay -S zram-generator-defaults
tz4678 ★★
()
Ответ на: комментарий от qtm

Не нужен этот арчь. Это как gentoo и debian. Чтобы gentoo заработал надо воровать скрипты с debian. И по итогу получится gentoo чуть тяжелее чем debian.

Red_Rain
()
Ответ на: комментарий от Red_Rain

А еще в федоре по умолчанию идет граб, который мне не нужон. В арче приходится запиливать своп, а в федоре придется выпиливать граб. Шило на мыло)

qtm ★★★
() автор топика
Ответ на: комментарий от qtm
$ cat /etc/systemd/zram-generator.conf                                         
[zram0]
compression-algorithm = zstd
zram-fraction = 0.5
max-zram-size = 8192
tz4678 ★★
()
Ответ на: комментарий от tz4678

Заработало. Итак, если кто-то наткнется на эту тему, то надо создать файл /etc/systemd/zram-generator.conf или любой другой, который читает zram-generator и в него прописать

[zram0]
zram-fraction = 1.0
max-zram-size = 8192

Числа можно поменять на свои, опять же согласно документации.

Но один вопрос все-же остался. Systemd-swap создавал четыре устройства, как я понимаю, согласно количеству ядер проца. А тут хватит одного?

qtm ★★★
() автор топика
Ответ на: комментарий от tz4678

А ну так UEFI не нужен. Он по прежнему багнутый. У всех кто имеет глюки, говоришь чтоб переводили с UEFI на легаси и глюки уходят. Не зависимо от железа и дистрибутива.

Red_Rain
()
Ответ на: комментарий от qtm

Важнее то, что они не пытаются заменить пол-системы на говно от корпораций. Да и баш-портянки писать не сложнее, чем их юниты.

Dog ★★★
()
Ответ на: комментарий от qtm

ты неправильно fraction установил. 0.5 означает, что половина памяти максимум будет использоваться под zram. С 1 у тебя комп намертво повиснет, когда в своп уйдет

tz4678 ★★
()
Ответ на: комментарий от Dog

Пол-ядра линукса тоже написана корпорациями. Ты уже перешел на Hurd?

баш-портянки писать не сложнее, чем их юниты

Разница в том, что в 99% случаев юниты я не пишу вообще.

qtm ★★★
() автор топика
Ответ на: комментарий от tz4678

Да не нужен этот своп, есть замечательная опция vm.overcommit_memory = 1 Ядро будет выделять столько виртуальной памяти, пока не закончится физическая. Своп на диск ну может.. . Если там студии какие то запускаются с огромными проектами. А так не нужен.

Red_Rain
()
Ответ на: комментарий от qtm

Но один вопрос все-же остался. Systemd-swap создавал четыре устройства, как я понимаю, согласно количеству ядер проца. А тут хватит одного?

Нет, видимо предполагается, что ты сам создашь нужное количество этих устройств.

intelfx ★★★★★
()
Ответ на: комментарий от Red_Rain

Да не нужен этот своп

Если там студии какие то запускаются с огромными проектами. А так не нужен.

О, ещё один считает, что своп — это «дополнительная оперативная память».

Иди читай и просвещайся: https://chrisdown.name/2018/01/02/in-defence-of-swap.html

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Red_Rain

Да не нужен этот своп

диагноз ясен, можешь не продолжать

tz4678 ★★
()
Ответ на: комментарий от qtm

Linux-libre. Hurd очень жду, конечно.

Так почти у всего софта, к которому прилагается юнит, прилагается и стартовый скрипт «старого» образца, вообще-то, я их тоже практически не пишу)

Dog ★★★
()
Ответ на: комментарий от hakavlad

Тем, что «системный менеджер» написан в корпорации. Которая, на минутку, уже давно дочерка IBM. Причины создания системд не технические, а следствие желания некоторых нехороших личностей выкинуть GNU из CNU/linux.

Dog ★★★
()
Ответ на: комментарий от tz4678

Это значения из zram-generator-defaults. У себя я поменял на

[zram0]
zram-fraction = 0.2
max-zram-size = 2048
qtm ★★★
() автор топика
Ответ на: комментарий от hakavlad

Я еще не сталкивался с программой, которой в инит-скрипте нужно было что-то сложнее 3-5 строчек писать.

Dog ★★★
()
Ответ на: комментарий от tz4678

0.5 означает, что

максимальный размер несжатых данных, который улетит в своп, будет не более 1/2 MemTotal, что с учетом обычной степени сжатия займет 15-25% памяти.

С 1 у тебя комп намертво повиснет

У меня factor=4, ничего не виснет:

https://www.youtube.com/watch?v=1uhcZwuvXLI

hakavlad ★★★
()
Ответ на: комментарий от qtm

То есть надо создавать 4?

Зачем 4? Одного должно хватить, тем более что устройства многопоточны из коробки.

hakavlad ★★★
()
Ответ на: комментарий от qtm

Никаких сервисов включать-запускать не нужно, достаточно установить лишь сам пакет с zram-generator.

По умолчанию никаких zram ус-в не создается, чтобы создавалось, нужно создать хотябы минимальный конфиг:

/etc/systemd/zram-generator.conf

[zram0] zram-fraction = 0.5

Подробнее тут https://github.com/systemd/zram-generator

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

anonymous
()
Ответ на: комментарий от hakavlad

Сейчас тебе расскажут, что рестарт при падении не нужен, правильные программы™ не падают, а даже если падают, то правильные админы™ должны пасти машину 24/7 с субмиллисекундным временем реакции и рестартовать всё вручную (после изучения и исправления проблем падения, разумеется в рамках субмиллисекундного времени реакции).

intelfx ★★★★★
()
Ответ на: комментарий от Dog

Тем, что «системный менеджер» написан в корпорации. Которая, на минутку, уже давно дочерка IBM. Причины создания системд не технические

Причины создания системд не технические

А ты это просто так вякнул или как-то обосновать можешь?

intelfx ★★★★★
()
Ответ на: комментарий от hakavlad

Хз что это, не пользуюсь таким. Но ты бы хоть на сам юнит ссылку дал, мне его еще искать там у тебя?

Dog ★★★
()
Ответ на: комментарий от intelfx

Ты головой подумай. Серьезно думаешь, что коммерческая корпорация будет что-то делать только для удобства людей, или из любви к искусству? Сисямбда пытается заменить половину системного gnu-софта, вот в чем проблема. Такими темпами может вырасти поколение, которое вообще про GNU, СПО и борьбу с корпорациями не в курсе.

Dog ★★★
()
Ответ на: комментарий от anonymous

Никаких сервисов включать-запускать не нужно, достаточно установить лишь сам пакет с zram-generator.

У меня не Дебиан, который любит все включать при установке, неважно нужно тебе это или нет. Арч сам ничего не включит.

А вот конфиг - да, придется создавать. По дефолту там пусто.

qtm ★★★
() автор топика
Ответ на: комментарий от hakavlad
if [ "$ARTICLE_DATE" -lt "$CURRENT_DATE" ]; then
    echo "Давно устарела ваша статья!"
    exit 1
fi

:)

Siborgium ★★★★★
()
Ответ на: комментарий от hakavlad

Defines the scaling factor of the zram device’s size with relation to the total usable RAM.

у тебя все работает лишь потому, что своп на машинах с 16 и более гигами рамы редко забивается более чем на пару сотен мегабайт, да и то при компиляции всякого говна,а так конфиг неправильный

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от Dog

Серьезно думаешь, что коммерческая корпорация будет что-то делать только для удобства людей

Нет, но удобство — приятный побочный эффект.

Сисямбда пытается заменить половину системного gnu-софта

Этот софт святой? Системд под гпл, если что.

Такими темпами может вырасти поколение, которое вообще про GNU, СПО

Нет.

борьбу с корпорациями

Бороться надо с вредными корпорациями.

fernandos ★★★
()

zram можно и вручную включить:

modprobe zram 
zramctl -s 32G -a lz4 /dev/zram0 
mkswap /dev/zram0 
swapon /dev/zram0 -p 10 

# настройка автоматического создания zram swap при старте системы 
echo "zram" > /etc/modules-load.d/zram.conf 
echo 'KERNEL=="zram0", ATTR{disksize}="32G" RUN="/sbin/mkswap /dev/zram0", TAG+="systemd"' > /etc/udev/rules.d/99-zram.rules 
echo "/dev/zram0 none swap defaults,pri=10 0 0" >> /etc/fstab
tz4678 ★★
()
Ответ на: комментарий от tz4678

я эту заметку давно писал и не помню проверял ли или нет

tz4678 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.