LINUX.ORG.RU

Компиляция Chromium с -O3

 ,


0

4

Собственно сабж. Не могу собрать хромиум с -O3. Пробовал с -O2 - собирает, бинарник получается на 5-10% быстрее чем проприетарный google-chrome. В случае с firefox, то с -O3 выходит довольно шустрый бинарник.

Мой make.conf: http://pastebin.com/CdqkBgaF

env:

CFLAGS="-march=native -O3 -pipe"
CXXFLAGS="${CFLAGS}"
CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"

Кусок лога с ошибкой на pastebin: http://pastebin.com/XfUV5zdp

Фул лог (файл 55 метров): https://yadi.sk/d/GdI8O6ls34c5Qt

environment: http://pastebin.com/kAUkpH5e

Уже 2 раза более 12 часов компилирую и 2 раза ошибка на 99% [23852/23852], в чем может быть проблема ? И возможно ли вообще собрать хромиум с -O3 ?


В случае с firefox, то с -O3 выходит довольно шустрый бинарник.

Да, довольно шустро сегфолтится. Секунд через 5 после запуска. Даже с пустым профилем.

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

Мозиловский бинарник с -O3 собран, пруф: http://i.piccy.info/i9/6347814712878b713a9d9fc7df7e6567/1482515009/123916/110...

Используй ccache, чтобы не компилять с нуля каждый раз.

После двух неудачных 12 часовых компиляций всерьёз об этом задумался.

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

Ну от железа зависит, да. Тебе повезло, вероятно. На i5-2500 (-O3 -march=native) сегфолт сразу после запуска, даже с пустым ~/.mozilla

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

не сегфолтится, но на некоторых сайтах падает

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

Буду иметь в виду и не ломать себе голову.

d-7
() автор топика

Собирал недавно Chromium с -O3 без каких-либо ошибок. Возможно проблемы в других флагах компилятора.

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

Скинь свой make.conf и кастомные оптимизации которые ты использовал при сборке хромиума из директории /etc/portage/env/. Еще, покажи пожалуйста вывод emerge -pv gcc и emerge -pv chromium. Вроде этой инфы для сравнения с моими настройками должно хватить что бы понять что не так.

d-7
() автор топика

в чем может быть проблема ?

Похоже, что gcc решил не генерировать тело функции

blink::StyleBuilderConverter::convertPositionLength
Грепни последнее имя по исходникам, узнай его команду компиляции, а затем выполни точно такую же, но с -O2 вместо -O3.

Кстати, раз там используется ninja, то все слегка упрощается: в compile_commands.json нужно -O3 на -O2 поправить для индивидуального файла.

Уже 2 раза более 12 часов компилирую

ССЗБ. Осиль уже ebuild $EBUILD configure/compile/etc

И да, гораздо большего прироста производительности можно добиться блокировщиками рекламы и js.

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

Кстати, раз там используется ninja, то все слегка упрощается: в compile_commands.json нужно -O3 на -O2 поправить для индивидуального файла.

compile_commands.json (если там вообще генерится такой файл) не имеет к ninja ни малейшего отношения. Надо править build.ninja или то, из чего он генерируется

annulen ★★★★★
()

Кстати, 56 версия требует для сборки gcc 5, у меня стоит две версии компилятора в системе: 4.9.3 и 5.3.0. Проблема в том, что часть софта пятой веткой не собирается. Как в таких случаях поступают пользователи Gentoo?

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

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

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

А проблема только с firefox. Весь мой остальной софт (urxvt, vim, mpd, mpv) норм работает с O3.

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

Ни разу ещё не сталкивался с тем, чтобы пакет не собирался gcc5.

У меня если не правильно перейти из стабильной ветки на нестабильную и/или использовать perl-cleaner, то часть пакетов просто не собираются (данный chromium не в счет).

d-7
() автор топика

Посмотрел документацию по GCC https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/Optimize-Options.html#Optimize-O... . Глянул флаги относящиеся к -O3

Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-loop-vectorize, -ftree-loop-distribute-patterns, -ftree-slp-vectorize, -fvect-cost-model, -ftree-partial-pre and -fipa-cp-clone options. 

Собрал Chromium c таким набором cflags

CFLAGS="-march=native -O2 -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-loop-vectorize -ftree-slp-vectorize -fvect-cost-model -ftree-partial-pre -fipa-cp-clone -pipe"
Только исключил вот эти 2 флага:
-finline-functions -ftree-loop-distribute-patterns
Хромиум собрался, по тестам выдает такой же результат.

Сейчас пробую собрать уже с поддержкой

-finline-functions
Посмотрим что будет. Отпишусь как соберет.

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

Результат сей компиляции (такой же фейл). http://pastebin.com/v7ttiYvz

Скорее всего, дело в

-finline-functions

Но на всякий случай попробую собрать с добавлением

-ftree-loop-distribute-patterns
в CFLAGS
CFLAGS="-march=native -O2 -ftree-loop-distribute-patterns -funswitch-loops -fpredictive-commoning -fgcse-after-reload -ftree-loop-vectorize -ftree-slp-vectorize -fvect-cost-model -ftree-partial-pre -fipa-cp-clone -pipe"

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

Есть предположения почему с -finline-functions не собирает?

Как выше уже написали — gcc решил не генерировать тело функции blink::StyleBuilderConverter::convertPositionLength, т.е. заинлайнил ее (собственно, эффект -finline).

Я бы на твоём месте пропатчил бы код: нашел бы ту функцию (метод) и добавил бы к ней __attribute__ ((noinline)). Т.е.

void __attribute__ ((noinline)) convertPositionLength()

Подробнее тут: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Fun...

Ну и, наверное, стоит написать багрепорт в gcc (если та функция явно не указана к inline).

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

Спасибо. Багрепорт написал.

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

Мой багрепорт закрыли, сказали что это не баг GCC и чт нужно накладывать патч и что возможно в 57-й версии этот баг пофиксили.

d-7
() автор топика

В случае с firefox, то с -O3 выходит довольно шустрый бинарник.

вау, запускается на 0.6 секунды быстрее на винте!

darkenshvein ★★★★★
()
Ответ на: комментарий от d-7

что возможно в 57-й версии этот баг пофиксили

Да кому этот пердолинг нужен. Chromium вообще еще в 2015 году прешел на Clang.

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

Chromium вообще еще в 2015 году прешел на Clang.

Что это значит и какие профиты? Я шлангом еще не пользовался.

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

Работает медленнее, зато нет плахого гну.

anonymous
()

57-й хромиум действительно собрался с -O3. Но в тесте никакого прироста это не дало. В лисе же это от 10 до 30% прироста.

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

это потому что v8 в составе хромиума собирается с -O3 незасвисимо от того, что ты там прописал в CFLAGS

Мне интересно, почему собранная лиса в тесте набирает 3400, а хромиум только 2500 (проприетарный хром 2400).

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

много причин может быть. тест синтетический в любом случае

eternal_sorrow ★★★★★
()
Ответ на: комментарий от d-7

Потому что подогнано под тесты. А вообще ставь ускоритель интернета и не парься.

unt1tled ★★★★
()

Пытаюсь собрать 57.0.2979.0, что с -O3 что без custom-cflags ниндзя фейлится, спасибо что хоть в самом начале сборки.

Лог: http://pastebin.com/jMx5j69j

Смущает еще коммит от мейнтейнера, может в этом дело?

use bundled jinja

d-7
() автор топика
Ответ на: комментарий от Deleted

Я собираю 57 ветку, только она с -O3 собирается. Проблема оказалась не в ниндзе.

Такой вопрос, если вот собранный пакет хромиума с -O2 занимает 66,5мб, а с -O3 75мб, то это плохо, лучше собирать с -O2 без кастом-сфлагов? По ощущениям, работает вроде так же.

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

не могу сказать. но то, что бинарник оказался большим размером - это логично, а то, что это плохо - это вряд ли.
я собираю с сustom-flags

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