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
next prev parent 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.