All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Roland McGrath <roland@redhat.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	utrace-devel@redhat.com, linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 3/3] utrace-based ftrace "process" engine, v2
Date: Sun, 22 Mar 2009 13:08:11 +0100	[thread overview]
Message-ID: <20090322120811.GD19826@elte.hu> (raw)
In-Reply-To: <20090321214852.GA5262@redhat.com>


* Frank Ch. Eigler <fche@redhat.com> wrote:

> Hi -
> 
> On Sat, Mar 21, 2009 at 04:45:01PM +0100, Ingo Molnar wrote:
> > [...]
> > To me personally there are two big direct usability issues with 
> > SystemTap:
> > 
> >  1) It relies on DEBUG_INFO for any reasonable level of utility.
> >     Yes, it will limp along otherwise as well, but most of the
> >     actual novel capabilities depend on debuginfo. Which is an
> >     acceptable constraint for enterprise usage where kernels are
> >     switched every few months and having a debuginfo package is not
> >     a big issue. Not acceptable for upstream kernel development. 
> 
> In my own limited kernel-building experience, I find the debuginfo 
> data conveniently and instantly available after every "make".  Can 
> you elaborate how is it harder for you to incidentally make it 
> than for someone to download it?

Four reasons:

1)

I have CONFIG_DEBUG_INFO turned off in 99.9% of my kernel builds, 
because it slows down the kernel build times significantly:

  without:   4343.31 user 416.39 system 6:09.97 elapsed 1286%CPU 
  with:      4871.07 user 501.90 system 7:43.22 elapsed 1159 %CPU 

( x86 allyesconfig. On an obscenely overpowered Nehalem box
  with 12 GB of RAM. )

2)

When the kernel build becomes IO-bound, for example when i build 
over a distcc cluster (which is how i generally build my kernels) - 
or when others with less RAM build a debuginfo kernel, the ratio 
becomes even worse:

  without:   870.36 user 292.79 system 3:32.10 elapsed  548% CPU
  with:      929.65 user 384.55 system 8:28.70 elapsed  258% CPU

3)

Another metric. Here's an x86 defconfig (i.e. fairly regular config 
- not allyesconfig) build's size:

  with:     1645 MB
  without:   211 MB

Try to build 1.6 GB of dirty data on ext3 and run into an fsync() in 
your editor ... you'll sit there twiddling thumbs for a minute or 
more.

4)

Or yet another metric - Linux distro package overhead. Try 
installing a debuginfo package:

 # yum install kernel-debuginfo

 ==========================================
  Package                  Arch    Version
 ==========================================
 Installing:
  kernel-debuginfo         x86_64  2.6.29-0.258.rc8.git2.fc11   
 rawhide-debuginfo  294 M
 Installing for dependencies:
  kernel-debuginfo-common  x86_64  2.6.29-0.258.rc8.git2.fc11   
 rawhide-debuginfo   35 M

 Total download size: 329 M

That size of a _compressed_ debuginfo kernel package is obscene. We 
can fit 4 years of full Linux kernel Git history into that size - 
60,000+ commits, full metadata and full 20 million lines of code 
flux included!

Uncompressed it blows up to gigabytes of on-disk data.

And this download has to be repeated for _every_ minor kernel 
upgrade.

So when i come into a situation where i could use some debugging 
help ... i'd have to rebuild the kernel with DEBUG_INFO=y and i'll 
always notice when i have a debuginfo kernel because it's 
inconvenient.

The solution?)

Dunno - but i definitely think we should think bigger:

The fundamental disconnect i believe seems to come from the fact 
that most user-space projects are relatively small, so debuginfo 
bloat is a secondary issue there.

But for a project with the size of the kernel, even for moderate 
builds (not allyesconfig), it's a _much_ bigger deal. This has been 
known for a long time and the situation has become worse over the 
last two years, not better. (last time i checked the debuginfo 
package overhead it was below 150 MB)

A few random ideas:

Instead of trying to cache 2+GB of debuginfo for a 50 MB kernel 
source repo (+50 MB of genuine .o output) - just to be able to debug 
one or two source files [which is the typical scope of a debugging 
session], why not build debuginfo on the fly, when a debugging 
session requires it? Rarely do we need debuginfo for more than a 
fraction of the whole kernel.

( Yes, it needs a few smarts like knowing the SHA1 of the source
  code module that a particular kernel portion got built with, to 
  make sure the debuginfo is fresh and relevant - but nothing major. )

I mean, lets _use_ the fact that we have source code available, more 
intelligently. It takes zero time to build detailed debuginfo for a 
portion of a tree.

If 'download debuginfo' can be replaced with: 'have a recent Git 
repository of the distro kernel source', we'll have a _much_ more 
efficient use of resources all around.

	Ingo

  reply	other threads:[~2009-03-22 12:09 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-21  1:39 [PATCH 0/3] utrace Roland McGrath
2009-03-21  1:41 ` [PATCH 1/3] signals: tracehook_notify_jctl change Roland McGrath
2009-03-21  1:41 ` [PATCH 2/3] utrace core Roland McGrath
2009-03-21  8:49   ` Andrew Morton
2009-03-21 14:08     ` Renzo Davoli
2009-03-21 14:34       ` Ingo Molnar
2009-03-21 16:37         ` Renzo Davoli
2009-03-21 16:44           ` Ingo Molnar
2009-03-23  4:34             ` Roland McGrath
2009-03-23  4:35     ` Roland McGrath
2009-03-23 10:57     ` Will Newton
2009-03-21  1:42 ` [PATCH 3/3] utrace-based ftrace "process" engine, v2 Roland McGrath
2009-03-21  7:43   ` Ingo Molnar
2009-03-21  8:39     ` Andrew Morton
2009-03-21  9:12       ` Ingo Molnar
2009-03-21 11:19         ` Andrew Morton
2009-03-21 11:51           ` Frank Ch. Eigler
2009-03-21 12:04             ` Andrew Morton
2009-03-21 12:57               ` Frank Ch. Eigler
2009-03-21 15:45               ` Ingo Molnar
2009-03-21 20:35                 ` Diego Calleja
2009-03-22 12:17                   ` Ingo Molnar
2009-03-21 21:34                 ` Andrew Morton
2009-03-21 21:51                   ` Frank Ch. Eigler
2009-03-21 22:02                     ` Linus Torvalds
2009-03-21 22:20                       ` Frank Ch. Eigler
2009-03-21 22:37                         ` Alexey Dobriyan
2009-03-21 23:38                           ` Frank Ch. Eigler
2009-03-22 10:25                             ` Ingo Molnar
2009-03-23  5:33                               ` Roland McGrath
2009-03-23  5:20                             ` Roland McGrath
2009-03-22 12:37                       ` Ingo Molnar
2009-03-23 13:48                         ` Alexey Dobriyan
2009-03-23 15:14                           ` Oleg Nesterov
2009-03-23 21:44                             ` Theodore Tso
2009-03-30 22:18                               ` Andrew Morton
2009-03-30 22:52                                 ` Frank Ch. Eigler
2009-03-31  9:17                                 ` Peter Zijlstra
2009-03-31 11:27                                   ` Peter Zijlstra
2009-03-31 11:38                                   ` Frank Ch. Eigler
2009-03-31 16:25                                   ` Christoph Hellwig
2009-03-31 20:54                                     ` Roland McGrath
2009-03-21 21:48                 ` Frank Ch. Eigler
2009-03-22 12:08                   ` Ingo Molnar [this message]
2009-03-22 12:53                     ` Ingo Molnar
2009-03-23 20:25                     ` Frank Ch. Eigler
2009-03-23 20:39                       ` Linus Torvalds
2009-03-23  5:09               ` Roland McGrath
2009-03-24  5:29               ` Ananth N Mavinakayanahalli
2009-03-24  5:54                 ` Andrew Morton
2009-03-24  6:10                   ` Ananth N Mavinakayanahalli
2009-03-23  4:49         ` Roland McGrath
2009-03-23  6:34           ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090322120811.GD19826@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=fche@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roland@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=utrace-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.