Re: source line numbers with x86_64 modules? [Was: Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact]

2009-01-12 Thread Eric W. Biederman
Mike Snitzer snit...@gmail.com writes: On Sat, Jan 10, 2009 at 8:28 PM, Ingo Molnar mi...@elte.hu wrote: Note, back when kdump was added to the kernel many moons ago i strongly supported it and helped out with the patches, etc. I still think it might have the potential to become big - but it

Re: source line numbers with x86_64 modules? [Was: Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact]

2009-01-11 Thread Andreas Dilger
On Jan 10, 2009 16:15 -0500, Theodore Ts'o wrote: In my experience, there are very few kernel versions and hardware for which kdump works. I've talked to the people who have to make kdump work, and every 12-18 months, with a new set of enterprise kernels comes out, they have to go and fix

Re: source line numbers with x86_64 modules? [Was: Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact]

2009-01-11 Thread Mike Snitzer
On Sun, Jan 11, 2009 at 5:11 AM, Andreas Dilger adil...@sun.com wrote: On Jan 10, 2009 16:15 -0500, Theodore Ts'o wrote: In my experience, there are very few kernel versions and hardware for which kdump works. I've talked to the people who have to make kdump work, and every 12-18 months,

Re: source line numbers with x86_64 modules? [Was: Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact]

2009-01-10 Thread Linus Torvalds
On Sat, 10 Jan 2009, Andi Kleen wrote: I think that's mostly because kexec from arbitary context is a somewhat unstable concept. I think that's the understatement of the year. We have tons of problems with standard suspend-to-ram, and that's when the suspend sequence has done its best to

Re: source line numbers with x86_64 modules? [Was: Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact]

2009-01-10 Thread Ingo Molnar
* Linus Torvalds torva...@linux-foundation.org wrote: As far as I'm concerned, digital cameras have been more useful than kernel dumps to kernel debugging. Yes, especially ones with VGA video capture. (I caught a oops+triple-fault crash via that trick once, which was not serial-console

[patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Ingo Molnar
* Linus Torvalds torva...@linux-foundation.org wrote: On Thu, 8 Jan 2009, H. Peter Anvin wrote: Right. gcc simply doesn't have any way to know how heavyweight an asm() statement is I don't think that's relevant. First off, gcc _does_ have a perfectly fine notion of how

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Ingo Molnar
* jim owens jow...@hp.com wrote: Ingo Molnar wrote: One interpretation of the numbers would be that core kernel hackers are more inline-happy, maybe because they think that their functions are more important to inline. Which is generally a fair initial assumption, but according to the

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Ingo Molnar wrote: My goal is to make the kernel smaller and faster, and as far as the placement of 'inline' keywords goes, i dont have too strong feelings about how it's achieved: they have a certain level of documentation value [signalling that a function is _intended_ to be

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, H. Peter Anvin wrote: As far as naming is concerned, gcc effectively supports four levels, which *currently* map onto macros as follows: __always_inline Inline unconditionally inlineInlining hint nothing Standard

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Dirk Hohndel
On Fri, 09 Jan 2009 08:34:57 -0800 H. Peter Anvin h...@zytor.com wrote: As far as naming is concerned, gcc effectively supports four levels, which *currently* map onto macros as follows: __always_inline Inline unconditionally inlineInlining hint

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Dirk Hohndel
On Fri, 9 Jan 2009 08:44:47 -0800 (PST) Linus Torvalds torva...@linux-foundation.org wrote: On Fri, 9 Jan 2009, H. Peter Anvin wrote: As far as naming is concerned, gcc effectively supports four levels, which *currently* map onto macros as follows: __always_inline Inline

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Dirk Hohndel wrote: Does gcc actually follow the promise? If that's the case (and if it's considered a bug when it doesn't), then we can get what Linus wants by annotating EVERY function with either __always_inline or noinline. __always_inline and noinline does work. -hpa -- H.

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Steven Rostedt
On Fri, 9 Jan 2009, H. Peter Anvin wrote: Dirk Hohndel wrote: Does gcc actually follow the promise? If that's the case (and if it's considered a bug when it doesn't), then we can get what Linus wants by annotating EVERY function with either __always_inline or noinline.

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Andi Kleen wrote: There's also one alternative: gcc's inlining algorithms are extensibly tunable with --param. We might be able to find a set of numbers that make it roughly work like we want it by default. We tried that. IIRC, the numbers mean different things for

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Steven Rostedt wrote: I vote for the, get rid of the current inline, rename __always_inline to inline, and then remove all non needed inlines from the kernel. This is what we do all the time, and historically have always done. But - CONFIG_OPTIMIZE_INLINING=y screws

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
I vote for the, get rid of the current inline, rename __always_inline to There is some code that absolutely requires inline for correctness, like the x86-64 vsyscall code. I would advocate to keep the explicit __always_inline at least there to make it very clear. inline, and then remove all

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Matthew Wilcox
On Fri, Jan 09, 2009 at 06:20:11PM +0100, Andi Kleen wrote: Also cc Honza in case he has comments (you might want to review more of the thread in the archives) I think this particular bug is already known and discussed: http://gcc.gnu.org/ml/gcc/2008-12/msg00365.html and it hints at being

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
On Fri, Jan 09, 2009 at 10:28:01AM -0700, Matthew Wilcox wrote: On Fri, Jan 09, 2009 at 06:20:11PM +0100, Andi Kleen wrote: Also cc Honza in case he has comments (you might want to review more of the thread in the archives) I think this particular bug is already known and discussed: I

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Matthew Wilcox
On Fri, Jan 09, 2009 at 06:47:19PM +0100, Andi Kleen wrote: On Fri, Jan 09, 2009 at 10:28:01AM -0700, Matthew Wilcox wrote: On Fri, Jan 09, 2009 at 06:20:11PM +0100, Andi Kleen wrote: Also cc Honza in case he has comments (you might want to review more of the thread in the archives)

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Dirk Hohndel
On Fri, 9 Jan 2009 18:47:19 +0100 Andi Kleen a...@firstfloor.org wrote: On Fri, Jan 09, 2009 at 10:28:01AM -0700, Matthew Wilcox wrote: On Fri, Jan 09, 2009 at 06:20:11PM +0100, Andi Kleen wrote: Also cc Honza in case he has comments (you might want to review more of the thread in the

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Matthew Wilcox wrote: That seems like valuable feedback to give to the GCC developers. Well, one thing we should remember is that the kernel really _is_ special. The kernel not only does things no other program tends to do (inline asms are unusual in the first place -

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Andi Kleen wrote: Universal noinline would also be a bad idea because of its costs (4.1% text size increase). Perhaps should make it a CONFIG option for debugging though. That's _totally_ the wrong way. If you can reproduce an issue on your machine, you generally don't

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Linus Torvalds wrote: So we do have special issues. And exactly _because_ we have special issues we should also expect that some compiler defaults simply won't ever really be appropriate for us. That is, of course, true. However, the Linux kernel (and quite a few other kernels) is a very

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Richard Guenther
On Fri, Jan 9, 2009 at 6:54 PM, Linus Torvalds torva...@linux-foundation.org wrote: On Fri, 9 Jan 2009, Matthew Wilcox wrote: That seems like valuable feedback to give to the GCC developers. Well, one thing we should remember is that the kernel really _is_ special. (sorry for not threading

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Richard Guenther
On Fri, Jan 9, 2009 at 8:21 PM, Andi Kleen a...@firstfloor.org wrote: GCC 4.3 should be good in compiling the kernel with default -Os settings. It's unfortunately not. It doesn't inline a lot of simple asm() inlines for example. Reading Ingos posting with the actual numbers states the

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Richard Guenther wrote: But it's also not inconceivable that gcc adds a -fkernel-inlining or similar that changes the parameters if we ask nicely. I suppose actually such a parameter would be useful for far more programs than the kernel. I think that the kernel is a perfect target to optimize

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
What happens when you say -fno-inline-functions-called-once? Does it disable inlining for those functions IN GENERAL, or just for the LARGE It does disable it in general, unless they're marked inline explicitely : The traditional gcc 2.x rules were: I Only inline what is marked inline (but

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Richard Guenther wrote: On Fri, Jan 9, 2009 at 8:21 PM, Andi Kleen a...@firstfloor.org wrote: GCC 4.3 should be good in compiling the kernel with default -Os settings. It's unfortunately not. It doesn't inline a lot of simple asm() inlines for example. Reading Ingos posting with the actual

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
On Fri, Jan 09, 2009 at 08:10:20PM +0100, Richard Guenther wrote: On Fri, Jan 9, 2009 at 8:21 PM, Andi Kleen a...@firstfloor.org wrote: GCC 4.3 should be good in compiling the kernel with default -Os settings. It's unfortunately not. It doesn't inline a lot of simple asm() inlines for

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Matthew Wilcox wrote: Now, I'm not going to argue the directIO code is a shining example of how we want things to look, but we don't really want ten arguments being marshalled into a function call; we want gcc to inline the direct_io_worker() and do its best to optimise

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Theodore Tso
On Fri, Jan 09, 2009 at 07:55:09PM +0100, Andi Kleen wrote: But _users_ just get their oopses sent automatically. So it's not about If they send it from distro kernels the automated oops sender could just fetch the debuginfo rpm and decode it down to a line. My old automatic user segfault

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Nicholas Miell wrote: Maybe the kernel's backtrace code should be fixed instead of blaming gcc. And maybe people who don't know what they are talking about shouldn't speak? You just loaded the whole f*cking debug info just to do that exact analysis. Guess how big it

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Theodore Tso
I'm beginning to think that for the kernel, we should just simply remove CONFIG_OPTIMIZE_INLINING (so that inline means always_inline), and -fno-inline-functions -fno-inline-functions-called-one (so that gcc never inlines functions behind our back) --- and then we create tools that count how many

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Steven Rostedt
On Fri, 9 Jan 2009, Theodore Tso wrote: I'm beginning to think that for the kernel, we should just simply remove CONFIG_OPTIMIZE_INLINING (so that inline means always_inline), and -fno-inline-functions -fno-inline-functions-called-one (so that gcc never inlines functions behind our back)

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Andi Kleen wrote: Fetch a gigabyte's worth of data for the debuginfo RPM? The suse 11.0 kernel debuginfo is ~120M. Still, though, hardly worth doing client-side when it can be done server-side for all the common distro kernels. For custom kernels, not so, but there you should already have

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Arjan van de Ven
On Fri, 09 Jan 2009 14:35:29 -0800 H. Peter Anvin h...@zytor.com wrote: Andi Kleen wrote: Fetch a gigabyte's worth of data for the debuginfo RPM? The suse 11.0 kernel debuginfo is ~120M. Still, though, hardly worth doing client-side when it can be done server-side for all the common

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Nicholas Miell
On Fri, 2009-01-09 at 12:29 -0800, Linus Torvalds wrote: On Fri, 9 Jan 2009, Nicholas Miell wrote: Maybe the kernel's backtrace code should be fixed instead of blaming gcc. And maybe people who don't know what they are talking about shouldn't speak? I may not know what I'm talking

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Sam Ravnborg
On Fri, Jan 09, 2009 at 11:44:10PM +0100, Andi Kleen wrote: Fetch a gigabyte's worth of data for the debuginfo RPM? The suse 11.0 kernel debuginfo is ~120M. How is this debuginfo generated? Someone have posted the following patch which I did not apply in lack of any real need. But maybe

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Fri, 9 Jan 2009, Nicholas Miell wrote: So take your complaint about gcc's decision to inline functions called once. Actually, the called once really is a red herring. The big complaint is too aggressively when not asked for. It just so happens that the called once logic is right now

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
What's the cost/benefit of that 4%? Does it actually improve performance? Especially if you then want to keep DWARF unwind information in memory in order to fix up some of the problems it causes? At that point, you lost dwarf unwind information has nothing to do with this, it doesn't tell

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Linus Torvalds
On Sat, 10 Jan 2009, Andi Kleen wrote: What's the cost/benefit of that 4%? Does it actually improve performance? Especially if you then want to keep DWARF unwind information in memory in order to fix up some of the problems it causes? At that point, you lost dwarf unwind information

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread Andi Kleen
I thought -Os actually disabled the basic-block reordering, doesn't it? Not in current gcc head no (just verified by stepping through) And I thought it did that exactly because it generates bigger code and much worse I$ patterns (ie you have a lot of conditional branch to other place

Re: [patch] measurements, numbers about CONFIG_OPTIMIZE_INLINING=y impact

2009-01-09 Thread H. Peter Anvin
Arjan van de Ven wrote: thinking about this.. making a pastebin like thing for oopses is relatively trivial for me; all the building blocks I have already. The hard part is getting the vmlinux files in place. Right now I do this manually for popular released kernels.. if the fedora/suse