[Решено] Можно ли заменить tmpfs на zram?

давно пользуюсь таким юнитом
/etc/systemd/system/zram-tmp.service
[Unit]
Description=Mount /tmp as zram. Mask tmp.mount if you use this
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=systemd-modules-load.service

[Service]
Type=oneshot
RemainAfterExit=true

Environment='DEV=0' 'SIZE=4G'

ExecStart=/usr/bin/zramctl zram${DEV} --size ${SIZE} --algorithm lz4 --streams 2

ExecStart=/usr/bin/mkfs.ext4 -L tmp -m 0 -O ^huge_file,sparse_super,extent,^uninit_bg,dir_nlink,extra_isize,^has_journal -E discard /dev/zram${DEV}
ExecStart=/usr/bin/tune2fs -c 0 -i 0 -m 0 /dev/zram${DEV}
ExecStart=/usr/bin/mount -o discard /dev/zram${DEV} /tmp

[Install]
WantedBy=local-fs-pre.target
кроме /tmp ничего другого не нужно переводить в zram, нет смысла!

P.S. конечно же нужно модуль загрузить
anoobis
echo "zram" > /etc/modules-load.d/zram.conf
echo "options zram num_devices=1" > /etc/modprobe.d/zram.conf
отключить монтирование /tmp
binaryshadow
systemctl mask tmp.mount
и включить юнит systemctl enable zram-tmp.service
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja, спасибо, как раз то, что нужно) Проверил - пока работает нормально.

Думаю, решено. Всем спасибо.

Файл почему-то невозможно ни создать ни скопировать в \tmp.
# dd if=/dev/zero of=/tmp/swapfile bs=1M count=512
dd: ошибка записи '/tmp/swapfile': На устройстве не осталось свободного места
243+0 записей получено
242+0 записей отправлено
254312448 байт (254 MB, 243 MiB) скопирован, 0,965497 s, 263 MB/s

Хотя диск почти пустой, файл состоит из нулей, т.е. его можно сжать до заголовка в несколько байт...
# zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4           256M  244K  8,6K  144K       2 /tmp

после увеличения диска, получилось:
$ zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4           1,3G  804K 11,5K   72K       2 /tmp

# fallocate -l 1G /tmp/swap
# zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4           1,3G  820K 12,6K  116K       2 /tmp

# chmod 600 /tmp/swap && swapon -p 11 /tmp/swap && swapon -s
Имя файла				Тип		Размер	Исп-но	Приоритет
/swp                                   	file    	1048572	0	-1
/tmp/swap                              	file    	1048572	0	11

# zramctl
NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lz4           1,3G  852K 15,4K  148K       2 /tmp

Но сжатие значит происходит не "на лету", а когда файл уже на диске...
Попробую и я высказать свое мнение на этот счет............. оно не совпадет с большинством, но это я испытал на свой шкуре и это лично мое мнение, основанное на специфичных для меня операций .... в других ситуациях, это высказывание, конечно, будет неверным.
Сколько ни ставил этих разных приблуд ..... через 1-2 месяца удалял. В нормальной ситуации можно обойтись и без этого, а в сложных ситуациях (у меня всего 3Г оперативы) это меня не спасает, а вот swap раздел в этих случаях всегда спасал от мертвых зависаний .... И понял, лучше иметь побольше оперативы и swap на всякий случай.
UPD..... под сложными ситуациями у меня считается открытие карт объемом от 15М и больше ...... на открытие уходит несколько минут (3-5), в это время все висит, ничего невозможно сделать, правда после загрузки работает нормально.... swap раздел (около 5Г) забивается почти полностью ....
Частенько приходится использовать Alt+SysRq+f (вызыв oom_kill), чтобы убить слишком жрущий процесс и избежать зависания.....
Ошибки не исчезают с опытом - они просто умнеют
anoobis, я что то не понял, зачем тебе свап в /tmp ???
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
anoobis, я что то не понял, зачем тебе свап в /tmp ???
да я посмотреть хочу на этот zswap, как он работает, а в /tmp - не в /tmp есть разница?
когда у меня было 2Г оперативы тоже бредил этим сжатым свапом в памяти. чисто теоретически вроде все отлично должно было быть, проведя кучу разных экспериментов пришел к выводу что память нужно отдавать всю для ПО, а свап делать на диск, но свап нужно сжимать, так как из за этого увеличивается скорость обмена с диском.
чтобы сжимать свап нужно в параметры загрузки ядра прописать
zswap.enabled=1
а вот /tmp на zram это хорошо. ничего не теряя получаем экономию памяти которая пойдет для ПО.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
а, так zswap сжимает своп на диске, я их спутал просто, имелся ввиду swap в zram. Не знаю ещё насколько он полезен, надо за ним понаблюдать... )
полезность swap в zram где то 55% (цифра субъективная). но это с учетом того что еще и дисковый свап используется (без него на очень много меньше)
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
а вот /tmp на zram это хорошо. ничего не теряя получаем экономию памяти которая пойдет для ПО.
nafanja, если не трудно, опиши поподробней, что нужно для этого ........ у меня все твои топики на этот счет хранятся .... а вот с tmp вроде бы я еще не пробовал .... Можно не сразу, попозже, когда будет время ..........
Ошибки не исчезают с опытом - они просто умнеют
vasek, а что там объяснять.
что нужно сделать описано выше. а посмотреть эффективность можешь сам...
zramctl
на халяву и 10р деньги )))
чем больше занят /tmp тем больше халявы!
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
 
Зарегистрироваться или войдите чтобы оставить сообщение.