LINUX.ORG.RU

PGO build - clang. Final phase

 ,


0

1

Собирается здесь, firefox 52.5.0esr - после прохождения фазы PGO generation на базе онлайн тестов браузера и готовым суммарным code.profdata, полученным по

% llvm-profdata merge code-*.profraw -o code.profdata

blitz@inode /var/spool/makepkg/pgo_data % ls
total 136756
drwxr-xr-x 2 blitz users     3488 Nov 21 21:07 ./
drwxr-xr-x 6 blitz users     4096 Oct 29 15:19 ../
-rw-r--r-- 1 blitz users 91810840 Nov 21 21:08 code.profdata
-rw-r--r-- 1 blitz users   209984 Nov 21 21:07 code-1718712249416572_0.profraw
-rw-r--r-- 1 blitz users   220008 Nov 21 21:07 code-2546540119411157864_0.profraw
-rw-r--r-- 1 blitz users    35224 Nov 21 21:07 code-4781168928902233276_0.profraw
-rw-r--r-- 1 blitz users   189568 Nov 21 21:07 code-4836264253050638106_0.profraw
-rw-r--r-- 1 blitz users    45784 Nov 21 21:07 code-14693927049293409313_0.profraw
-rw-r--r-- 1 blitz users   196520 Nov 21 21:07 code-15839640197120513530_0.profraw
-rw-r--r-- 1 blitz users 47157456 Nov 21 21:07 code-15890707916676272761_0.profraw
-rw-r--r-- 1 blitz users     7656 Nov 21 21:07 code-16342626091903381152_0.profraw
-rw-r--r-- 1 blitz users     1248 Nov 21 21:07 code-16379856314460437874_0.profraw

Есть один момент - яйца и курица.
clang выдаёт warnings.
До линковки файла с данными code.profdata находит ошибки
или после линковки файла выводится warning?

 1:34.28 libmozgtk.so
 1:34.60 libmemory_mozalloc.a
 1:34.64 warning: no profile data available for file "ReplaceMalloc.cpp" [-Wprofile-instr-unprofiled]
 1:34.64 1 warning generated.
 1:34.64 libreplace_malloc.so
 1:34.86 libmemory_mozalloc.a.desc
 1:35.10 warning: profile data may be out of date: of 26 functions, 1 has mismatched data that will be ignored [-Wprofile-instr-out-of-date]

make идёт в 6 потоков одновременно, и warning в консоле появляются не синхронно по времени непосредственно линковки файлов.
https://imgur.com/a/F6xY6


Если не с lto запускаться то предупреждение будет выдаваться до линковки (если с ним, то хз, может тоже до). Профильная информация нужна именно для оптимизаций. Тут странно что без модификации исходников профиль не подходит, но это уже нужно в потрохах копаться почему.

Но в любом случае можно запустить в 1 поток и посмотреть последовательность.

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

Но в любом случае можно запустить в 1 поток и посмотреть последовательность.

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

1:35.10 warning: profile data may be out of date: of 26 functions, 1 has mismatched data that will be ignored [-Wprofile-instr-out-of-date]
Код мозиллы достаточно ясно разбит на фрагменты.
И будет достаточно в moz.build src добавить в CFLAGS опцию -v, для просмотра последовательности компилятор-линкер.

А ещё прощё, спросить в mailing list Эл-Эл-Вэ-эМ )
«Выводится ошибка - До или После линковки?»

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

«Выводится ошибка - До или После линковки?»

Выводится «до» просто потому что профиль работает так и не может работать по-другому.

Про lto я сказал, т.к. там вызов линкера на самом деле вызывает компилятор. Просто схема несколько другая, визуально это можно не заметить.

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

т.к. там вызов линкера на самом деле вызывает компилятор.

Вот этот момент - самое интересное.
Видно лишь на htop при линковки достаточно крупных .o, как компилятор вызывает линкер и с параметрами CFLAGS/CXXFLAGS/LDFLAGS.

Выводится «до» просто потому что профиль работает так и не может работать по-другому.

Значит - до.
Интерес, собственно - какой именно .o вызвал этот warning?
В много-потоковом LTO link, задача сама по себе.

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