LINUX.ORG.RU

Линкер gold: как его готовить?

 


1

4

Привет

Прочитал про линкер gold, говорят значительно ускоряет линковку.

Сделал у себя:

$ cat /etc/portage/env/gold_binutils.conf
EXTRA_ECONF="--enable-gold=default"

$ cat /etc/portage/env/gold.conf
LDFLAGS="${LDFLAGS} -Wl,-fuse-ld=gold"
CFLAGS="${CFLAGS} -fuse-ld=gold"
CXXFLAGS="${CFLAGS}"

$ cat /etc/portage/package.env

# dev-qt/qtcore gold.conf
sys-devel/binutils gold_binutils.conf

Пересобрал binutils (хотя ld.gold и так существовал).

По дефолту ставить не хочу, хочу для индивидуальных пакетов. Если я всё правильно понял, это достигается правкой package.env как показано выше.

На qtcore профита не заметил.
ЧЯНТД? Кому-нибудь удалось ускорить компиляцию/линковку посредством ld.gold? Можете поделиться конфигом, тест-кейсом?

P. S. Или ld.bfd?

★★★★★

Последнее исправление: Kroz (всего исправлений: 2)

ld.bfd

Так это ж дефолт. Если ты не используешь gold, ты используешь bfd.

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

binutils-config --linker ld.gold
eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)

Ты как-то всё неправильно читаешь, и тем более неправильно делаешь. Читай внимательный.

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

А профит он дает? На каком пакете?

# Без gold
$ time emerge -v1 qtcore
...
real    9m13,563s
user    16m5,869s
sys     1m2,966s

$ time emerge -v1 mplayer
...
real    2m5,668s
user    2m25,193s
sys     0m29,814s


# С gold в package.env
$ time emerge -v1 qtcore
...
real    9m15,092s
user    16m5,359s
sys     1m3,177s

$ time emerge -v1 mplayer
...
real    2m2,042s
user    2m25,451s
sys     0m29,657s


# binutils-config --linker ld.gold
$ time emerge -v1 qtcore
...
real    9m17,094s
user    16m5,167s
sys     1m3,345s


$ time emerge -v1 mplayer
...
real    2m2,951s
user    2m25,403s
sys     0m29,699s


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

Ты как-то всё неправильно читаешь, и тем более неправильно делаешь. Читай внимательный.

Так наставь на путь истинный, о сенсей.
Дай конфиги и на каком пакете можно увидеть профит?

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

Что-то не думаю я, что скорость линковки при разовой сборке пакета сколь значимо будет влиять. Если постоянно пересобираешь один и тот же код, компиляция практически пропадает из-за ccache, остаётся линковка. И тогда уже gold помогает. Ещё говорят, что он памяти меньше ест.

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

Я, впринципе, о чем-то таком догадывался. Но повёлся на слова «работате быстрее» без конкретики, да и на гентушных форумах часто люди спрашивают.
Получается, что для Gentoo оно особого профита не дает.

Посмотрим, может кто скажет альтернативное мнение.

Kroz ★★★★★
() автор топика

Ты не увидишь профит на одном пакете. Профит по времени будет при сборке мира, например

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

Ты его не включил, читай ещё раз: https://wiki.gentoo.org/wiki/Gold

/etc/portage/env/gold.conf - сделал (только у меня он называется gold_binutils.conf)
/etc/portage/package.env - подправил
sys-devel/binutils - перекомпилил
binutils-config --linker ld.gold - пробовал и с ним и без него.

И чего я не сделал?

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

Ты не увидишь профит на одном пакете. Профит по времени будет при сборке мира, например

Если там профит на пару процентов - не нужен мне такой gold

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

gold вроде в среднем более жирные бинарники выдаёт.

Линкер? За счёт чего.
Не проверял, правда.

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

Коллега исследование на эту тему делал. Сам я не очень разбираюсь в линкерах.

DELIRIUM ☆☆☆☆☆
()
29 сентября 2017 г.
Ответ на: комментарий от Bruce_Lee

Так вверху ж писали что профит в пару процентов. Ну так я и отказался от этой затеи.

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

Но ведь даже пара процентов это профит, если боков нет.

Я решил собирать и уже почти собрал на голде свежую систему, пока всё ок.

Bruce_Lee ★★
()

Начинаю отгребать из-за голда, 100% не собирается с ним как минимум стабильный пакет media-sound/musepack-tools-465-r1.

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

Но media-sound/musepack-tools одна версия в дереве, так что деваться некуда.

Не готов.

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

Ну так и не предполагалось, что всё соберется. Исключай отдельные пакеты.

Там может быть хуже: или сейчас или раньше он ломал grub; последствия, думаю, понятны. В и-нете пишут.

В общем, как по мне, слишком много геморра ради 1%-2% профита

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

+ app-arch/cpio-2.12-r1
+ dev-libs/elfutils-0.170-r1

В общем, больше сюда отписывать не буду, уже понятно, что скопом не получится, только время тратится на переключение линкеров.

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

relaxation pass не запилен или недопилен. в плане оптимизации gold отстает от bfd.

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

gold делался для сборки оч большого на C++ вроде хрома. Кроме гугла я пользователей этого дела не знаю. Чтобы увидеть профит, проект должен быть просто огромным. Исполбзование можно посмотреть в хроме - там обычный линкер не справляется. Большого смысла использовать gold вне таких проектов нет.

Кстати, gold - пример победы здоровой лени над злом - если бы его форсили как systemd, сидели бы мы на кривом линкере который когда-нибудь бы кто-нибудь пофиксил. А так хоть что-то хорошее осталось.

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