РЕШЕНО: Сборка и память

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

РЕШЕНО: Сборка и память

Сообщение devilr »

Доброго времени суток!
Решил собрать chromium.
Исходные данные:
ОЗУ всего - 16 гигабайт
ОЗУ занято (на момент начала сборки, т.е. ещё ДО сборки) ~ 6 гигабайт
ccache активен
SWAP файл - 8 гигабайт
Требование сборки:
ОЗУ - 3 гигабайт
Место на диске - 7 гигабайт
На момент сборки все условия выполняются. Ничего лишнего не работает. Только сборка в консоли и контроль с помощью коньков.
Сборка идёт в 8 потоков (по количеству ядер)
В какой то момент потребление памяти возрастает до 90+ процентов. Затем система начинает буквально "жрать" swap. И всё это заканчивается аварийно.
Я что-то не понимаю, или сейчас как-то по другому считаются требования для сборки?
Если да, то как быть?
Последний раз редактировалось devilr 20.10.2020 01:09, всего редактировалось 1 раз.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Сборка и память

Сообщение Bizdelnick »

Пальцем в небо: попробуйте -fuse-ld=bfd.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Сборка и память

Сообщение ormorph »

Уменьшить количество потоков, тогда и памяти должно потребляться по меньше.

Shell

# MAKEOPTS="-j7 -l6" emerge www-client/chromium
Это если в данный момент собирается только chromium, иначе уменьшить количество одновременно собираемых пакетов.
EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=4"
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

ormorph писал(а):
19.10.2020 00:51
Уменьшить количество потоков, тогда и памяти должно потребляться по меньше.
Это как раз понятно. Получается, что требования по сборке - это сборка в 1 поток? Это где-то написано?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Сборка и память

Сообщение Bizdelnick »

Не факт, что уменьшение числа потоков поможет. Жрёт память обычно линковка, а жирный бинарь там линкуется всего один.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Сборка и память

Сообщение ormorph »

devilr писал(а):
19.10.2020 00:54
Получается, что требования по сборке - это сборка в 1 поток? Это где-то написано?
Да ни где это не написано, просто у вас памяти уже 6 гб забито, а на 8 ядер 10 гб маловато будет. У меня бывало на 4 ядрах 6 гиг мало было. Критические программы это chromium, qtwebengine.
Просто с параметрами MAKEOPTS="-j7 -l6" должно обрабатываться 6-7 потоков, может этого хватит. Если не хватит то эти цифры можно уменьшить.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

ormorph писал(а):
19.10.2020 01:06
Да ни где это не написано, просто у вас памяти уже 6 гб забито, а на 8 ядер 10 гб маловато будет. У меня бывало на 4 ядрах 6 гиг мало было.
Но эти цифры ведь не просто так даются. Иначе получается, что надо эмпирически подбирать параметры сборки под каждый тяжёлый пакет. 100500 раз пересобирая...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Сборка и память

Сообщение ormorph »

Bizdelnick писал:
19.10.2020 01:03
Жрёт память обычно линковка, а жирный бинарь там линкуется всего один.
Конечно это происходит при линковке, но в один поток все равно это не происходит, одновременно пытается линковаться несколько файлов, вот и идет кеширование.
Я уже не раз натыкался на эти грабли, и уменьшение потоков обычно помогало.
Добавлено (01:20):
devilr писал(а):
19.10.2020 01:10
Но эти цифры ведь не просто так даются. Иначе получается, что надо эмпирически подбирать параметры сборки под каждый тяжёлый пакет. 100500 раз пересобирая...
У вас же distcc, а значит второй раз будет на много быстрее идти этот процесс.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

ormorph писал(а):
19.10.2020 01:15
У вас же distcc, а значит второй раз будет на много быстрее идти этот процесс.
Угу. А после 10 попыток всё будет быстрее собираться в 1024 раз. Шутка. :)
Всё таки непонятно, как это считается и для чего вообще указывается?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: Сборка и память

Сообщение ormorph »

devilr писал(а):
19.10.2020 01:23
Всё таки непонятно, как это считается и для чего вообще указывается?
Да кто же его для чего. Обычно указываются минимальные требования для сборки, это не значит что они оптимальные.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

ormorph писал(а):
19.10.2020 01:35
Обычно указываются минимальные требования для сборки, это не значит что они оптимальные.
Это да. Тогда, при выполнении этих условий, всё должно выполняться/собираться. А они у меня вроде как выполняются. Нет?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Сборка и память

Сообщение Hephaestus »

devilr
А вот эти требования:
devilr писал(а):
19.10.2020 00:29
Требование сборки:
ОЗУ - 3 гигабайт
Место на диске - 7 гигабайт
они написаны где?
Есть какой-нибудь тарбол с файлами README и INSTALL?

Потому что на официальном сайте написано так:
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.
В любом случае, я очень сильно сомневаюсь, что кто-то пробовал собрать chromium на 3Гб ОЗУ.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

Hephaestus писал:
19.10.2020 07:28
они написаны где?
В консоли. При начале сборки пакета. Если не будет соответствия - сборка не начнётся.
>>> 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: Сборка и память

Сообщение Hephaestus »

devilr писал(а):
19.10.2020 10:00
При начале сборки пакета.
Если это выставлено где-то в файле ebild (или как его там правильно),
так это надо спросить у автора ebild'а, почему такие цифры.
devilr писал(а):
19.10.2020 10:00
Если не будет соответствия - сборка не начнётся.
Понятно. В таком случае это критический минимум, при котором вообще хоть что-то начнется.
Возможно, там есть какой-то вариант сборки (урезанный), для которого этого будет достаточно.
Но это совсем не означает, что обычная сборка пройдет нормально на этих объемах.
Так или иначе, на оф. сайте цифры несколько другие.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

Hephaestus писал:
19.10.2020 10:45
Но это совсем не означает, что обычная сборка пройдет нормально на этих объемах.
Я не говорил за "нормальность" или "не нормальность" сборки.Я говорил за просто сборку.
С подобными требованиями есть несколько пакетов. И, вы либо выполняете эти требования, либо просто не можете собрать. Допустим, для некоторых пакетов я вынужден собирать не в ОЗУ, а на диске - банально нет столько памяти. И, до сих пор, всё было нормально.
До вчерашнего дня...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
bars
Сообщения: 429
ОС: BSD/LINUX

Re: Сборка и память

Сообщение bars »

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 систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

bars писал:
19.10.2020 11:57
Хмм, зная потребления ресурсов этого монстра, зачем его собирать на минимальном железе!?
Так в том то и дело, что железо, хоть и старое, но отнюдь не "минимальное". И, вроде, какое то время назад я этого "монстра" уже собирал. На том же "железе". А сейчас проблема. Впрочем, попробую урезать потоки, посмотрю, что будет...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Сборка и память

Сообщение Hephaestus »

devilr писал(а):
19.10.2020 10:59
Я не говорил за "нормальность" или "не нормальность" сборки.Я говорил за просто сборку.
Когда я говорил "пройдет нормально", я имел в виду, что пройдет без проблем, дойдет до конца.
Не выпадет в своп и не завершится аварийно.

Впрочем, приведенный выше фрагмен файла build, дает исчерпывающий ответ в целом по этой теме. Тут и добавить нечего.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

Hephaestus писал:
19.10.2020 12:13
дает исчерпывающий ответ в целом по этой теме
Пока нет Если только CHECKREQS_MEMORY - это свободная память, а не "всего". Пока собираю по совету ormorph. Похже отпишусь по результату...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Сборка и память

Сообщение Hephaestus »

devilr писал(а):
19.10.2020 12:18
Пока нет
Почему нет?
В файле ebild явно видны два варианта:
bars писал:
19.10.2020 11:57
CHECKREQS_MEMORY="3G"
CHECKREQS_MEMORY="16G"
То есть, как минимум, понятно, что 3G - это не для всех случаев, в каких-то случаях нужно 16G.
По поводу "свободная" или "всего" - это вообще не вопрос. Разумеется, свободная.
То есть, та память, которую можно использовать.
Сколько её "всего" - это вообще никому не интересно. Может быть и сто гигов.
Но что толку от общего объема в сто гигов, если из них свободно полтора гига?

Вот, собственно, пруф:
https://devmanual.gentoo.org/eclass-reference/check-reqs.eclass/index.html писал(а): # need this much memory (does *not* check swap)
CHECKREQS_MEMORY="256M"
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

Hephaestus писал:
19.10.2020 12:57
в каких-то случаях нужно 16G
Допустим. Но, в моём случае, всё заканчивается ещё и "выжиранием" свопа.
Впрочем, пока всё собирается. Думаю, что через сутки-двое результат будет. Какой нибудь. :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: Сборка и память

Сообщение Hephaestus »

devilr писал(а):
19.10.2020 18:07
Но, в моём случае, всё заканчивается ещё и "выжиранием" свопа.
Ничего удивительного.
Смотрите сами:
На сайте указаны две цифры: минимальный объем в 8Гб и настоятельно рекомендованный объем в 16Гб.
В файле ebild имеем тоже две цифры: 3Гб и опять-таки 16Гб.
А на Вашей машине свободно 10Гб - это ещё одна цифра.
Учитывая все имеющиеся цифры, получаем следующие варианты: 3Гб - 8Гб - 10Гб - 16Гб.
На 10Гб сборка завершилась неудачей, то есть 10Гб явно не хватило.
Значит, остается только 16Гб (меньше никак).
Таким образом, приходим к выводу, что нужно 16Гб свободной ОЗУ.
А у Вас всего 16Гб ОЗУ. Следовательно, сборка будет сваливаться в своп. Это понятно.
С другой стороны, объем свободной ОЗУ - 10Гб, плюс размер своп - 8Гб, итого 18Гб. По идее на сборку должно хватить.
Но здесь беда в том, что если ОЗУ задействовать прямо вот на 100%,
памяти будет не хватать уже по прямому назначению (а не только именно на сборку), свопить начнет уже сама система, и в конце концов "прожорливый" процесс будет прибит. Что в Вашем случае и произошло, судя по всему.

То есть на сборку при таком раскладе нужно иметь свободными 16Гб, но это не должны быть "последние".
Нужно ещё предусмотреть объем для нужд системы (он будет занят), и еще незанятыми желательно пару гигов иметь.

Вообще, насколько помню из теории, тормоза начинаются, когда занято больше 20% объема ОЗУ.
Причем от ОС это не зависит. Выглядит странно, но похоже, что это так и есть.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

Hephaestus писал:
19.10.2020 19:06
Нужно ещё предусмотреть объем для нужд системы (он будет занят), и еще незанятыми желательно пару гигов иметь.
Я бы предусмотрел, если бы свободные слоты были. А они все заняты.
Хотя, с другой стороны, машине 10 лет - менять уже надо. Не сегодня, так завтра.
Но, этот системник стоил на тот момент 1000 баксов - сейчас, с нынешним курсом, дороговато выходит. :(
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: Сборка и память

Сообщение devilr »

С
ormorph писал(а):
19.10.2020 00:51

Shell

# MAKEOPTS="-j7 -l6" emerge www-client/chromium
собрать таки удалось. Без падений, хотя и с уходом в своп на 2 гигабайта.
Гугл - всё таки империя зла. Что они курили, что такого монстра забабахали? Это же всего лишь браузер...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: РЕШЕНО: Сборка и память

Сообщение ormorph »

devilr писал(а):
20.10.2020 01:09
Без падений, хотя и с уходом в своп на 2 гигабайта.
Гугл - всё таки империя зла. Что они курили, что такого монстра забабахали? Это же всего лишь браузер...
Ну на крайний случай можно было zram прикрутить, возможно тогда и в своп на диске бы не полезло.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3138
ОС: Mandriva => Gentoo (~amd64)

Re: РЕШЕНО: Сборка и память

Сообщение devilr »

ormorph писал(а):
20.10.2020 08:20
можно было zram прикрутить
Пока проблемный пакет один, в нём особого смысла нет. Да и казалось, что "16 гигабайт хватит всем". :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали: