Оптимизация, оптимизация

В свете недавнего эпичного треда про скорость оперативной памяти занялся оптимайзом системы, и который раз натыкаюсь вот на это:

# equery uses <package>
...
 - - custom-cflags    : Build with user-specified CFLAGS (unsupported)

Флаг все-таки работает? И если работает, то стоит ли его использовать?
Хитрые USE и CXX флаги приветствуются)

PS:
CoreDuo T2390
CFLAGS="-O2 -march=native -fomit-frame-pointer -pipe -msse -msse2 -mssse3 -mmmx"

Ох уж эта оптимизация...

gcc довольно умён, вот выдржка из его мана:

  -msse                       Включить поддержку                                
                              внутренних функций MMX и SSE                      
                              при генерации кода                                
  -msse2                      Включить поддержку                                
                              внутренних функций MMX, SSE и                     
                              SSE2  при генерации кода                          
  -msse3                      Включить поддержку                                
                              встроенных функций MMX, SSE,                      
                              SSE2, SSE3 при генерации кода
  -mssse3                     Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in
                              functions and code generation

так что логично будет оставить с CFLAGS из всего зоопарка только -mssse3
(ну и -m3dnow если камень умеет)

Логично вообще -O2

Логично вообще -O2 -march=native -fomit-frame-pointer -pipe.

тогда уж CFLAGS="-O2 -pipe

тогда уж CFLAGS="-O2 -pipe -march=native -m3dnow -mssse3"

а разве -march=native не

а разве -march=native не подразумевает, что -m3dnow -mssse3 -msse4.1 и тд включиться автоматом если процессор их поддерживает? Дело в том что судя по ману вроде как -march=native достаточно, однако уже несколько раз встречал в нете, что народ включает отдельно еще чтото. И вот тут снова.

Уже обсуждалось.

Уже обсуждалось.
-march=native подразумевает что -m3dnow -mssse3 -msse4.1 поддерживаються железом и могут быть использованы компилятором (могут, а не будут), но только если это указанов в явном виде в ебилде. Если нет то нет. Т.о. если не указать эти флаги то только часть софта будет собрана с оптимизациями под все эти наборы инструкций, та часть где ебилдописатели озаботились этим вопросом.

Ещё раз: -march=native не форсирует использование sse и им подобных, это нада задавать в явном виде либо для каждого исходника в ебилде, либо глобально в /etc/make.conf

если честно то соверщенно не

если честно то соверщенно не понял, что означает "могут быть использованы компилятором (могут, а не будут)"
если можно дайте пожалуйста ссылку на обсуждение.

Вот цитата из мана gcc-4.3.3
-march=native will enable all instruction subsets supported by
the local machine (hence the result might not run on different
machines).

я вроде сам уже понял.

я вроде сам уже понял. -march=native не делает каких либо сверхусилий по определению конкретно твоего проца и всех наборов комманд, которые он поддерживает, он лишь определяет наиболее близкий уже существующий "профиль"(в моём случае core2, в нем включены mmx, sse, sse2, sse3, ssse3), но мой проц хоть и core 2 duo, он penryn и поддерживает дополнительно не входящую в "профиль" sse4.1. Поэтому я должен либо отдельно указать sse4.1 для моего проца, либо дождаться какогото релиза gcc в котором сделают новый профиль, более близкий к моему конкретному процу(разработчики говорили что возможно он будет называться core2-sse4.1). Тогда -march=native сам определит этот более близкий профиль и тогда sse4.1 включится само.

просто в мане не очень ясно написано

haku написал(а):-march=native

haku написал(а):
-march=native подразумевает что -m3dnow -mssse3 -msse4.1 поддерживаються железом и могут быть использованы компилятором (могут, а не будут), но только если это указанов в явном виде в ебилде

Э-э-э? В каком ебилде? CFLAGS, по-моему, тупо подставляются в параметры gcc, при чём тут ебилды?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Оно соберётся. С твоими

Оно соберётся. С твоими флагами, а не со своими. Однако, как подсказывает unsupported, потом тебя никто не будет слушать о том, что оно сломало то-то и то-то и в результате накрылось то-то и то-то. Обычно, если пакет имеет такой флаг, это уже означает, что его не стоит использовать.

При сборке mplayer с этим

При сборке mplayer с этим флагом mplayer себя начинает вести довольно не стабильно.

а есть какие-нибудь флаги

а есть какие-нибудь флаги хитрые, для ядра с 64Gb support? а то производительность на sysbench падает раза в полтора по сравнению с 4Gb.

а у тебя 64гб есть? У меня

а у тебя 64гб есть?

У меня сисбенч тоже странности какието выдавал на
нормальном железе пропускная способность памяти 225мб
памяти 2гб так и не понял как бороться.

у меня 4, но с 4Gb support

у меня 4, но с 4Gb support видит только 3 (предел для обычных 32 разрядных систем). Поэтому и 64gb support.

а если PAE в ядре включить?

а если PAE в ядре включить?

PAE включен

PAE включен

A она , PAE ,

A она , PAE , железка/контроллер есть ? :)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

мммм.. /proc/cpuinfo говорит

мммм.. /proc/cpuinfo говорит что проц знает PAE. Этого не достаточно? Просто проц не x86_64, видимо из-за этого потери скорости.

;) slep@mini ~ $ ssh

;)
slep@mini ~ $ ssh root@gw
Password:
Last login: Wed Jun 3 12:30:34 EEST 2009 from 10.0.0.5 on pts/0
gw ~ # uname -a
Linux gw 2.6.28-hardened-r7-gw #1 Sun May 24 23:21:51 EEST 2009 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
gw ~ # cat /proc/cpuinfo |grep pae
flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 mmx fxsr sse

Нет , недостаточно

http://ru.wikipedia.org/wiki/PAE написал(а):
Для использования 36-разрядной адресации памяти необходима поддержка расширения физических адресов на аппаратном уровне системной платы и ...

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

а может просто стоит собрать

а может просто стоит собрать 64битный gentoo? =)
как бы всякие плюшки типа PAE (а именно оно и обеспечивает 64Гбайт суппорт) заметно просаживают скорость работы с памятью из за особенностей адресации

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

CoreDuo T2390 да развеж он

CoreDuo T2390
да развеж он 64битный?

а про просаживание скорости заметно же, поэтому и спарашиваю -_-
правда разницу вижу только в бенчмарках)

chemikadze написал(а):CoreDuo

chemikadze написал(а):
CoreDuo T2390
да развеж он 64битный?

А разве нет?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

до последнего был уверен что

до последнего был уверен что нет -_-

можно ли как-нибудь пересобрать текущую систему в 64 бита или всесносить нужно?

все, разобрался, нашел в

все, разобрался, нашел в факе. сессию досдам и соберу -_-

Этот 64битный. А как бы

Этот 64битный. А как бы самому зайти на сайт интела и посмотреть?
или на худой конец попробовать загрузить 64битный лайвсд?

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

Можно просто grep lm

Можно просто grep lm /proc/cpuinfo > /dev/null && echo Have 64 || echo Fail =)

Intel(R) Atom(TM) CPU N270

Intel(R) Atom(TM) CPU N270 @ 1.60GHz

Have 64??? =))

в вики про это писали,

в вики про это писали, последние атомы, четверки и (вроде) целероны 64бит умеют тоже

slep@mini ~ $ uname -mpi686

slep@mini ~ $ uname -mp
i686 Intel(R) Atom(TM) CPU 330 @ 1.60GHz
slep@mini ~ $ cat /proc/cpuinfo |grep flags
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl tm2 ssse3 cx16 xtpr pdcm lahf_lm

Atom 3xx only

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Цитата:Atom 3xx only в том то

Цитата:
Atom 3xx only

в том то и дело =)

$ uname -mp
i686 Intel(R) Atom(TM) CPU N270 @ 1.60GHz
$ cat /proc/cpuinfo | grep flags
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm lahf_lm

это я к тому, что грепать lm тут неуместно

flags : fpu vme de

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm

имелся в виду скорее всего этот lm. ручками нужно искать, в скрипте не учли всякие lahf_lm)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".