LINUX.ORG.RU

gentoo, LTO

 , , , ,


0

2

Кто и как относится к этой волшебной опции компилятора?
Кто собирает GCC с ‘-flto’?
Кто сидит на Clang с ‘-flto=thin’?

А вы знали, что Fedora полностью собирается с этой опцией с 2021 года? А Debian Bookworm на финишной прямой?

https://fedoraproject.org/wiki/LTOByDefault
https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/message/UT2YVWPZK2IZ5EUHMSHNCW3Q72CMPWCJ/

Если взять один из гиковских дистрибутивов, Crux:
https://crux.nu/ports/crux-3.7/xorg/xorg-server/Pkgfile
то многие пакеты собираются с опцией ‘-D b_lto=true’

Ваши предложения и рекомендации?

Ответ на: комментарий от Neuromagus

А что за меню на lua?

а в этом случае что дает оптимизация? Менюшка будет легче? )

Темная тема это ВСЕГДА аргумент. Америкосы подсчитали сколько можно сэкономить электричества если сделать гугл черным. Не имеет никакого отношения к оптимизации как и твоя менюшка, а продолжительности жизни ноута

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

Я недавно нарыл статьи по андроидам, дык там конкретно озаботились вот этим всем. И я вообще за корректность.

Ну и для тебя тчобы ты сразу увидел разницу можно собрать xorg без и с. Потом посмотреть, Старожилы расскажут ;)

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

Я всё это не читал, но первый же поинт про UB так же актуален как и тогда. Я своими глазами в дисасме видел как шланг инлайнит десяток функций из разных .cpp и завершает всё это std::abort потому что unreachable.

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

Мне жалко людей, которые провоцируют тупостью и агрессией. Мне жалко, что под полтишок ты не смог тоненько. Не зря я привёл этот день, век пол живи, как говорится.

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

Мне интересно у кого столько свободного времени собирать постоянно пакеты со всякими оптимизаторами )

А там не нужно постоянно уголь подбрасывать. Компилируется потихоньку

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

Ну ты же закинул тему, что тебе не отвечают, я троллинг иногда люблю, если не вот так, тупо и агрессивно. Я подыграл как раз о интересном пункте - ffmpeg, есть, где разгуляться. А ты что? Прямо «под копирку» мемасов, стало грустно. Вывод, провокация , ответа на вопрос просто нет, а мне было бы интересно. И дальше что? Что ты конкретно можешь предложить? Опыт? Его нет в нашей беседе, интригу или веселье? Так вот же:

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

Ты просто решил, что тебе можно взять и обозвать всех в теме (кроме себя) вот так. И правильно! Я вот нерд, я хочу узнать.

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

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

GentooLTO это не только LTO, но и -O3 и graphite и ещё куча разных опций. И их нужно отключать попакетно если где то что то не работает.

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

Я вот о чём и толкую, с 21 года типа всё собирается. Была найдена регрессия в Mesa. Паррни из Crux решили, что с каждой ерсией тестить сложно (там робот и автосборка), так что отказались, на некоторые старые утилиты тоже влияния нет (а значит, чуть дольше). Но типа собирается всё. Поэтому и написал.

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

GentooLTO это не только LTO, но и -O3 и graphite и ещё куча разных опций. И их нужно отключать попакетно если где то что то не работает.

пока обхожу стороной.

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

Я вот о чём и толкую, с 21 года типа всё собирается.

А в виллабаджо уже собрали без LTO и вовсю используют =D

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

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

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

Ну ты и странный тип. Какой переход?

Я делюс инфой, типо читал статьи, вот сам пробую, вот пакет ПО, двайте обсудим. Тут ты, хоба, «я читаю спеки». Да обалдеть! Пацаны! Он спеки читает! И что мне это дало? Твоё ЧСВ никто не трогал, понятно что ты про. Вот у про и спросили по теме, а ты в раковину и «на личности». Да иди ты лесом. Фу, как в какашку наступил.

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

Он спеки читает! И что мне это дало?

Я тебе дал ссылку на конкретный пример того, как в Fedora, где уже попробовали, отключают LTO в конкретном пакете. Предполагалось, что ты по ней пройдешь и тоже будешь читать. Если не ходить и не читать, это тебе действительно ничего не даст.

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

если не вот так, тупо и агрессивно

я не троллил, а просто спросил у кого это есть столько времени сидеть и компилить на генте пакеты когда есть куча другой работы. Хде ты увидел агрессивность и тупость?? Это потом прибежали эксперды тупо объяснять шо меню у mpv является целью для оптимизации

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

Скажи напоследок в чем для обычного юзера смысл компиляции?

Вот недавно на лорчике плакались про лишние зависимости, а в генте, тем временем, можно собрать систему скажем без поддержки bluetooth. Там такая гибкость, что бинарные дистры просто такое не потянут хотя бы из за количества разных комбинаций пакетов, что надо собрать.

Во-вторых гента это самый нормальный роллинг, который не ломается при апдейтах, так как конпелируется с теми либами, что стоят в системе.

То что там пишут, что что-то собирается день, когда у меня была гента лет 7 назад, на среднем компе лиса компилировалась 4 часа. Сейчас должно быть быстрее.

goingUp ★★★★★
()

package.env:

app-misc/fastfetch flto
dev-lang/rust clang
dev-libs/libdispatch nolto
media-*/* gccO3flto
media-gfx/nomacs flto
media-libs/libplacebo flto
media-libs/mesa flto
media-sound/mpd flto
media-video/mpv flto
net-im/telegram-desktop flto
net-libs/nodejs nolto
sys-devel/clang clang
sys-devel/lld flto
sys-devel/llvm clang
sys-libs/compiler-rt flto
sys-libs/compiler-rt-sanitizers flto
sys-libs/libomp flto
sys-libs/llvm-libunwind flto
www-client/firefox flto
x11-terms/kitty flto

Стандартные флаги из make.conf:

CFLAGS="-march=skylake -mabm --param=l1-cache-line-size=64 --param=l1-cache-size=32 -O2 -fno-stack-protector -pipe"
LDFLAGS="-Wl,-O2 -Wl,--as-needed -Wl,-s"

env/gccO3flto:

CFLAGS="-march=native -O3 -flto=16 -fuse-linker-plugin -fno-stack-protector -pipe"

env/nolto:

CC="clang"
CXX="clang++"
CFLAGS="-march=skylake -O2 -fno-stack-protector -pipe"
LDFLAGS="-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,--as-needed -Wl,-s"

env/flto:

CC="clang"
CXX="clang++"
AR="llvm-ar"
NM="llvm-nm"
RANLIB="llvm-ranlib"
CFLAGS="-march=native -O3 -flto -fno-stack-protector -pipe"
LDFLAGS="-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind -Wl,-O3 -Wl,--lto-O3 -Wl,--as-needed -Wl,--icf=all -Wl,-s"

env/clang: то же самое но -flto=thin Естественно, везде есть CXXFLAGS=«${CFLAGS}»

В make.conf было бы march=native если бы не использовал бинпакеты на ноутбуке, который типа сервер/nas. Сборка media-/ с O3+flto даёт реальный прирост как в бенчмарках так и на глаз (перемотка в mpv без задержки, простой сборкой одного mpv шлангом с макс. оптимизациями такого не добиться). Телега намного отзывчивей бинарной, kitty жрёт меньше памяти, nomacs быстрее запускается. Фуррифокс собираю а не использую -bin потому что а почему бы и нет, благо даже с pgo он собирается полчаса (в отличие от хромиума, который требует 6 часов (без pgo чуть менее трёх)), ну и из-за hwaccel и -telemetry, которых в -bin версии нет. Юз-флаги lto pgo естественно в наличии, также в make.conf есть опция EXTRA_FFMPEG_CONF=«–enable-lto» без которой он lto игнорирует.

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

Круто, спасибо.

hwaccel

уже не нужен. Поставь Xorg 9999 и пропиши

/etc/X11/xorg.conf.d/20-intel.conf

Section "Device"
  Identifier "Intel Graphics"
  Driver "modesetting"
  Option "TearFree" "true"
EndSection

также в make.conf есть опция EXTRA_FFMPEG_CONF=

не знал, спасибо.

Я так понял, всё на Clang. А вот этот параметр что даёт? -mabm?

fuse-ld=lld

вроде стали использовать новый линковщик, если не путаю.
Если почитать https://lld.llvm.org/ то

Since GNU ld doesn’t support the -icf=all and -gdb-index options, we removed them from the command line for GNU ld. GNU ld would have been slower than this if it had these options.

Ну и новость пробегала, что LLVM пошли по пути Gcc и добавили опцию –fat-lto-objects. https://www.phoronix.com/news/LLVM-Fat-LTO-Objects

Neuromagus
() автор топика
Последнее исправление: Neuromagus (всего исправлений: 4)