Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: David Carlton <carlton@math.stanford.edu>
Cc: Elena Zannoni <ezannoni@redhat.com>, gdb <gdb@sources.redhat.com>,
	Jim Blandy <jimb@redhat.com>
Subject: Re: DW_AT_specification and partial symtabs
Date: Fri, 13 Jun 2003 13:36:00 -0000	[thread overview]
Message-ID: <20030613133414.GB29641@nevyn.them.org> (raw)
In-Reply-To: <ro1adcngcv9.fsf@jackfruit.Stanford.EDU>

On Thu, Jun 12, 2003 at 03:16:58PM -0700, David Carlton wrote:
> On Thu, 12 Jun 2003 13:26:51 -0400, Elena Zannoni <ezannoni@redhat.com> said:
> 
> > I wonder, if we are not reaching the end of the usefulness of the
> > psymtabs.  I mean, if we start making the psymtab reader behave like
> > the symtab reader, how much faster is that going to be, how much
> > smaller, etc. 
> 
> Yeah, I'm starting to wonder that, too.  This particular situation is
> enough of an edge case that I'm actually tempted not to fix the
> psymtab reader until I get bug reports from users complaining about
> it, because if I do fix it completely then I'll probably make the
> psymtab reader slow, make it duplicate lots and lots of the
> functionality of the symtab reader, and do it in such a way as to
> cause code duplication that will lead to bugs as the two versions slip
> out of sync.  So I'm tempted to let things be for now, and wait until
> .debug_pubtypes comes along to save the day.
> 
> I guess another possibility would be to merge the symtab reader and
> psymtab reader, and have there be some variable 'reading_psyms' or
> whatever to control what sort of symbols we're creating, how deeply we
> descend into trees, etc.
> 
> It would be interesting to find out the following:
> 
> 1) How much is the savings for building a psymtab vs. building a
>    symtab?
> 
> 2) Where is that savings coming from?
> 
> If the savings largely comes from not descending into the bodies of
> functions, then the current structure should go: we should just merge
> the psymtab and symtab readers, but have some flag floating around
> that controls whether or not we descend into bodies of functions.

1) is very easy to measure.  GDB has a command line option --readnow
which forces symtabs to be read in immediately.  I tried my normal
performance testcase: a dummy main() linked to all of mozilla's
component libraries, with full stabs debug info.  Note stabs, not
DWARF2, so the timing may vary.  Also note that we duplicate psymtab
and symtab creation doing it this way, so it overestimates the cost. 
But it should give you an idea.

Psymbols 5.3:
gdb --batch -x a ./mozilla-libs  17.34s user 1.72s system 78% cpu 24.160 total

Psymbols and symbols 5.3:
gdb --batch -x a ./mozilla-libs --readnow  41.20s user 4.93s system 83% cpu 55.207 total

Psymbols CVS:
/opt/src/gdb/x86-as/gdb/gdb --batch -x a ./mozilla-libs  8.79s user 1.01s system 99% cpu 9.850 total

Psymbols and symbols CVS:
/opt/src/gdb/x86-as/gdb/gdb --batch -x a ./mozilla-libs --readnow 30.45s user 2.70s system 94% cpu 35.131 total

Note that none of those times is really acceptably fast, IMHO.  Probably
they all can be improved.  Looking at profiling data I see about three
seconds we can knock off the symbol reader and there are almost
certainly more.

Andrew's suggested in the past that (rather than all-at-once) we read
symbols lazily; that's essentially like the status quo but without a
separate psymtab table.  I don't know how much that saves us.

Keep in mind that symbols are (at present) rather memory-intensive
compared to psymbols.  Also keep in mind that we build more type
information when reading symbols - more time, more memory.

One quick thing we can do to speed up DWARF2 symbol reading is to
finish converting the rest of GDB to runtime-computed locations; then
we won't have to parse location lists or location expressions at
load time.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  reply	other threads:[~2003-06-13 13:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-12 17:01 David Carlton
2003-06-12 17:05 ` Daniel Jacobowitz
2003-06-12 17:10   ` David Carlton
2003-06-12 17:20   ` Elena Zannoni
2003-06-12 22:17     ` David Carlton
2003-06-13 13:36       ` Daniel Jacobowitz [this message]
2003-06-13 14:00         ` Elena Zannoni
2003-06-13 15:38           ` Andrew Cagney
2003-06-13 15:50             ` Daniel Jacobowitz
2003-06-13 15:57               ` Andrew Cagney
2003-06-13 16:24               ` Andrew Cagney
2003-06-13 16:34                 ` Daniel Jacobowitz
2003-06-17  0:09             ` David Carlton

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=20030613133414.GB29641@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=carlton@math.stanford.edu \
    --cc=ezannoni@redhat.com \
    --cc=gdb@sources.redhat.com \
    --cc=jimb@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox