LINUX.ORG.RU

[gentoo] оптимизация

 


0

0

Intel Core 2 Duo P7550, 32K L1i, 32K L1d, 3072K L2

ACCEPT_KEYWORDS="~amd64"
CFLAGS="-march=native -mtune=native -mssse3 -msse4 -msahf -mcx16 -mfpmath=sse --param l1-cache-size=32 --param l2-cache-size=3072 -fomit-frame-pointer -ftree-vectorize -O2 -pipe -floop-interchange -floop-block -floop-strip-mine"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3 -s"
gcc собран с graphite. несмотря на всё это, ощутимого прироста не получил, только временами проглядываются какие-то копейки.

ещё один вопрос. На сайте megabaks описан процесс оптимизации ядра путём подстановки этих флагов в HOSTCFLAGS & HOSTCXXFLAGS. проделав эту процедуру (даже -O3 поставил) не получил в итоге вообще никакого прироста. ЧЯДНТ?

★★★★★

>ощутимого прироста не получил

Еще один >.<

путём подстановки этих флагов в HOSTCFLAGS & HOSTCXXFLAGS


Они где-то там фильтруются, емнип.

devl547 ★★★★★
()

-march=native - задает и -msse* и --param размер кешей, использовать все это в куче излишне

-msse4 не поддерживается core2 , только core i7 (i5 ...)
для core2 можно указывать -msse4.1

графит ( -floop-interchange -floop-block -floop-strip-mine ) дает прирост в пределах 1-2%

-fomit-frame-pointer для amd64 указывать не нужно

Прирост по сравнению с чем?

Sylvia ★★★★★
()

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

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

-mfpmath=sse для 64 битной платформы также не указывается
-msahf -mcx16 задается -march=native

итого

-O2 -ftree-vectorize -march=native (графит)

если -O3 то можно не указывать -ftree-vectorize

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

ну на 4.5 графит больше даёт...впрочем как и сам 4.5 даже без графита

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

ядро вообще не использует SSE )
там -mno-sse -mno-mmx ставится
и -march= задается соответственно указанному в .config причем не -march , а -mtune

-march идет generic для amd64

флаги /etc/make.conf для сборки ядр не используются

Sylvia ★★★★★
()

>ощутимого прироста не получил
И не получите. Софт нужно руками оптимизировать, переписывать. А оптимизация компилятора - лишь приятое дополнение.

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

здорово, ясно. может ещё что-нибудь полезное пропустил?

Прирост по сравнению с чем?


с голым -march=i686

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


рисует, и они не изменились

Они где-то там фильтруются, емнип


где именно? для разных частей - разные флаги, или одни на всё? если одни на всё - где фильтруются и как правильно поставить свои?

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

у меня враппер съедает -g )

многие пакеты все равно подставляют -g

в случае -g0 -g все равно будет эффективен последний указаный флаг

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

т.е. сравнение i686 и x86_64 ?
это бенчмарки надо делать, на десктопе по ощущениям разницы может и не чувствоваться

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

так бинарники все равно strip'аются
профит только во времени сборки, хотя если -g0 или -g не указан, то информация для отладки не генерируется все равно

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

сама писала, fgcc

$cat /etc/fgcc.conf
cc45
c++45
-march=pentium4 -msse2 EnsureOptS --param l1-cache-size=32 --param l2-cache-size=1024 -fexcess-precision=fast
no
-Werror -g* -march* -mtune* -msse* -mcpu*


не пользуюсь я gcc-config гентушным )

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

>где именно? для разных частей - разные флаги, или одни на всё? если одни на всё - где фильтруются и как правильно поставить свои?

некоторые пакеты фильтруют флаги, оставляя только -march=
например wine, сделано это вообщем-то потому что сам пакет использует уже достаточно оптимальные флаги ( -O3 для ffmpeg например ) или не любит чтобы экстремалили ( wine, xulrunner )

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

>флаги /etc/make.conf для сборки ядр не используются

копировал туда вручную из make.conf

сравнение i686 и x86_64


сравнение i686 без оптимизаций с x86_64 с включенной векторизацией и графитом

на десктопе по ощущениям разницы может и не чувствоваться


грустно... ожидал большего

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

не привыкла, мне он не удобен, свое и удобнее и предоставляет больше контроля

/usr/bin :$ls -l gcc g++
lrwxrwxrwx 1 root root 5 Mar 9 12:59 g++ -> syscc
lrwxrwxrwx 1 root root 5 Mar 9 12:59 gcc -> syscc

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

скажите честно, генту ставили ради «разгона» или чтобы контролировать дистрибутив? чтобы посторонние дядьки-майнтейнеры не указывали какую версию чего ставить и какие у нее должны быть зависимости ?

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

+1

в 4.5 графит был практически полностью переписан, что вообщем-то в лучшую сторону, и код стал получше генерироваться и сам GCC в ICE не выпадает

Sylvia ★★★★★
()

Больше пользы от USE-флагов, быстрой файловой системы и опций ядра. Компилятор расстраивает.

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

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

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


если вы про стандартные комплектации большинства дистров, то почти везде и всегда можно добавить нужное\убрать лишнее\пересобрать нужное, было бы желание - вопрос лишь в удобстве процесса.

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

>с графитом лучше собирать с 4.5 - на 4.4 даже регрессии бывают...

кажется попал как раз в зону регрессий ) ещё в самом начале хотел размаскировать 4.5, но почитал треды про него и что-то поостыл в стремлении

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

4.5.0 использовать не стоит, он глючный, стоит подождать релиза 4.5.1
или использовать снапшот с svn 4_5-branch

4.4 ветка без графита достаточно стабильна на x86, и насколько я (минимально) ее использовала с графитом - на x86-64
профита от графита на x86 от gcc 4.4 практически нет, иногда даже регрессии в производительности, не говоря уже о проблемах со стабильностью

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

>мозг сломаешь только )

поэтому

вопрос лишь в удобстве процесса

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

собственно, всё ясно, подожду пока 4.5.1 и позанимаюсь другими вещами - пересобрать мир с другими флагами всегда успею. благодарю за помощь. :)

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

> не получил в итоге вообще никакого прироста
OH SHI~! Криокамеры текут, спасайся, кто может!

PayableOnDeath
()

> На сайте megabaks описан процесс оптимизации ядра путём подстановки этих флагов в HOSTCFLAGS & HOSTCXXFLAGS. проделав эту процедуру (даже -O3 поставил) не получил в итоге вообще никакого прироста.

Тупишь. С -O3 ядро болучается громоздкое и медленнее, чем с -Os (не говоря уже об -O2)

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