РЕШЕНО: Сборка и память
Модератор: /dev/random
РЕШЕНО: Сборка и память
Доброго времени суток!
Решил собрать chromium.
Исходные данные:
ОЗУ всего - 16 гигабайт
ОЗУ занято (на момент начала сборки, т.е. ещё ДО сборки) ~ 6 гигабайт
ccache активен
SWAP файл - 8 гигабайт
Требование сборки:
ОЗУ - 3 гигабайт
Место на диске - 7 гигабайт
На момент сборки все условия выполняются. Ничего лишнего не работает. Только сборка в консоли и контроль с помощью коньков.
Сборка идёт в 8 потоков (по количеству ядер)
В какой то момент потребление памяти возрастает до 90+ процентов. Затем система начинает буквально "жрать" swap. И всё это заканчивается аварийно.
Я что-то не понимаю, или сейчас как-то по другому считаются требования для сборки?
Если да, то как быть?
Решил собрать chromium.
Исходные данные:
ОЗУ всего - 16 гигабайт
ОЗУ занято (на момент начала сборки, т.е. ещё ДО сборки) ~ 6 гигабайт
ccache активен
SWAP файл - 8 гигабайт
Требование сборки:
ОЗУ - 3 гигабайт
Место на диске - 7 гигабайт
На момент сборки все условия выполняются. Ничего лишнего не работает. Только сборка в консоли и контроль с помощью коньков.
Сборка идёт в 8 потоков (по количеству ядер)
В какой то момент потребление памяти возрастает до 90+ процентов. Затем система начинает буквально "жрать" swap. И всё это заканчивается аварийно.
Я что-то не понимаю, или сейчас как-то по другому считаются требования для сборки?
Если да, то как быть?
Последний раз редактировалось devilr 20.10.2020 01:09, всего редактировалось 1 раз.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Сборка и память
Пальцем в небо: попробуйте -fuse-ld=bfd.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Сборка и память
Уменьшить количество потоков, тогда и памяти должно потребляться по меньше.
Это если в данный момент собирается только chromium, иначе уменьшить количество одновременно собираемых пакетов.
EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=4"
Shell
# MAKEOPTS="-j7 -l6" emerge www-client/chromium
EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=4"
Re: Сборка и память
Это как раз понятно. Получается, что требования по сборке - это сборка в 1 поток? Это где-то написано?
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Сборка и память
Не факт, что уменьшение числа потоков поможет. Жрёт память обычно линковка, а жирный бинарь там линкуется всего один.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Сборка и память
Да ни где это не написано, просто у вас памяти уже 6 гб забито, а на 8 ядер 10 гб маловато будет. У меня бывало на 4 ядрах 6 гиг мало было. Критические программы это chromium, qtwebengine.
Просто с параметрами MAKEOPTS="-j7 -l6" должно обрабатываться 6-7 потоков, может этого хватит. Если не хватит то эти цифры можно уменьшить.
Спасибо сказали:
Re: Сборка и память
Но эти цифры ведь не просто так даются. Иначе получается, что надо эмпирически подбирать параметры сборки под каждый тяжёлый пакет. 100500 раз пересобирая...
Re: Сборка и память
Конечно это происходит при линковке, но в один поток все равно это не происходит, одновременно пытается линковаться несколько файлов, вот и идет кеширование.Bizdelnick писал: ↑19.10.2020 01:03Жрёт память обычно линковка, а жирный бинарь там линкуется всего один.
Я уже не раз натыкался на эти грабли, и уменьшение потоков обычно помогало.
Добавлено (01:20):
У вас же distcc, а значит второй раз будет на много быстрее идти этот процесс.
Спасибо сказали:
Re: Сборка и память
Угу. А после 10 попыток всё будет быстрее собираться в 1024 раз. Шутка.
Всё таки непонятно, как это считается и для чего вообще указывается?
Re: Сборка и память
Да кто же его для чего. Обычно указываются минимальные требования для сборки, это не значит что они оптимальные.
Спасибо сказали:
Re: Сборка и память
Это да. Тогда, при выполнении этих условий, всё должно выполняться/собираться. А они у меня вроде как выполняются. Нет?
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Сборка и память
devilr
А вот эти требования:
Есть какой-нибудь тарбол с файлами README и INSTALL?
Потому что на официальном сайте написано так:
А вот эти требования:
они написаны где?
Есть какой-нибудь тарбол с файлами README и INSTALL?
Потому что на официальном сайте написано так:
В любом случае, я очень сильно сомневаюсь, что кто-то пробовал собрать chromium на 3Гб ОЗУ.https://chromium.googlesource.com/chromium/src/+/master/docs/linux/build_instructions.md#System-requirements писал(а): System requirements
A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly recommended.
At least 100GB of free disk space.
You must have Git and Python v2 installed already.
Спасибо сказали:
Re: Сборка и память
В консоли. При начале сборки пакета. Если не будет соответствия - сборка не начнётся.
>>> Verifying ebuild manifests
>>> Running pre-merge checks for www-client/chromium-87.0.4280.20
* Checking for at least 3 GiB RAM ... [ ok ]
* Checking for at least 7 GiB disk space at "/var/tmp/portage/www-client/chromium-87.0.4280.20/temp" ... [ ok ]
>>> Emerging (1 of 1) www-client/chromium-87.0.4280.20::gentoo
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Сборка и память
Если это выставлено где-то в файле ebild (или как его там правильно),
так это надо спросить у автора ebild'а, почему такие цифры.
Понятно. В таком случае это критический минимум, при котором вообще хоть что-то начнется.
Возможно, там есть какой-то вариант сборки (урезанный), для которого этого будет достаточно.
Но это совсем не означает, что обычная сборка пройдет нормально на этих объемах.
Так или иначе, на оф. сайте цифры несколько другие.
Re: Сборка и память
Я не говорил за "нормальность" или "не нормальность" сборки.Я говорил за просто сборку.Hephaestus писал: ↑19.10.2020 10:45Но это совсем не означает, что обычная сборка пройдет нормально на этих объемах.
С подобными требованиями есть несколько пакетов. И, вы либо выполняете эти требования, либо просто не можете собрать. Допустим, для некоторых пакетов я вынужден собирать не в ОЗУ, а на диске - банально нет столько памяти. И, до сих пор, всё было нормально.
До вчерашнего дня...
Re: Сборка и память
Хмм, зная потребления ресурсов этого монстра, зачем его собирать на минимальном железе!?devilr писал(а): ↑19.10.2020 10:59Я не говорил за "нормальность" или "не нормальность" сборки.Я говорил за просто сборку.
С подобными требованиями есть несколько пакетов. И, вы либо выполняете эти требования, либо просто не можете собрать. Допустим, для некоторых пакетов я вынужден собирать не в ОЗУ, а на диске - банально нет столько памяти. И, до сих пор, всё было нормально.
До вчерашнего дня...
Пометка в ебилде хромиума!
Код: Выделить всё
# Check build requirements, bug #541816 and bug #471810 .
CHECKREQS_MEMORY="3G"
CHECKREQS_DISK_BUILD="7G"
if ( shopt -s extglob; is-flagq '-g?(gdb)?([1-9])' ); then
if use custom-cflags || use component-build; then
CHECKREQS_DISK_BUILD="25G"
fi
if ! use component-build; then
CHECKREQS_MEMORY="16G"
fi
fi
check-reqs_pkg_setup
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: Сборка и память
Так в том то и дело, что железо, хоть и старое, но отнюдь не "минимальное". И, вроде, какое то время назад я этого "монстра" уже собирал. На том же "железе". А сейчас проблема. Впрочем, попробую урезать потоки, посмотрю, что будет...
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Сборка и память
Когда я говорил "пройдет нормально", я имел в виду, что пройдет без проблем, дойдет до конца.
Не выпадет в своп и не завершится аварийно.
Впрочем, приведенный выше фрагмен файла build, дает исчерпывающий ответ в целом по этой теме. Тут и добавить нечего.
Re: Сборка и память
Пока нет Если только CHECKREQS_MEMORY - это свободная память, а не "всего". Пока собираю по совету ormorph. Похже отпишусь по результату...
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Сборка и память
Почему нет?
В файле ebild явно видны два варианта:
То есть, как минимум, понятно, что 3G - это не для всех случаев, в каких-то случаях нужно 16G.
По поводу "свободная" или "всего" - это вообще не вопрос. Разумеется, свободная.
То есть, та память, которую можно использовать.
Сколько её "всего" - это вообще никому не интересно. Может быть и сто гигов.
Но что толку от общего объема в сто гигов, если из них свободно полтора гига?
Вот, собственно, пруф:
https://devmanual.gentoo.org/eclass-reference/check-reqs.eclass/index.html писал(а): # need this much memory (does *not* check swap)
CHECKREQS_MEMORY="256M"
Re: Сборка и память
Допустим. Но, в моём случае, всё заканчивается ещё и "выжиранием" свопа.
Впрочем, пока всё собирается. Думаю, что через сутки-двое результат будет. Какой нибудь.
- Hephaestus
- Сообщения: 3729
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
- Контактная информация:
Re: Сборка и память
Ничего удивительного.
Смотрите сами:
На сайте указаны две цифры: минимальный объем в 8Гб и настоятельно рекомендованный объем в 16Гб.
В файле ebild имеем тоже две цифры: 3Гб и опять-таки 16Гб.
А на Вашей машине свободно 10Гб - это ещё одна цифра.
Учитывая все имеющиеся цифры, получаем следующие варианты: 3Гб - 8Гб - 10Гб - 16Гб.
На 10Гб сборка завершилась неудачей, то есть 10Гб явно не хватило.
Значит, остается только 16Гб (меньше никак).
Таким образом, приходим к выводу, что нужно 16Гб свободной ОЗУ.
А у Вас всего 16Гб ОЗУ. Следовательно, сборка будет сваливаться в своп. Это понятно.
С другой стороны, объем свободной ОЗУ - 10Гб, плюс размер своп - 8Гб, итого 18Гб. По идее на сборку должно хватить.
Но здесь беда в том, что если ОЗУ задействовать прямо вот на 100%,
памяти будет не хватать уже по прямому назначению (а не только именно на сборку), свопить начнет уже сама система, и в конце концов "прожорливый" процесс будет прибит. Что в Вашем случае и произошло, судя по всему.
То есть на сборку при таком раскладе нужно иметь свободными 16Гб, но это не должны быть "последние".
Нужно ещё предусмотреть объем для нужд системы (он будет занят), и еще незанятыми желательно пару гигов иметь.
Вообще, насколько помню из теории, тормоза начинаются, когда занято больше 20% объема ОЗУ.
Причем от ОС это не зависит. Выглядит странно, но похоже, что это так и есть.
Re: Сборка и память
Я бы предусмотрел, если бы свободные слоты были. А они все заняты.Hephaestus писал: ↑19.10.2020 19:06Нужно ещё предусмотреть объем для нужд системы (он будет занят), и еще незанятыми желательно пару гигов иметь.
Хотя, с другой стороны, машине 10 лет - менять уже надо. Не сегодня, так завтра.
Но, этот системник стоил на тот момент 1000 баксов - сейчас, с нынешним курсом, дороговато выходит.
Re: Сборка и память
С
Гугл - всё таки империя зла. Что они курили, что такого монстра забабахали? Это же всего лишь браузер...
собрать таки удалось. Без падений, хотя и с уходом в своп на 2 гигабайта.
Гугл - всё таки империя зла. Что они курили, что такого монстра забабахали? Это же всего лишь браузер...
Re: РЕШЕНО: Сборка и память
Пока проблемный пакет один, в нём особого смысла нет. Да и казалось, что "16 гигабайт хватит всем".