LINUX.ORG.RU

Требуется пояснительная бригада: у фичи есть какие-нибудь минусы, окромя плюсов?

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

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

Линковка адово тормозит и жрет память. Мы недавно отключили эту срань у себя в проекте, так как после перехода на свежий clang оно перестало умещаться в 64Gb RAM. Прирост по сути там мизерный, около 1%, смысла нет вообще.

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

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

Всё так

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

Когда-то читал, что ЛТО может добавлять багов. Также, увеличивается время компиляции и потребление памяти.

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

Время компиляции, говорят есть пакеты, которые так не соберутся. Полагаю, мейнтенеры арча абгрейдили компы) Ну, посмотрим, что будет

d09
()

А для Ъ пояснения будут. Что за ЛТО такое? Оптимизация при линковке?

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

Ну это проблема сборщиков, когда-то сборка андроида с LTO меня подтолкнула к увеличению до 32 гб на домашнем и то почти все сжирала сборка ядра.

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

Снижение размера бинарников в первую очнредь. При статической линковке - значительно, для микроконтроллеров, по-сути - киллерфича. Для десктопов, хз.

DawnCaster ★★
()

Арчеводы – знатные любители прострелить себе колено.

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

мизерный, около 1%

Скажи ещё, что и пользователей десктопного линукса надо за бесполезность выпилить, т.к. оверхед большой, а толку-то - всего один процентик.

pon4ik ★★★★★
()

Следом за Сусей, Федорой и Убунтой, в Арче хотят собирать пакеты с ЛТО.

\vbros

А теперь посмотрите, где эти ваши «суси», «федоры» и «убунты» теперь. Глюк на глюке!

\vbros off

А по теме – не нужно. Серьёзно, прирост мизерный (уменьшение размера бинарного файла), зато проблем в первую очередь для разработчиков – выше крыши. Вот на Arch ARM это ещё оправданно, там никто не компилирует на «малинках».

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

Мы недавно отключили эту срань у себя в проекте, так как после перехода на свежий clang оно перестало умещаться в 64Gb RAM.

А что вы там такое пишете, что с LTO оно аж в 64 гигабайта не помещается?

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

Для LTO, если я правильно понимаю, надо передавать все исходники на вход компилятору разом, чтобы он это все собрал за одну команду. Т.е. теряем возможность многопоточной сборки, пересборка проекта всегда как сборка с нуля (ccache становится бесполезен), дикое потребление памяти на больших проектах.

Плюсы - на avr LTO может давать более компактный код, небольшой прирост производительности. Больше не знаю.

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

Думаю достаточно плюсов и пары увесистых header-only библиотек.

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

Если я правильно помню то, что читал на этот счёт, каждый файл сначала компилируется в некое промежуточное представление или байт-код. А уже на этапе линковки проводится повторная оптимизация этого представления с учетом полной картины всех объектных файлов. Таким образом первый этап всё еще параллелится. Но второй этап жрёт просто огромное количество памяти и времени.

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

Посмотрел доки, и впрямь он теперь выписывает в .o байткод, и достаточно только везде -flto добавить.

ncrmnt ★★★★★
()

И это ещё:

https://www.phoronix.com/scan.php?page=news_item&px=Arch-Linux-LTO-Proposed

«Another notable change being considered at the same time for Arch is using the x86-64-v2 microarchitecture level. This would make Arch Linux faster by allowing to assume some CPU instruction set extensions by default while still running on most x86-64 Intel/AMD hardware from over one decade. This is the same as RHEL9 set to require x86-64-v2 instead of vanilla x86-64.»

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

Блин. И что мне теперь поставить на свои два музейных экспоната? Теперь даже не понтануться на ЛОРе, что современный Arch пашет на Pentium D.

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

Да не спеши, это пока только обсуждения. Думаю, год-другой впереди есть. А там либо машина с Pentium D совсем загнётся, либо будет очередной lowarch. (Пишу это с Core 2 Duo)

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

Я решаюсь ядра обновить. Смотрю, переход 5.10 -> 5.11 добавил почти 19 МБ. Столько новых драйверов?

ПакетСтарая версияНовая версияИзменение размераРазмер загрузки
core/linux5.10.16.arch1-15.11.4.arch1-118,91 MiB92,77 MiB
core/linux-lts5.4.98-15.10.22-22,08 MiB74,36 MiB
greenman ★★★★★
()
Ответ на: комментарий от greenman

До v2 вряд ли дропнут, требование SSE4.2 сейчас рановато

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

говорят есть пакеты, которые так не соберутся.

И довольно много. У меня на системе таких стоит 45 штук.

Что же касается плачей про долгую компиляцию – дык ся/плюся вообще долго компилируется. Юзайте говнопитон.

Линкеру, кстати, можно передать количество ядер, аналогично make -j16: -lto=16 (в make.conf в CFLAGS, CXXFLAGS, LDFLAGS).

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

после перехода на свежий clang

Хмм. А на свежий gcc? Т.е. это точно проблема LTO как такового? Не clang специфичная?

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

А вот это реально вкуснотища была бы )

Особенно для всякого рода хлама, вроде моего AMD A12 9700P.

robus ★★★★★
()
Ответ на: комментарий от greenman
#!/usr/bin/awk -f

BEGIN {
    while (!/flags/) if (getline < "/proc/cpuinfo" != 1) exit 1
    if (/lm/&&/cmov/&&/cx8/&&/fpu/&&/fxsr/&&/mmx/&&/syscall/&&/sse2/) level = 1
    if (level == 1 && /cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/) level = 2
    if (level == 2 && /avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/) level = 3
    if (level == 3 && /avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/) level = 4
    if (level > 0) { print "CPU supports x86-64-v" level; exit level + 1 }
    exit 1
}

Стащиль отсюда.

Очень даже всё понятно )

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

Все так переживают из-за времени компиляции, как будто им самим это делать,а не мейнтейнерам

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

Хмм. А на свежий gcc? Т.е. это точно проблема LTO как такового? Не clang специфичная?

Да, lto специфичная, оно и без обновления хорошо кушало памяти.

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