Мультипоточная компиляция приводит к зависанию компьютера

jim945
Сколько под нее выделяется поумолчанию? И где это прописано?
man mount
Mount options for tmpfs
size=nbytes
Override default maximum size of the filesystem. The size is given in bytes, and rounded up
to entire pages. The default is half of the memory. The size parameter also accepts a suf‐
fix % to limit this tmpfs instance to that percentage of your physical RAM: the default, when
neither size nor nr_blocks is specified, is size=50%
...
Короче, по умолчанию выделяется 50% оперативной памяти.
А можно сделать и 100%, и даже больше, если подключить свап – тогда малоиспользуемые блоки tmpfs будут при дефиците памяти вытесняться на диск.

P.S.
Чуть более подробно про tmpfs написано в документации к ядру:
http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tree/Documentation/filesystems/tmpfs.txt
size: The limit of allocated bytes for this tmpfs instance. The default is half of your physical RAM without swap. If you oversize your tmpfs instances the machine will deadlock since the OOM handler will not be able to free that memory.
То есть, тут прямо сказано, что переполнение памяти блоками tmpfs может "подвесить" машину, что и наблюдается у автора темы. Подключение свапа снимает эту проблему.
а не расточительство это в /tmp юзать tmpfs?
у меня он на zram, при компиляции примерно в 2 раза меньше памяти жрет так как текст и промежуточные данные хорошо сжимаются.
может кому пригодится.
/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

[Service]
Type=oneshot
RemainAfterExit=true

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

ExecStart=/usr/bin/zramctl zram${DEV} ${SIZE} lz4 2
ExecStart=/usr/bin/mkfs.ext4 -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
systemctl enable zram-tmp.service
systemctl mask tmp.mount
reboot
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
у меня он на zram, при компиляции примерно в 2 раза меньше памяти жрет так как текст и промежуточные данные хорошо сжимаются.
Надо попробовать, но думаю будет потеря в скорости компиляции.
nafanja
а не расточительство это в /tmp юзать tmpfs?
Нет.
Смотря сколько оперативы. Генту на комп с менее чем 6гб я бы сейчас не стал ставить)))
Lupus pilum mutat, non mentem.
nafanja
а не расточительство это в /tmp юзать tmpfs?
При наличии свапа – не расточительство, потому что "расточается" место не в памяти, а на диске, объём которого на два порядка больше.
zram – интересная штука, если её уже допилили, но принципиально ограничена всё тем же физическим объёмом доступной оперативной памяти, только помноженным на сжимаемость данных. Объём же свапа произволен.

Поэтому, tmpfs+swap – решение универсальное, а zram-tmp – оптимально в некотором диапазоне условий, когда места в памяти уже не хватает, но всё ещё можно утрамбовать посильнее.
jim945
Надо попробовать, но думаю будет потеря в скорости компиляции.
теоретически да, а практически скорость работы компрессора lz4 настолько велика что разница компиляции ядра может составить несколько секунд дополнительно, а это практически ничего.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Natrio, так zram тоже может в свап уходить, только в два раза быстрее производится чтение запись (данные то сжаты), да и реальной памяти в 2 раза меньше хавает.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja, понятно. Тогда разница только в сжатии данных в памяти, остальное остаётся в силе.
На счёт двух раз – тут всё зависит, как я уже сказал, от сжимаемости данных. Некоторые жмутся на порядок, некоторые в два раза, некоторые совсем не жмутся.
Natrio
На счёт двух раз – тут всё зависит, как я уже сказал, от сжимаемости данных. Некоторые жмутся на порядок, некоторые в два раза, некоторые совсем не жмутся.
все правильно, но мы ж говорим о /tmp, а там в основном хорошо сжимаемые данные. а если говорить о компиляции то там вообще много текста, а он сжимается на много больше чем в 2 раза.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
То есть мне попробовать увеличить tmpfs?
antlord
То есть мне попробовать увеличить tmpfs?
Перенеси /tmp на диск. Включи подкачку.
Наблюдай за расходом оперативы при компиляции.
Lupus pilum mutat, non mentem.
 
Зарегистрироваться или войдите чтобы оставить сообщение.