LINUX.ORG.RU

Zram и сборка в памяти.

 , , ,


0

0

С использованием zram в качестве свопа и темой zram vs. zswap уже более-менее все разобрались и обсудили. А вот возникает тогда другой вопрос: в source-based дистрибутивах, например в Gentoo, давно уже рекомендуют сборку в tmpfs для усокрения процесса, снижения нагрузки на hdd, снижения износа ssd и т.п.

Однако, все это можно запихнуть и в zram, несмотря на некоторый оверхед все еще будет жаться и требовать меньше памяти (исходники неплохо так жмутся). Возникает вопрос, какую ФС лучше всего использовать? Чтоб меньше оверхеда было, например. Сам пользуюсь ext2+zstd сжатием. Вдруг кто еще пользуется таким подходом?


А зачем? В основном /var/tmp/portage не забивается более чем на 300мб, если не считать браузеры где необходимо от 6гб. В остальных случаях хватит простого tmpfs.

zram-init уже имеет в конфиге монтирование в /var/tmp. У меня он так работает, но разницы особой не заметил.

Artamudo ★★★ ()
Последнее исправление: Artamudo (всего исправлений: 1)

Когда-то давно (и неправда) баловался, zstd в ядре не было. Очень хорош был f2fs+lz4, так как у lz4 почти одинаково быстрое сжатие и распаковка. ext4 с журналом(!) был быстрее ext2 (ext4 без журнала), jfs и прочих reiserfs.

В общем, сделал вывод, что ssd и файловый кеш линукса не сильно медленнее (разница во времени компиляции где-то 2-3%). И работает.

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

А зачем?

Браузеры, либреофис, хаскель (ghc), параллельная сборка (-j 2).

zram-init уже имеет в конфиге монтирование в /var/tmp.

Да, там предложен ext2, а несколькими дисками ниже... btrfs, что вообще странно.

У меня он так работает, но разницы особой не заметил.

Так и у меня работает, вопрос, а нет ли простора для улучшайзинга.

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

Не. Там дело в другом.

Я как-то собирал пакеты в озу, а потом забыл отмонтировать. И тут спидерманки обновилась. Точнее попыталась. Выжрала всю озу и система колом встала.

Наличие/отсутствие свопа роли не играет.

utanho ★★ ()
mount |grep portage
tmpfs on /var/tmp/portage type tmpfs (rw,noatime,size=18874368k,mode=775,uid=250,gid=250)
grep fail-clean /etc/portage/make.conf
FEATURES="${FEATURES} fail-clean"
mkdir /sys/fs/cgroup/emerge
echo 14G > /sys/fs/cgroup/emerge/memory.high
echo $$ > /sys/fs/cgroup/emerge/cgroup.procs
emerge 
zram swap

c 8GB рам тоже можно комфортно собрать тяжелые пакеты в tmpfs, только компилировать придется без lto скорее всего

nanosecond ()
Последнее исправление: nanosecond (всего исправлений: 2)
Ответ на: комментарий от tis

Кому что передать? Как ext4 создать без журнала? /sbin/mkfs.ext4 -O ^has_journal device-file

Можно ещё с помощью tune2fs выключить журнал на уже созданной ФС.

i-rinat ★★★★★ ()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от Chord

Спайдерманки.ebuild проверяет наличие места на 6.4 гб в каталоге для сборки и даже не будет начинаться собираться, если его меньше. RAM в 6 Гб для сборки в 3 потока да, хватит, но это для текущих модулей,а не всего каталога.

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

Для панды, офиса и спидерманки надо 16гб.

8 должно хватить, если если своп на zram и zram disksize в три раза больше MemTotal и alg=zstd.

Вот пример: 2 гига памяти, и 6 улетело в своп. То есть zstd позволяет сжатие в несколько раз при сборке. Так что можно делать своп даже в три раза больше оперативы.

Скриншот: https://imgur.com/a/vY9qrWz

Это сборка ядра 514 в 128 потоков, емнип, на двух гигах оперативы.

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

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

Я не про оперативку для сборки, а про место для хранения проекта во время сборки - перед сборкой он проверит наличие свободных 6.4 Гб. Естественно, что если проект собирается в tmpsfs, то в tmpfs должно быть больше эти 6.4 Гб помимо оперативки под текущие операции компилятора.

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

в tmpfs должно быть больше эти 6.4 Гб

Можно размер какой угодно указать при монтировании.

$ df -h
Файловая система       Размер Использовано  Дост Использовано% Cмонтировано в
udev                     4,8G            0  4,8G            0% /dev
tmpfs                    983M         1,5M  981M            1% /run
/dev/mapper/sda4_crypt   217G         187G   20G           91% /
tmpfs                    4,8G         261M  4,6G            6% /dev/shm
tmpfs                    5,0M         4,0K  5,0M            1% /run/lock
tmpfs                    4,8G         2,7M  4,8G            1% /tmp
tmpfs                    100G          13M  100G            1% /tmpfs
hakavlad ★★ ()