The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Раздел полезных советов: Компиляция Linux-ядра под заданный ..., auto_tips (??), 20-Мрт-11, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


10. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 20-Мрт-11, 21:43 
Вот сейчас проверял у меня ps af | grep cc1 выдаёт следующее:

\_ /usr/lib/gcc/i686-linux-gnu/4.4.5/cc1 -quiet -nostdinc -I/usr/src/linux-source-2.6.35/arch/x86/include -Iinclude -Iubuntu/include -D__KERNEL__ -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DKBUILD_STR(s)=#s -DKBUILD_BASENAME=KBUILD_STR(apic_noop) -DKBUILD_MODNAME=KBUILD_STR(apic_noop) -isystem /usr/lib/gcc/i686-linux-gnu/4.4.5/include -include include/generated/autoconf.h -MD arch/x86/kernel/apic/.apic_noop.o.d arch/x86/kernel/apic/apic_noop.c -D_FORTIFY_SOURCE=2 -quiet -dumpbase apic_noop.c -m32 -msoft-float -mregparm=3 -mpreferred-stack-boundary=2 -march=i686 -mtune=core2 -mtune=generic -maccumulate-outgoing-args -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -auxbase-strip arch/x86/kernel/apic/.tmp_apic_noop.o -g -O2 -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -Werror-implicit-function-declaration -Wno-format-security -Wno-sign-compare -Wframe-larger-than=1024 -Wdeclaration-after-statement -Wno-pointer-sign -p -fno-strict-aliasing -fno-common -fno-delete-null-pointer-checks -freg-struct-return -ffreestanding -fstack-protector -fno-asynchronous-unwind-tables -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-strict-overflow -fconserve-stack -fstack-protector -o -

то есть как вы можете наблюдать опции -march=i686 -mtune=core2 проставлены. У меня процессор core 2 duo, и эти опции компилятор автоматически поставил вместо -march=native
видимо лучше жёстко проставить -march=core2 для более лучшей оптимизации, ибо как извесно опции -march=i686 -mtune=core2 выдают код который будет работать на процессорах от pentiumpro(i686) и выше, при жёстком указании -march=core2 будет выдавать код чисто для core2

Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

12. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от pavlinux (ok), 20-Мрт-11, 23:02 
>  и эти опции компилятор автоматически поставил вместо -march=native

Сам придумал?


native
               This selects the CPU to tune for at compilation time
               by determining the processor type of the compiling
               machine.  Using -mtune=native will produce code
               optimized for the local machine under the constraints
               of the selected instruction set.  Using -march=native
               will enable all instruction subsets supported by the
               local machine (hence the result might not run on
               different machines).

-fno-omit-frame-pointer, тоже само поменялось?

Ответить | Правка | Наверх | Cообщить модератору

13. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 20-Мрт-11, 23:11 
Не понял чо не так?
Поправьте если лучше знаете.
Насчёт -fno-omit-frame-pointer не в курсе, не специалист
Ответить | Правка | Наверх | Cообщить модератору

17. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +1 +/
Сообщение от pavlinux (ok), 20-Мрт-11, 23:34 
> Не понял чо не так?
> Поправьте если лучше знаете.
> Насчёт -fno-omit-frame-pointer не в курсе, не специалист

Долго рассказывать. Хотите поменять флаги компиляции ядра?!
Тогда меняйте их:

Глобальные, в основном Makefile (где-то в районе 230 строки)
HOSTCFLAGS=
HOSTCXXFLAGS=

Тут низя писать флаги оптимизации под конкретный процессор !!!

можно типа -06/-O99, -frecord-gcc-switches, -g0 -funroll-all-loops
          -ftree-vectorize -fno-inline-functions-called-once
          -fmerge-all-constants, ну и так далее...
---

Для оптимизации под конкретный процессор надо менять в arch/x86/Makefile (под 32 бита в arch/x86/Makefile_32.cpu)
там найти свой проц, после строки export BITS есть тройка ifeq-else-endif

Дописывать можно к последнему KBUILD_CFLAGS

Тут можно всё, кроме FPU/SSE/MMX/3DNOW, -mcmodel=kernel не менять!!!


Ответить | Правка | Наверх | Cообщить модератору

19. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 21-Мрт-11, 00:01 

> Глобальные, в основном Makefile (где-то в районе 230 строки)
> HOSTCFLAGS=
> HOSTCXXFLAGS=
> Тут низя писать флаги оптимизации под конкретный процессор !!!
> можно типа -06/-O99, -frecord-gcc-switches, -g0 -funroll-all-loops
>           -ftree-vectorize -fno-inline-functions-called-once
> Для оптимизации под конкретный процессор надо менять в arch/x86/Makefile (под 32 бита
> Тут можно всё, кроме FPU/SSE/MMX/3DNOW, -mcmodel=kernel не менять!!!

вот жесть то! можот ну его нафик?

Ответить | Правка | Наверх | Cообщить модератору

21. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от pavlinux (ok), 21-Мрт-11, 00:47 
> вот жесть то! можот ну его нафик?

Конечно нафиг, там и так всё нормально, тем более, что
-pipe и -fomit-frame-pointer и так по умолчанию есть.

Ответить | Правка | Наверх | Cообщить модератору

14. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от Аноним (-), 20-Мрт-11, 23:12 
-mtune=core2 у вас проставлены потому что вы при конфигурировании ядра задали "Processor family" core2
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

15. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 20-Мрт-11, 23:13 
> -mtune=core2 у вас проставлены потому что вы при конфигурировании ядра задали "Processor
> family" core2

вы уверены?

Ответить | Правка | Наверх | Cообщить модератору

16. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от Аноним (-), 20-Мрт-11, 23:29 
у меня -march выставляет только в зависимости от опции в конфиге "Processor family", а опции из CFLAGS не применяются. проверял с export CFLAGS="-march=native -O3", в итоге выходило -march=(то что я выбрал в конфиге, пробовал несколько вариантов k8 и x86-64, а native должен дать amdfam10) и -O2
Ответить | Правка | Наверх | Cообщить модератору

18. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +1 +/
Сообщение от pavlinux (ok), 20-Мрт-11, 23:42 
> у меня -march выставляет только в зависимости от опции в конфиге "Processor
> family", а опции из CFLAGS не применяются. проверял с export CFLAGS="-march=native
> -O3", в итоге выходило -march=(то что я выбрал в конфиге, пробовал
> несколько вариантов k8 и x86-64, а native должен дать amdfam10) и
> -O2

Да не использует ядро переменную CFLAGS из окружения.
Проверить легко - надо задать неправильные флаги:

export CFLAGS="-mtune=shit -march=govno"  

---

Хотите заменить, тогда задаёте

# export HOSTCFLAGS="-O99 -mtune=native -funroll-all-loops"
# export KBUILD_CFLAGS="-O99 -mtune=native -funroll-all-loops"
# make -e menuconfig
# make -e

Целиком менять не надо, скопируйте старые HOSTCFLAGS и KBUILD_CFLAGS
и добавьте или замените нужное. Так как make -e перепишет полностью
эту переменную из Makefile вашими.

Если всё поломаете, сами виноваты. :)

Ответить | Правка | Наверх | Cообщить модератору

20. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 21-Мрт-11, 00:28 
В общем вывод делаем такой:
1. переменные окружения на параметры компиляции не влияют
2. Оптимизация под процессор выставляется в опциях ядра make menuconfig "Processor family"
Ответить | Правка | Наверх | Cообщить модератору

22. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +1 +/
Сообщение от pavlinux (ok), 21-Мрт-11, 00:56 
> В общем вывод делаем такой:
> 1. переменные окружения на параметры компиляции не влияют
> 2. Оптимизация под процессор выставляется в опциях ядра make menuconfig "Processor family"

для 32-х битов есть ещё REGPARM
на Core2Duo/Athlon64 и выше можно врубить CONFIG_JUMP_LABEL
на gcc 4.х и выше CONFIG_OPTIMIZE_INLINING
на AMD64: SMT (Hyperthreading) scheduler  вырубить, врубить только  Multi-core scheduler


Вам ещё страниц 500, про оптимизацию ядра? :)

Ответить | Правка | Наверх | Cообщить модератору

23. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 21-Мрт-11, 13:03 
Что то не нашёл я у себя в ядре опций REGPARM и CONFIG_JUMP_LABEL
CONFIG_OPTIMIZE_INLINING есть
может у меня ядро не то? 2.6.35
Не 500 страниц я ниасилю, тем более наверняка на инглише,
к оптимизации ядра я уже давно перегорел, сижу на стандартном и не дёргаюс.

Но эти опции в переменных окружения всё равно полезно выставлять, так как те программы которые ты будешь компилировать из исходников будут компиляться с этими параметрами

Ответить | Правка | Наверх | Cообщить модератору

39. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от JL2001 (ok), 24-Мрт-11, 13:37 
>> В общем вывод делаем такой:
>> 1. переменные окружения на параметры компиляции не влияют
>> 2. Оптимизация под процессор выставляется в опциях ядра make menuconfig "Processor family"
> для 32-х битов есть ещё REGPARM
> на Core2Duo/Athlon64 и выше можно врубить CONFIG_JUMP_LABEL
> на gcc 4.х и выше CONFIG_OPTIMIZE_INLINING
> на AMD64: SMT (Hyperthreading) scheduler  вырубить, врубить только  Multi-core scheduler
> Вам ещё страниц 500, про оптимизацию ядра? :)

мне бы скриптик который проанализировав моё железо выставил нужные настройки под мою машину.. но это же линукс, тут так походу не принято, автоматизация для слабых виндузятников

Ответить | Правка | К родителю #22 | Наверх | Cообщить модератору

40. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от andrewlap (?), 24-Мрт-11, 17:44 

> мне бы скриптик который проанализировав моё железо выставил нужные настройки под мою
> машину.. но это же линукс, тут так походу не принято, автоматизация
> для слабых виндузятников

весь виндавозный мир сидит на дефолтовом ядре и не гундит

Ответить | Правка | Наверх | Cообщить модератору

41. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от pavlinux (ok), 24-Мрт-11, 18:02 
>[оверквотинг удален]
>>> 1. переменные окружения на параметры компиляции не влияют
>>> 2. Оптимизация под процессор выставляется в опциях ядра make menuconfig "Processor family"
>> для 32-х битов есть ещё REGPARM
>> на Core2Duo/Athlon64 и выше можно врубить CONFIG_JUMP_LABEL
>> на gcc 4.х и выше CONFIG_OPTIMIZE_INLINING
>> на AMD64: SMT (Hyperthreading) scheduler  вырубить, врубить только  Multi-core scheduler
>> Вам ещё страниц 500, про оптимизацию ядра? :)
> мне бы скриптик который проанализировав моё железо выставил нужные настройки под мою
> машину.. но это же линукс, тут так походу не принято, автоматизация
> для слабых виндузятников

Ну в Венде тоже есть ключи реестра, которые, кроме особо посвящённых,
не знают как использовать.

Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

48. "Компиляция Linux-ядра под заданный процессор в Debian/Ubuntu"  +/
Сообщение от Аноним (-), 25-Мрт-11, 18:38 
Кстати, gcc 4.5 (может и в более ранних версиях) выдаёт чуть больше оптимизаций, чем просто подстраивание march под ваш проц. Там что-то типа cach-line-size и что-то ещё в этом роде. Сейчас под рукой нет. Конфетка, вобщем. Кстати, собирать _только_ едро с march=native и проч. не вижу особо смысла без пересборки, хотя бы, мира. Там то уж оптимизации побольше подразгуляются, ИМХО.
Ответить | Правка | К родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру