Оптимизация, оптимизация
chemikadze 2 июня, 2009 - 01:45
В свете недавнего эпичного треда про скорость оперативной памяти занялся оптимайзом системы, и который раз натыкаюсь вот на это:
# 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 довольно умён, вот выдржка из его мана:
так что логично будет оставить с 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
Э-э-э? В каком ебилде? 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
Нет , недостаточно
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
А разве нет?
Текстовый редактор 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 в том то
в том то и дело =)
$ 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)