LINUX.ORG.RU

Lazarus/fpc медленная сборка на slackware-14.2 x64

 , , , ,


0

1

добрый день

на «subj-е» время сборки пустого проекта с одной кнопкой проходит крайне долго

исходники/проект находится на ram-disk-e

проверял в vbox-е на других «основных» дистрибьютивах, так-же замечено, что на х64 собирается значительно медленнее, но не так сильно, прим. 1-2 сек (из lazarus-gui)

так-же просил сделать тестовый замер у боевых программеров, аналогично, те-же результаты 1.8-2 сек

-------------------------------------------------
os/ver         arch        time/sec
-------------------------------------------------
slackware 12.2 x32 - gui  0.1 -  0.6 
slackware 14.2 x64 - gui  9.0 - 10.0  <-- subj
slackware 14.2 x64 - cli  8.0 - 15.0
etc/more/vbox  x32 - gui  0.5 -  1.0 
etc/more/vbox  x64 - gui  1.0 -  2.0 
ubuntu         x64 - gui  1.8 -  2.0
-------------------------------------------------

основные мысли

1. видна тенденция, что на х64 - сборка проходит дольше
2. в «основных» дистрибьютивах разница не значительная: 1-2 сек на х64, почти мгновенно на х32
3. сборка из ком.строки почему-то занимает больше времени, чем из гуев
4. без претензий на то, что повторная сборка тоже почти мгновенная итд итп...(кто-же спорит)
5. огромная разница между х32/64 замечена только на slackware

вот, последний пункт и вызывает больше всего непонимания (собственно, о ней и речь)
при всем, при том, что sl14.2_x64 даже без замеров, на глаз просто летает по сравнению с sl12.2_x32 (на одном железе и старом hdd)

по нек.выкусам из инета, «считается», что «это» из-за долгой линковки! тогда встречный вопрос, почему на старой х32-слаке сборка мгновенная?! :o)

набег на гугль особенно не помог, патчей на fpc/lazarus вообщем-то нету..., сборки, естественно, SlackBuild/самопальные
(пробовал всяко-разно, по многу и с внушением... не помогло)

выхлоп/сис.логи: ни чего информативного (по моему) не содержат, во вс.случае я не нашел

используемый софт:

fpc-3.0.4
lazarus-1.8.4
lazarus-2.0.4
lazarus-2.0.6
lazarus-2.0.8

лог сборки в консоли:

build from konsole: 8-15 sec

lazbuild ./project1.lpr
-->
main$ lazbuild ./project1.lpr
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-iWTOTP"
Hint: (lazarus) [RunTool] "/usr/bin/fpc" "-va" "compilertest.pas"
Info: (lazarus) Execute Title="Compile Project, Target: project1"
Info: (lazarus) Working Directory="/dev/shm/tmp/sun/ram/prj/"
Info: (lazarus) Executable="/usr/bin/fpc"
Info: (lazarus) Param[0]="-MObjFPC"
Info: (lazarus) Param[1]="-Scghi"
Info: (lazarus) Param[2]="-Cg"
Info: (lazarus) Param[3]="-O1"
Info: (lazarus) Param[4]="-g"
Info: (lazarus) Param[5]="-gl"
Info: (lazarus) Param[6]="-l"
Info: (lazarus) Param[7]="-vewnhibq"
Info: (lazarus) Param[8]="-Fi/dev/shm/tmp/sun/ram/prj/lib/x86_64-linux"
Info: (lazarus) Param[9]="-Fu/opt/lazarus-2.0.8/share/lazarus/lcl/units/x86_64-linux/gtk2"
Info: (lazarus) Param[10]="-Fu/opt/lazarus-2.0.8/share/lazarus/lcl/units/x86_64-linux"
Info: (lazarus) Param[11]="-Fu/opt/lazarus-2.0.8/share/lazarus/components/lazutils/lib/x86_64-linux"
Info: (lazarus) Param[12]="-Fu/opt/lazarus-2.0.8/share/lazarus/packager/units/x86_64-linux"
Info: (lazarus) Param[13]="-Fu/dev/shm/tmp/sun/ram/prj/"
Info: (lazarus) Param[14]="-FU/dev/shm/tmp/sun/ram/prj/lib/x86_64-linux/"
Info: (lazarus) Param[15]="-FE/dev/shm/tmp/sun/ram/prj/"
Info: (lazarus) Param[16]="-o/dev/shm/tmp/sun/ram/prj/project1"
Info: (lazarus) Param[17]="-dLCL"
Info: (lazarus) Param[18]="-dLCLgtk2"
Info: (lazarus) Param[19]="project1.lpr"
Hint: (11030) Start of reading config file /etc/fpc.cfg
Hint: (11031) End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 3.0.4 [2020/06/09] for x86_64
Copyright (c) 1993-2017 by Florian Klaempfl and others
(1002) Target OS: Linux for x86-64
(3104) Compiling project1.lpr
(3104) Compiling unit1.pas
/dev/shm/tmp/sun/ram/prj/unit1.pas(16,28) Hint: (5024) Parameter "Sender" not used
(9022) Compiling resource /dev/shm/tmp/sun/ram/prj/lib/x86_64-linux/project1.or
(9015) Linking /dev/shm/tmp/sun/ram/prj/project1
/usr/bin/ld: warning: /dev/shm/tmp/sun/ram/prj/link.res contains output sections; did you forget -T?
//
// основная задержка.
//
(1008) 60 lines compiled, 8.6 sec
(1022) 3 hint(s) issued

хотелось-бы ускорить процесс сборки хотя-бы до «средне-статистических» х64 :o)

высказываемся, тыкаем носом, посылаем по ссылкам, набрасываем на вентилятор, кидаемся чепчиками, меряемся резьбой итд... :о)

спасибо

p.s. после некоторого «набега» подозреваю что это «общеизвестная» трабла : старая nvidia-карта / дрова + современный линух/ядра"

nvidia gts250
nvidia_340.108 krn/drv
kernel 4.4.217

### UPDATE ###

протестировал на vbox-е

sl14.1 x32 -   1-2 sec
sl14.2 x32 -   1-2 sec
sl14.2 x64 - 12-13 sec

«все время» уходит на линковку (и, по моему, результаты вполне показательны?!)

проблема именно в skackware и именно в архитектуре x64 (так, что nvidia с дрово-ядами, вероятно, отпадает)

### UPDATE ###

после сборки из карент-ветки тормоза, вроде как поутихли

binutils 2.26  -> 2.33.1
oprofile 1.1.0 -> 1.3.0

встречный вопрос: как корректно и правильно можно обновить эти пакеты? сдается мне что вообще нельзя!

###!!! UPDATE !!!###

rebuild this pack/patches - Lazarus build is OK

binutils ( 2.26.1-1ubuntu1~16.04.8 )
https://packages.ubuntu.com/ru/source/xenial-updates/binutils

★★★★

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

strace'ом его и потом долго изучать, может всё время уходит на одно-два «залипания».

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

старая видеокарта, драйвера и ядра...

прочитал и ... «яблоком облагородился» ... дополнил топик
думаю, там проблема низкоуровневая и более, чем серьезная
хотелось по быстрому поинтересоваться, может кто уже сталкивался... :о)

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

Сам попробовал. Что -Xe, что -Xi, что -XX – в моём случае на скорость не влияет, одинаково быстро.

Можно ещё поставить флаг -va (он пишет время каждого шага) и посмотреть, где резче всего тормозит.

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

из топик-лога видно что тормозит на линковке, я специально вставил комментарий...

времянная привязка

[2.570] (9017) Using util /usr/bin/ld
/usr/bin/ld: warning: /dev/shm/tmp/sun/ram/prj/link.res contains output sections; did you forget -T?
[2.570] Executing "/usr/bin/ld" with command line "-b elf64-x86-64 -m elf_x86_64  --dynamic-linker=/lib64/ld-linux-x86-64.so.2    -L. -o /dev/shm/tmp/sun/ram/prj/project1 /dev/shm/tmp/sun/ram/prj/link.res"
[11.711] (1008) 22 lines compiled, 11.7 sec
[11.711] (1022) 2 hint(s) issued
sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 5)

«общеизвестная» трабла : старая nvidia-карта / дрова + современный линух/ядра"

Любители хипстерского модно-молодёжного шлака должны страдать.

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

должным образом, не жалуются... :о)

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

дак нет же :о)

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

может я плохо вникся?

если вы имеете в виду

Put -XS

то считаю, что на разных архитектурах x32/64 должно «как бы».. НУ КАК-БЫ ПРИМЕРНО одинаково работать... и как бы на х64 не медленее... при равных прочих условиях

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

попробовать, конечно, можно, но все равно остается непонятка / косячек...
- почему на других х64 - все более менее?
- получается, все равно, проблема именно в слаке-х64

к стати, в слаке 14.2 как раз «краеугольная» версия binutils-2.26

p.s. доберусь до железок, гляну...

спасибо

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

в слаке 14.2 как раз «краеугольная» версия binutils-2.26

Другую версию не поставить? Или собрать с дебиановскими патчами (или чем версия 2.26-3 отличается)?

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

вроде как решили проблему :о)

### UPDATE ###

собрал пакеты из ветки карент, обновил, теперь сборка в пределах 2-3 сек тестировал в vbox-e

slackware 14.2 x64

binutils-2.26 
-->
binutils-2.33.1

oprofile-1.1.0
-->
oprofile-1.3.0

спасибо!

sunjob ★★★★
() автор топика
Ответ на: вроде как решили проблему :о) от sunjob

вроде как решили проблему

это я поспешил... проблема как таковая на sl14.2 не рашена, из-за того, что менять эти пакеты «как бы нельзя»...

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

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