Страница 1 из 1
Простое ядро под процессор
Добавлено: 2009-08-19 21:13:23
Dmitriy_K
Подскажите, пожалуйста, надеюсь несложный вопросик.
Хочется сделать простой файлик сборки нового ядра с PAE и оптимизацией под I686_CPU.
Произойдёт ли оптимизация, если указать так:
Или указывать свой проц бесполезно? Из-за того, что есть своё перечисление процессоров в GENERIC или в принципе?
Re: Простое ядро под процессор
Добавлено: 2009-08-19 21:27:36
Alex Keda
оставьте GENERIC и не парьтесь.
Re: Простое ядро под процессор
Добавлено: 2009-08-19 21:35:56
Dmitriy_K
То-есть, никакой потери производительности для Xeon не будет, если оставить весь список серии i386?
Re: Простое ядро под процессор
Добавлено: 2009-08-19 21:49:37
Fioktist
а /etc/make.conf есть еще
man make.conf
CPUTYPE=i686
из под урла на 249 странице прочитай два абзаца внизу
у меня книга этого автора, второе издание 2009г, куда приятней с бумаги читать...
Re: Простое ядро под процессор
Добавлено: 2009-08-19 22:08:11
Dmitriy_K
Fioktist писал(а):а /etc/make.conf есть еще
man make.conf
CPUTYPE=i686
Спасибо! Это реально стандартное решение для ядра, или интуитивное?
Насчёт полезности для компилляции софта не спорю, хотя там, вроде, есть и автоматическая оптимизация. (Или я не прав?)
Re: Простое ядро под процессор
Добавлено: 2009-08-19 22:20:59
Fioktist
Michael Lucas, Absolute FreeBSD 2009 писал(а):Если указать тип CPU в файле /etc/make.conf, компилятор попытается оптимизировать програмное обеспечение под указанный микропроцессор.
Это может положительно сказаться на производительности в случае обновления операционной системы из исходных кодов. FreeBSD оптимизирует под конкректный процессор не только саму операционную систему, но и любое програмное обеспечение сторонних производителей, которое будет устанавливаться в последствии.
На отдельной машине всегда устанавливайте значение параметра CPUTYPE в соответствии с фактическим типом микропроцессора. если сборка производится на одной машине, а затем через NFS экспортируются каталоги /usr/obj и /usr/src для других машин, то чтобы выполнять на них обновление, минуя этап компиляции, устанавливайте значение CPUTYPE равным самому слабому CPU всех систем
и тд... многабукв... неасилить всю книжку
от себя могу добавить при использовании данной опции ВСЕ работает субъективно - заметно быстрее.
На сайте у lissayra.su есть статья с /etc/make.conf где я первый раз небездумно попробывал
стянуть некоторые опции для своего make.conf и ощутил прирост производительности при компилинге...
Изящно настроенный make.conf увеличение производительности на ...цать процентов.
Re: Простое ядро под процессор
Добавлено: 2009-08-19 23:44:29
Alex Keda
а я завязал с этим...
на последнем из серверов, где я такое делал, в make.conf пару лет назад закомментил эту опцию:
Код: Выделить всё
p3-800# head -7 /etc/make.conf
#
NO_INET6="YES"
# commented by lissyara 2007-09-03 in 3:45 MSK
# [классический секс]. третья смена железа на машине за две недели
#CPUTYPE=i686
p3-800#
был AMD - оптимизация под него, до него был второй пень, до него первый, после AMD снова интель - но уже третий...
а скомпиленное с оптимизацией жёсткой под одно - иногда очень старнно ведёт себя на другом процессоре.
вплоть до полной неработоспособности
Re: Простое ядро под процессор
Добавлено: 2009-08-20 0:16:35
Fioktist
но там есть более узкое определение для каждого камня, я делал для проца от AMD (athlon-xp 2000),
так там в /etc/make.conf и вписывал строку
CPUTYPE?=athlon-xp
www.lissyara.su писал(а):
http://www.lissyara.su/?id=1326
# Тип проца у меня p3 (ниже у меня он также фигурирует как pentium3)
# Intel x86 architecture:
# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
# (Intel CPUs) nocona pentium4[m] prescott pentium3[m] pentium-m
# pentium2 pentiumpro pentium-mmx pentium i486 i386
# (Via CPUs) c3 c3-2
# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
# AMD64 architecture: opteron, athlon64, nocona
#
Intel ia64 architecture: itanium2, itanium
Re: Простое ядро под процессор
Добавлено: 2009-08-20 10:12:34
Dmitriy_K
Ещё раз большое спасибо!
Всё прочитал. В том числе: /usr/share/examples/etc/make.conf
Насчёт оптимизации под процессор окружения ядра и программ вопров нет.
Но, как я понял, эта установка не относится собственно к сборке ядра. Ведь не зря же, например, в GENERIC прописаны свои собственные установки.
Или всё-таки опции make.conf их перебивают?
Мне интересно, имеют ли установки, прописанные в своём файле сборки, приоритет над указанными в GENERIC, если указывать:
Например, в файле сборки PAE есть такой приоритет опций. Только там не упоминается процессор.
Re: Простое ядро под процессор
Добавлено: 2009-08-20 10:59:40
Alex Keda
к поддерживаемым в процессоре ядрам - не имеет.
вот тока у меня в каокй-то моммент компилятор перестал работатьь

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

аккуратней с экспериментами

Re: Простое ядро под процессор
Добавлено: 2009-08-26 17:28:11
Dmitriy_K
Экспериментально наткнулся на неточность документации по make.conf для 64-битной версии FreeBSD (AMD64). Там полностью повторён /usr/share/examples/etc/make.conf 32-битной версии. Но попытка сборки портов при выставленной оптимизации для Xeon 5160
не проходит, пришлось убрать. Не знаю, можно ли там получить пользу от установки CPUTYPE?=core2, не стал экспериментировать.
Может, кому пригодится.
Re: Простое ядро под процессор
Добавлено: 2009-08-26 18:36:08
Гость
gcc42 не поддерживает -march=core2, кою поддерживает gcc43 и выше. Если нужна оптимизация под конкретный тип процессора, то лучше использовать -march=native, бо на Core2 кроме GCC включает еще несколько опций. Вот, например, как себя ведет gcc45
Код: Выделить всё
$ gcc45 -E -v -march=core2 - </dev/null |& fgrep cc1
/usr/local/libexec/gcc45/gcc/x86_64-portbld-freebsd8.0/4.5.0/cc1 -E -quiet -v - -march=core2
$ gcc45 -E -v -march=native - </dev/null |& fgrep cc1
/usr/local/libexec/gcc45/gcc/x86_64-portbld-freebsd8.0/4.5.0/cc1 -E -quiet -v - -march=core2 -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -mtune=core2
а CPUTYPE=core2 на самом деле
Код: Выделить всё
. if ${MACHINE_ARCH} == "i386"
. if ${CPUTYPE} == "core" || ${CPUTYPE} == "core2"
CPUTYPE = prescott
. endif
. elif ${MACHINE_ARCH} == "amd64"
. if ${CPUTYPE} == "prescott" || ${CPUTYPE} == "core2"
CPUTYPE = nocona
. endif
. endif
коя выглядит как жалкая попытка эмуляции поведения CPUTYPE=native.
Re: Простое ядро под процессор
Добавлено: 2009-08-26 22:23:02
Dmitriy_K
Знание - ужасающая сила!
Временами страшновато пользоваться.
Пока не понял можно ли вставить в make.conf "-march=native", но иногда можно, конечно, использовать вручную.
Re: Простое ядро под процессор
Добавлено: 2009-08-26 23:10:40
Гость
не,
CPUTYPE?=native вставляет в CFLAGS -march=native
точно также
CPUTYPE?=pentium4 вставляет в CFLAGS -march=pentium4
руками CFLAGS лучше не трогать, если не уверен. CPUTYPE больше нигде и не используется кроме как для -march= (в
/usr/share/mk/bsd.cpu.mk). Судя по невнятному (ни номера PR, ни объяснения причины сей подход лучше native) комитту r166069 des@'а, этот core2 можно игнорировать.[1]
[1] даже хуже. clang/llvm не умеет определять тип процессора по -march=native, так что приходится использовать хак против хака в виде
Код: Выделить всё
.if ${CC:Mclang} || ${CXX:Mclang}
CPUTYPE?="core2"
.else
CPUTYPE?=native
.endif
где "core2" специально стоит в кавычках, чтобы "автоопределение" в bsd.cpu.mk не работало.
Re: Простое ядро под процессор
Добавлено: 2009-08-26 23:16:01
Dmitriy_K
Оффигеть!
Спасибо огромное!