LINUX.ORG.RU

Сборка ядра и флаги -O3 e.t.c

 , , , ,


0

1

Как можно просто и правильно указать флаги для gcc при сборке deb-пакетов ядра в Debian/Ubuntu?
Пробовал вставлять в ${HOME}/.bashrc это:

export CFLAGS="-march=native -O3 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"
результата нет - асм листинг с -O2 получается такой же как с -O3.
Собираю так:
$ make -j4 deb-pkg LOCALVERSION=oivey

Ops... а это не из-за graysky2/kernel_gcc_patch случаем?

★★★★★

Емнип -O3 включает векторизацию, но просто так использовать FPU в ядре нельзя. Это один из примеров почему ты так нарвёшься на непредсказуемые баги.

anonymous
()
Ответ на: комментарий от superuser

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

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

Так там их до фейхуа... Нельзя сразу где-то указать чтоли?

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

Хотелось бы узнать зачем? Ощутимо быстрее ядро работать не будет, а вот шанс словить нестабильность есть. Причём будет она только у тебя и только ты сам будешь с этим бороться. Скорее всего ничего страшного не произойдёт, я с -O3 баловался когда то, но никакого ощутимого выйгрыша не получил. IMHO смысла нет.

Jameson ★★★★★
()

В make menuconfig нашёл вот что:

choice
	prompt "Compiler optimization level"
	default CC_OPTIMIZE_FOR_PERFORMANCE

config CC_OPTIMIZE_FOR_PERFORMANCE
	bool "Optimize for performance (-O2)"
	help
	  This is the default optimization level for the kernel, building
	  with the "-O2" compiler flag for best performance and most
	  helpful compile-time warnings.

config CC_OPTIMIZE_FOR_PERFORMANCE_O3
	bool "Optimize more for performance (-O3)"
	depends on ARC
	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
	help
	  Choosing this option will pass "-O3" to your compiler to optimize
	  the kernel yet more for performance.

config CC_OPTIMIZE_FOR_SIZE
	bool "Optimize for size (-Os)"
	imply CC_DISABLE_WARN_MAYBE_UNINITIALIZED  # avoid false positives
	help
	  Choosing this option will pass "-Os" to your compiler resulting
	  in a smaller kernel.

endchoice
но как переключить CC_OPTIMIZE_FOR_PERFORMANCE_O3 на «y» не понятно

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

Я сделал это!!!

$ uname -r
5.6.8-nativeo3

$ ./simd-count i915.ko #-march=native -03
nop:		4242
call:		24888
i486:		2
i586:		1
i686:		3309
sse:		32
sse2:		54
sse4.1:		14
3dnowext:	18
movbe:		14
https://www.youtube.com/watch?v=5IgrinOfrq4

superuser ★★★★★
() автор топика
Последнее исправление: superuser (всего исправлений: 2)
Ответ на: комментарий от superuser
# было
$ systemd-analyze
Startup finished in 12.197s (firmware) + 10.516s (loader) + 3.096s (kernel) + 27.161s (userspace) = 52.971s
graphical.target reached after 27.144s in userspace
# стало
$ systemd-analyze
Startup finished in 12.248s (firmware) + 3.483s (loader) + 3.208s (kernel) + 22.939s (userspace) = 41.879s
graphical.target reached after 22.930s in userspace
superuser ★★★★★
() автор топика
Ответ на: комментарий от superuser

А это clang-ом:

$ cat /proc/version
Linux version 5.6.8-clnativeo3 (barin@HPC) (clang version 11.0.0-++20200427091409+1956a8a7cb7-1~exp1~20200427072009.1648) #1 SMP Thu Apr 30 04:13:08 MSK 2020

$ ./simd-count i915.ko #-march=native -03
nop:		6493
call:		26372
i486:		5
i586:		1
i686:		4125
sse:		26
sse2:		54
sse4.1:		10
sse4.2:		14
sse4a:		15
3dnowext:	16
movbe:		10
^ Кажетса gcc 9.3 круче чем clang-11 ...
$ systemd-analyze
Startup finished in 7.902s (firmware) + 10.655s (loader) + 3.224s (kernel) + 25.279s (userspace) = 47.062s
graphical.target reached after 25.263s in userspace
^ SSD нема, это с HDD

superuser ★★★★★
() автор топика
Последнее исправление: superuser (всего исправлений: 6)

Я смотрю, у сижников до сих пор любимое развлечение – это «Волшебник страны -O3». Перекладывать битики и байтики из стороны в сторону, обильно обмазывать их толстым слоем SSVX, AVSE и т.д. – это святое. Горбатого segmentation fault исправит, как говорится.

Разорванный Флакон

anonymous
()
Ответ на: комментарий от superuser

SSD нема

классика лоровских оптимизаторов, прямо из методички

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