LINUX.ORG.RU

LTO в Gentoo

 , ,


0

1

Кто-нибудь использует LTO в Gentoo на общесистемном уровне по этой инструкции? Если да, то часто встречаете ли вы какие-то проблемы из-за него, приходится ли вести собственные чёрные (или белые) списки[*] для отключения LTO?

Знаю про существование оверлея gentooLTO, но там написано, что он какбе уже и не нужен.

У меня Ryzen 5950X и 64 гига оперативы, так что увеличенное потребление ресурсов на компиляцию меня не сильно беспокоит. А беспокоят возможные регрессии: баги, замедления, раздувание бинарников на порядок. Десктоп у меня довольно минималистичный, безо всяких гномокедов.

[*] Неполиткорректно выражаюсь, да)

★★★★★

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

Когда-то давно игрался в gentoo…

В некоторых случаях надо было указать LDFLAGS=-flto, так как линкер не брал объектники и либы, собранные с lto. В некоторых случаях приходилось править ебилды.

Часто либы, особенно статические, собираются без lto, делая бессмысленным lto для использующих эти либы приложений.

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

Лучше заморочится с pgo. GCC собранный с pgo на 10-15% быстрее собирал мой конфиг ядра.

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

Лучше заморочится с pgo. GCC собранный с pgo на 10-15% быстрее собирал мой конфиг ядра.

Это я использую. Где есть юз-флаги для lto/pgo, я их включаю. Но из ебилдов, где нет каких-то специальных костылей для lto, мейнтейнеры этот юз-флаг выпиливают (недавно так было с wireshark, например), полд предлогом того, что lto для этого пакета из коробки работает. Поэтому в качестве белого списка наличие use-флага не катит.

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

а зачем тебе lto?

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

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

Сейчас использую, вроде всё ок. Но это не из stage3, это уже на живой системе включил недавно ради интереса.

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

Bfgeshka ★★★★★
()

если не знаешь, то советую нырнуть в большие пакеты сюда crux.nu/portdb. Напимер, mesa (смотрим опцию -D b_lto) https://crux.nu/ports/crux-3.7/xorg/mesa/Pkgfile, или xorg https://crux.nu/ports/crux-3.7/xorg/xorg-server/Pkgfile

Ребята там толковые, так что можно по некоторым опциям сборки пакетов прмо в Ирку постучать, помогут, и быстро.

Eulenspiegel
()

Использовал flto на проце Xeon 5450 года так 4 назад, прирост производительности по ощущением косвенный, но вот собиралось очень долго, например какой нибудь фф без него собирался 8 часов а вот с ним 2 дня, сейчас максимум как юзфлаг, так как если брать какой нибудь блендер с этим флагом производительность будет также, а вот собираться будет дольше

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

2 пакета я собирал без: Mesa и Emacs

Раньше я тоже её блочил, а вот сейчас меса точно с LTO собирается. Емаксом не пользуюсь, но его блокировка в туториале была прописана, так что лол.

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

Чем и как померянная?

я смотрел потребление памяти и отзывчивость запуска как самих иксов, так и чего тяжелого. Gentoo без этой опции и «c». А посоветовала Sylvia на Xorg и LTO внимание обратить, за что ей спасибо.

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

я так скажу, у меня собирается вообще всё, но я человек специфический, я о каждом пакете интересовался, читал, ходил по форумам и сидел в Ирке. В прошлом в 30% случаев LTO или было бессмысленно и ело время компилирования или в 10% случаев давало регрессию. Один из пакетов - Mesa. Может сейчас всё по другому, я не в курсе. Если они за эти пару лет убрали часть legacy…

Надо смотреть и тратить время. Я же сейчас переехал даже на Xorg с Wayland и на Debian 12. Машина после двух недель и

xautolock -time 15 -locker "systemctl suspend" &

просто всегда доступна.

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

я наверное еще и PGO рекомендовала ?
Просто от LTO пользы сравнительно "-march=native" и/или PGO не так уж и много.
В принципе даже стандартный портеж Gentoo сейчас поддерживает сборку с USE+=«lto pgo» , для того же Фаерфокса или binutils или Python

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

я наверное еще и PGO рекомендовала ?

Для Xorg? А как накапливать статистику, gtkperf гонять?

В принципе даже стандартный портеж Gentoo сейчас поддерживает сборку с USE+=«lto pgo» , для того же Фаерфокса или binutils или Python

С пакетами, где есть такие юзы, всё понятно — если юзы добавили, значит ими кто-то пользуется и риск получить регрессию невелик.

Хотя от такого PGO, наверное, толку не так много — они же тупо юнит-тесты прогоняют для сбора статистики. Да, это удобно тем, что всё автоматизировано, но вряд ли репрезентативно с точки зрения реального использования.

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

да, для xorg-server

-fprofile-generate -fprofile-dir=/var/tmp/xorg.12345678

в CFLAGS добавляем, делаем emerge xorg-server

запускаем, пользуемся немножко

а потом снова emerge с
-fprofile-use -fprofile-dir=/var/tmp/xorg.12345678

так в принципе можно собрать любой пакет не поддерживающий USE=pgo

там emerge гоняет make test или make check, а если нужна сборка чего-то иного, то придется менять CFLAGS, пользоваться и снова пересобирать пакет, ключевой момент в том, чтобы задавать внешний каталог для данных профиля, через -fprofile-dir

для Фаерфокса тоже идет использование со сценарием, поэтому там нужен безголовый X сервер (Xvfb)

Пользы больше чем от LTO, и потребление памяти ниже, хотя на мощном компе с кучей памяти заморачиваться просто лениво, особенно если что-то надо делать вручную

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

отдельно про регрессии от -flto и -fprofile-use

они крайне редки, так что если есть дух экспериментирования, то впролне можно использовать практически для всего,
Даже такие сложные вещи как ядро Linux собираются и с LTO и с (runtime) PGO, т.е. ядро инструментированное надо попользовать и затем с -fprofile-use пересобрать

PGO я на ядре не пробовала, а вот ThinLTO при сборке Clang теперь использую всегда.

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

а вот ThinLTO при сборке Clang теперь использую всегда.

А что собираешь (мир?)? Не пробовала сравнить бинарники GCC и Clang? Меня скорость компиляции с Clang привлекала, было дело. Интересно, как обстоят дела на 18 версии…

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

dev-qt/*
и все категории KDE раньше собирала Clang,
но после того, как Qt5 перешла под опеку проекта KDE, они там накосячили с кодом GLES, что он перестал работать при сборке не GCC, так что... грабельки местами попадаться будут.

Если комп мощный, есть время и дух экспериментировани/ - собирайте, тестируйте )

Мне сейчас важнее удобство использования и минимум возни

Ядро я собираю 17 версией сейчас, у текущей 18 еще выходят обновления, а модули ядра, как известно, привязаны к версии компилятора. Опять же парк железа у меня относительно большой, так что на сборку ядра Clang 18 я перейду когда будет 19-ая версия

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

Спасибо. Да, с оборудованием сейчас проблем нет.

Мне сейчас важнее удобство использования и минимум возни

Увы, меня тоже поворачивает в эту сторону.

Опять же парк железа у меня относительно большой, так что на сборку ядра Clang 18 я перейду когда будет 19-ая версия

Спасибо. Я правильно понимаю, что большая часть системы собирается с LLVM? И только некоторый графический стек - GCC?

Ну и в моём случае всё намного проще - TiledWM + GTK3 + Electron + Avalonia…

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

нет, практически всё я собираю с GCC 12 сейчас,
желания словить баг как в Qt и разбираться откуда ноги растут у меня больше нет )

у меня как обычно KDE, в других средах мне всегда чего-то не хватает и снова получается KDE, по графике 1 комп самовольно ушел на Вэйланд, 2 остались на Xorg и Воланд почему-то не работает, а отладка у него никакущая, остальное «безбашенное»

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

ну и отлично, я даже не смотрела что там добавлялось за последнее время

{ada cet custom-cflags +cxx d debug default-stack-clash-protection default-znow doc fixed-point +fortran go graphite hardened ieee-long-double jit libssp lto modula2 multilib +nls objc objc++ objc-gc (+)openmp pch pgo +pie rust +sanitize +ssp systemtap test valgrind vanilla vtv zstd}

Установленные версии: 12.4.0(12)^t(13:46:13 09.07.2024)(cet cxx default-stack-clash-protection default-znow fortran graphite multilib openmp pie sanitize ssp zstd -ada -custom-cflags -d -debug -doc -fixed-point -go -hardened -ieee-long-double -jit -libssp -lto -nls -objc -objc++ -objc-gc -pch -pgo -systemtap -test -valgrind -vanilla -vtv)


у меня правда свой зоопарк в /usr/local живет

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

USE=«abi_x86_32 X wayland

я достаточно консервативна, уходить полностью с 32 бит не хочу

у меня 2 машинки на Gentoo x86 до сих пор


PS: а, да, еще LILO вместо GRUB(2) много где

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

«multilib» Партия не одобряет!

Вот у меня не так давно был случай, что пришлось для бинарной 32-битной программы собирать 32-битный старый openmpi. Так что лучше уж пусть будет gcc с multilib, не потянет.

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

для старых машинок еще Glibc важен... а то нахватает при компоновке с новой Glibc функций и не запустишь на другой машине.

Хотя по возможности всё, что ниже Glibc 2.35 на 32 битах надо обновлять (почему? time_t и проблема 2038 года, которая на современных ядрах и Glibc 2.35 была решена)

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

Давеча что-то надо было в Alpine, так flatpak зарешал. Или проброс chroot для совсем критических случаев.

@Sylvia

я достаточно консервативна, уходить полностью с 32 бит не хочу

Странно это. А LILO тоже мне больше по нраву. Меньше, надёжнее, без ненужных понтов. Но я уже лет 7 без загрузчика. CMDLINE с указанием корня мне достаточно.

X wayland

тоже странно. Надо или native и «побеждать» или вернуть Xorg и не побеждать :)

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

X wayland

это работает, написала же, на 1 компе внезапно заработал Воланд, на 2 других - упорно не хочет, ну я в принципе и не настаиваю пока что )
Как в рекламе «А если не видно разницы....»

Sylvia ★★★★★
()