LINUX.ORG.RU

Зависла сборка генты

 ,


0

1

Поставил на ночь собираться гном, утром гляжу - зависло. Горит капс, хотя я его не нажимал. Пока не вырубал, может можно как-то его отдуплить ну или хотя бы логи вытянуть? Оперативы 8 Гб, должно хватить

Подключись по ссш и посмотри логи.

anonymous
()

Оперативы 8 Гб, должно хватить

Не должно. В зависимости от числа потоков этого может не хватить на spidermonkey, qtwebengine etc.

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

А чё, как решить можно? Неужели это конец? Девушку научил смотреть за компиляцией, говорит утром уже почти все собралось, чет 50 пакетов оставалось и тут такой крах(

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

Сборка падает, если место в каталоге сборки кончается, а если память+swap кончается, то всё зависает.

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

Лучше выяснить на сборке какого пакета проблема и если ему, скорее всего не хватило памяти, то настроить для него сборку в меньшее число потоков:

https://wiki.gentoo.org/wiki/Knowledge_Base:Overriding_environment_variables_per_package

У меня в 2 потока на 4 Гб spidermonkey собирается минут 15, а в 4 потока из-за использования swap больше 30 минут.

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

Свап для активного обмена и обращений лучше стараться не использовать - на hdd это будет слишком медленно.

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

У меня есть второй комп с 8 Гб, там для большинства пакетов ещё по умолчанию сборка в tmpfs (3 gb) выделено - заметно ускоряет процесс. Те, кому в процессе сборки мало 3 Гб места в каталоге, собираются в каталоге на hdd. Там же собираются пакеты, которые при установке могут ругаться на xatrr - наверное опцию монтирования tmpfs забыл какую-то добавить. Но таких пакетов немного.

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

Примерно так:

$ cat /etc/fstab содержит строчку

tmpfs                   /var/tmp/portage        tmpfs   size=3072M,mode=0777    0 0

$ cat /etc/portage/env/no-tmpfs.conf:

PORTAGE_TMPDIR="/var/no-tmpfs"

$ cat /etc/portage/package.env/packages_no_tmpsfs:

## The list of packages that install to XATTR filesystem 
## or require more than 3 Gb space to compile:
dev-java/icedtea-bin no-tmpfs.conf
dev-lang/luajit no-tmpfs.conf
dev-lang/python no-tmpfs.conf
media-libs/gstreamer no-tmpfs.conf
media-video/mpv no-tmpfs.conf
sys-devel/gcc no-tmpfs.conf
www-client/google-chrome no-tmpfs.conf
x11-libs/wxGTK no-tmpfs.conf
dev-lang/spidermonkey no-tmpfs.conf
dev-lang/rust-bin no-tmpfs.con
grem ★★★★★
()
Ответ на: комментарий от grem

А как число потоков влияет на юзание памяти и скорость сборки

Заметил, кстати, что на виртуалке у меня Гента собиралась только в 2 потока, хотя у меня их 4. В конфиге стоит -j5

Буду рад, если подскажите как забрать все 4. По моей математике сборка в 2 потока занимает в 2 раза больше времени, чем в 4

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

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

i5 3320M 6G HDD, swap-zram. тулкитофоб, вынужденно) собирать qt не позволительная роскошь. ну и у меня крукс вместо генты.

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

Ни о чём не говорит. M2 это разъём. Значение имеет протокол, по которому диск подключен. Через m2 можно подключать как sata так и nvme диски.

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

Насчёт виртуалки не знаю. Возможно, виртуальные ядра (hyper threading) не учитываются, но они и прирост меньший дают по сравнению с физическими ядрами.

У меня обычный hdd, поэтому если сборка лезет в swap, то всё становится медленнее.

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

Я не знаю как эта tmpfs работает, но у меня сложилось впечатление, что она не намертво откусывает оперативку и если она нужна при сборке пакета, то вполне ей делится.

Например, 3 гб из 8 смонтировано в tmpfs. Каталог сборки в процессе занят 500 мб, а при сборке пакета спокойно может и 7 Гб использовать оперативки, не особо залазя в swap.

По крайней мере, вчера пытался собрать один пакет (llvm flang) и, заняв в tmpfs не больше 60 мб, он хотел на 2 потоках до 7 Гб оперативки время от времени. В один поток он больше 5 Гб хочет памяти при сборке.

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

Я не знаю как эта tmpfs работает, но у меня сложилось впечатление, что она не намертво откусывает оперативку

у тебя какталог для сборки монтируется в оперативку, то есть уже -3 гига, и браузер не сможет ей воспользоваться, или все же tmpfs отдает неиспользуемую память?

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

из тяжелых пакетов только вебкит

Мне qtwebengine как таковой даже не нужен, так как он либо опционален (для ksysguard), либо вдруг стал нужен для одного пакета из ::guru overlay, который я не использую то толком. А сейчас и бинарная тестовая репа появилась с ним.

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

Похоже, что отдаёт, htop показывает, что память свободна, пока в смонтированном каталоге ничего нет и при сборке она использовалась.

Но можно проверить на чём-либо.

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

вот что в написано в wiki-crux по этому поводу:

Note you need a decent amount of ram that is dynamically used so this figure won't be used when you are not building a package.

Minimum 500MB for small packages. For example flac, xscreensaver and x264.
Average of 1GB is recommended. For example firefox, wesnoth and mesa3d.
Best performance 2GB or more. For big ports like qt4 and boost.

Note that you don't have to even have that much ram, it just means the bigger ports may go to swap space and diminish the time savings of this for the larger packages, but is still worthwhile to do even with 500MB of ram available to compile in.
RebHat
()
Ответ на: комментарий от PURGEN143

А как число потоков влияет на юзание памяти и скорость сборки

Сборка «в X потоков» обычно запускает одновременно X инстансов компилятора для сборки отдельных юнитов. При условии что у тебя в печке хватает ресурсов для этого, сборка условно ускоряется в X раз (там много нюансов).

Соответственно для этого надо в X раз больше ресурсов (памяти, процессорного времени).

Свап - не дополнительная память. Для работы печки тебе нужно чтобы у тебя память используемых приложений + дисковый кеш используемых файлов помещался в оперативку. При нехватки памяти зависание вполне нормальный случай (гугли по swap threshing). Если тебе не хватает оперативки, то единственный способ это побороть - купить ещё планок.

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

то есть память как таковая не используется, пока каталог сборки пуст, как только идет сборка, оперативка уменьшается пропорционально распакованному в этот каталог.

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

Не совсем у них понятно что имеется вввиду под фразой «эта динамическая память не будет использоваться, когда вы не создаёте пакет»: либо она не используется системой, либо системой сборки и доступна остальной системе в другое время.

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

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

this, проверил

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

Ну -j3 это совсем мало. Можно ли как то разрулить? И так не особо мощный проц, а если ещё 2 потока включать, то ой-ой

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

а что тут рулить, простая математика: в хендбуке советуют иметь 2гб на единицу в -j параметре. Если надо еще быстрее, то надо собирать в тмпфс, а это еще оператива. можно докупить оперативы и собирать быстро, а можно не докупить и собирать медленно.

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

в один поток

ух потанцевал раскрывается

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

Сборка падает, если место в каталоге сборки кончается, а если память+swap кончается, то всё зависает.

Не должен он зависать. Процесс просто завершается по ООМ с соответствующей записью в dmesg. Когда закончилась память emerge должен тебе сообщить об ошибке и её причинах. А если система зависнет по ООМ, ты никаких ошибок не увидишь.

Кроме того, перед сборкой тяжелых пакетов проверяется наличие достаточного места под каталог сборки. Если места мало, сборка не стартанет.

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

То есть, выделение в свопк примеру 12 Гб меня от зависания не спасет и надо ставить -j3?

У меня свопа нет вообще. ОЗУ 8 гигов. Большинство пакетов собираю с j5. При этом на tmpfs под каталог сборки выделяется до 6 гиг ОЗУ. Ничего не зависает.

Для тяжелых пакетов типа gcc можно сборку делать не в ОЗУ а на диске. Либо поробовать снизить makeopts до j1

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

А вообще, можно ли как то глянуть сколько потоков задействуется при компиляции? Htop бы, но у меня только терминал, де нету, тут строчки бегут, выполнить что то нельзя

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

нажми Ctrl+Z, это приостановит выполнение команды, jobs -l покажет список, fg %1 запустит снова, bg %1 запустит в фоне.

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

контрол - альт - функциональная клавиша - переключает на другой виртуальный терминал. это многозадачность!11

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

уважение! спасибо за подсказку.
кстати, можно еще tmux, screen юзать для многозадачности в пределах одного vt.

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

dtach -c /tmp/$name commandCtrl-\ отключаемся

dtach -a /tmp/$name – подключаемся

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

Под каталог сборки проверяется, а объем памяти для линковки нет.

Я и не вижу ошибок. Просто система перестаёт отвечать.

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

Я и не вижу ошибок. Просто система перестаёт отвечать

А почему я вижу эти ошибки? И могу их спокойно прочесть, поправить и перезапустить сборку?

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