Kernel GCC Optimizations
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
Also what about compiling against glibc 2.3.1 and gcc 3.2.x??
Thanks!
--Ro0tSiEgE
Quoted 1 line
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
* It might uncover subtle bugs that would otherwise not occur.
* Compiling with unusual options means that less people will know about any problems it causes you.
Quoted 1 line
Also what about compiling against glibc 2.3.1 and gcc 3.2.x??
The kernel does not use glibc functions, so you can compile the kernel and glibc with different compilers.
Bug reports about GCC 3.2.x compiled kernels will probably be welcomed by most developers.
John.
Quoted 2 lines
Quoted 1 line
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
* It might uncover subtle bugs that would otherwise not occur.
I wonder: for the sake of performance and good use of the precious clock- cycles, shouldn't there be made a start of fixing those bugs? Assuming that the bugs you're talking about are not compiler-bugs, they *are* bugs in the code that should be fixed, shouldn't they?
Quoted 2 lines
* Compiling with unusual options means that less people will know about any problems it causes you.
So, let's make it -O6 per default for 2.7.x/3.1.x?
Folkert
www.vanheusden.com/Linux
Quoted 9 lines
Quoted 4 lines
Quoted 2 lines
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
* It might uncover subtle bugs that would otherwise not occur.
I wonder: for the sake of performance and good use of the precious clock- cycles, shouldn't there be made a start of fixing those bugs? Assuming that the bugs you're talking about are not compiler-bugs, they *are* bugs in the code that should be fixed, shouldn't they?
There obviously are bugs in GCC, and the kernel team work around the known ones. This is part of the reason that there is a recommended compiler version. The Linux kernel also uses GCC compiler extensions, and those can change between GCC versions.
The kernel has bugs too, but if they are not triggered by the recommended version of GCC, then they might not get fixed immediately, especially if the fix is non-trivial.
Quoted 4 lines
Quoted 2 lines
* Compiling with unusual options means that less people will know about any problems it causes you.
So, let's make it -O6 per default for 2.7.x/3.1.x?
A higher -O setting does not necessarily mean better performance - loop unrolling is one compiler optimisation that I *think* is performed by GCC at high -O settings, and that *often* causes code to be slower.
John.
Quoted 7 lines
Quoted 2 lines
So, let's make it -O6 per default for 2.7.x/3.1.x?
A higher -O setting does not necessarily mean better performance - loop unrolling is one compiler optimisation that I *think* is performed by GCC at high -O settings, and that *often* causes code to be slower.
In all official releases of GCC, -Ox, x >= 4, has exactly the same effect as -O3. This is unlikely to change anytime soon.
-O3 enables exactly two optimizations relative to -O2:
-finline-functions and -frename-registers. This may or may not change in the future. It does *not* enable loop unrolling. -finline-functions is almost always a major performance loss, because it makes the code huge and blows out the I-cache. I'm not familiar with the performance effects of -frename-registers; it might be worth experimenting with just that switch.
zw
Quoted 11 lines · On Saturday 21 December 2002 04:10 pm, [email protected] wrote:
Quoted 4 lines
Quoted 2 lines
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
* It might uncover subtle bugs that would otherwise not occur.
I wonder: for the sake of performance and good use of the precious clock- cycles, shouldn't there be made a start of fixing those bugs? Assuming that the bugs you're talking about are not compiler-bugs, they *are* bugs in the code that should be fixed, shouldn't they?
Quoted 4 lines
Quoted 2 lines
* Compiling with unusual options means that less people will know about any problems it causes you.
So, let's make it -O6 per default for 2.7.x/3.1.x?
Let's not. I'd rather have the best kernel developers concentrating on finishing important kernel features rather than digging their way out of esoteric optimizer debugging sessions only to find it was a flaw in gcc. The difference in performance boost between -O2 and greater levels isn't usually enough to make a significant impact, not as significant as the introduction of important new features, for example.
---scott
Em Sat, Dec 21, 2002 at 07:20:28PM -0600, scott thomason escreveu:
Quoted 17 lines · On Saturday 21 December 2002 04:10 pm, [email protected] wrote:
Quoted 11 lines
Quoted 4 lines
Quoted 2 lines
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
* It might uncover subtle bugs that would otherwise not occur.
I wonder: for the sake of performance and good use of the precious clock- cycles, shouldn't there be made a start of fixing those bugs? Assuming that the bugs you're talking about are not compiler-bugs, they *are* bugs in the code that should be fixed, shouldn't they?
Quoted 4 lines
Quoted 2 lines
* Compiling with unusual options means that less people will know about any problems it causes you.
So, let's make it -O6 per default for 2.7.x/3.1.x?
Quoted 7 lines
Let's not. I'd rather have the best kernel developers concentrating on finishing important kernel features rather than digging their way out of esoteric optimizer debugging sessions only to find it was a flaw in gcc. The difference in performance boost between -O2 and greater levels isn't usually enough to make a significant impact, not as significant as the introduction of important new features, for example.
Sometimes even _reducing_ the optimization for performance level makes it faster, try with -Os. And this was already discussed here and elsewhere, reading the archives would help a lot avoiding adding more noise to the list.
- Arnaldo
Quoted 1 line · On Sat, 2002-12-21 at 17:10, [email protected] wrote:
So, let's make it -O6 per default for 2.7.x/3.1.x?
Maybe if we hate our instruction cache..
Robert Love
Hi Ro0tSiEgE!
Quoted 2 lines · On Sat, 21 Dec 2002, Ro0tSiEgE wrote:
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
Also what about compiling against glibc 2.3.1 and gcc 3.2.x??
I believe because of some assembler stuff that needs to be compiled as is and may not be optimized more that -O2 you cannot use -O3.
There is no problem compiling the kernel with glibc 2.3.1 and gcc 3.2.x.
Axel
Quoted 4 lines
Quoted 2 lines
Is there any risk using -O3 instead of -O2 to compile the kernel, and why?
Also what about compiling against glibc 2.3.1 and gcc 3.2.x??I believe because of some assembler stuff that needs to be compiled as is and may not be optimized more that -O2 you cannot use -O3.
Then selective compile with -O2 or -O6? Like; everything with assembly in it with -O2 and the rest with -O6.
Folkert
www.vanheusden.com/Linux