Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@mvista.com>
To: Andrew Cagney <ac131313@redhat.com>
Cc: wim delvaux <wim.delvaux@adaptiveplanet.com>, gdb@sources.redhat.com
Subject: Re: why is gdb 5.2 so slow
Date: Fri, 01 Nov 2002 10:14:00 -0000	[thread overview]
Message-ID: <20021101181502.GA11243@nevyn.them.org> (raw)
In-Reply-To: <3DC2B1FE.3020908@redhat.com>

On Fri, Nov 01, 2002 at 11:55:26AM -0500, Andrew Cagney wrote:
> 
> >Both.  Things we do wrong:
> >- GDB can't handle being told that just one thread is stopped.  If we
> >could, then we wouldn't have to stop all threads for shared library
> >events; there's a mutex in the system library so we don't even have to
> >worry about someone hitting the breakpoint.  We could also use this to
> >save time on conditional breakpoints; if we aren't stopping, why stop
> >all other threads?
> 
> [my guess] If the condition fails, we need to thread-hop.  If the 
> condition succeeds we need to stop all threads anyway.

Oh, blast it.  So we can't use this for general conditional
breakpoints.  If the condition is true we stop all threads before
giving a prompt; if the condition is false we stop all threads in order
to step over the breakpoint.

We could do thread-specific breakpoints hit by the wrong thread this
way... and thread-specific conditional breakpoints hit by the right
thread but with the condition false could _probably_ be done this way
but implementing it would be complicated.

Now, thread-specific breakpoints hit by the wrong thread could be used
to speed up "next"/software-single-step...

> Knowing that shlibs are wrapped in a mutex is definitly something to 
> exploit.
> 
> >- Removing all breakpoints, that's just wrong, there's a test in
> >signals.exp (xfailed :P) which shows why.  We should _only_ be removing
> >any breakpoints at the address we're hopping over.
> >
> >- No memory cache by default.  thread_db spends a LOT of time reading
> >from the inferior.
> 
> Based on a verbal description I was given, I believe that the current 
> dcache model is slightly wrong.  It should behave more like the regcache 
> vis:
> - ask for one register, get back the register file
> hence:
> - ask for one byte, get back one page, OR
> - ask for one byte, mmap the entire target process address space
> That way the target decides.
> 
> HP, long ago, was proposing zero copy target memory accesses.
> 
> >- No ptrace READDATA request for most Linux targets to read a large
> >chunk.  I keep submitting patches for some other ptrace cleanups that
> >will let me add this one to the kernel, and they keep hitting a blank
> >wall.  I may start maintaining 2.4 patches publicly and see if people
> >use them!
> 
> Uli (glibc), KevinB, MichaelS, and I happened to be in the same room and 
> talked about this.  /procfs was suggested as an alternative path.  For 
> ptrace() Uli indicated something about running out of register arguments 
> to use across a system call.

I don't know what he's referring to... wait... request, pid, len,
target address, buffer.  x86 can only do four.  Crappy but it could be
worked around.

In any case, this reminded me of something I keep forgetting.  Modern
kernels a ptrace-attached process can open the child's /proc/<pid>/mem
and read from it.  Writing to it is disabled, and mmap is not
implemented (oh the violence to the mm layer if that was allowed!). 
But reading from it is probably faster than PTRACE_PEEKTEXT.  I'll
investigate.

> >- Too many calls to thread_db in the LinuxThreads case.  It's a nice
> >generic layer but implemented such that the genericity (? :P) comes
> >with a severe cost in performance.  We need most of the layer; I've
> >seen the NGPT support patch for GDB, and it's very simple, precisely
> >because of this layer.  But we could do staggeringly better if we just
> >had a guarantee that there was a one-to-one, unchanging LWP<->thread
> >correspondence (no userspace scheduling etc.).  Both LinuxThreads and
> >the new NPTL library have this property.  Then we don't need to use
> >thread_db to access the inferior at all, only to collect new thread
> >information.
> 
> Apparently that guarentee is comming.  Solaris, for instance, is moving 
> back to 1:1.  My instinct is that reduceing the system calls will make a 
> far greater improvement than trimming back glibc.

Well, I'd hate to lose NGPT support; like it or not a lot of people
(especially in the carrier-grade space) are starting to use it.  At the
same time we don't need to be using the heavyweight interface when it
isn't needed.


-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


  reply	other threads:[~2002-11-01 18:14 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-31 17:32 wim delvaux
2002-10-31 19:51 ` Daniel Jacobowitz
2002-11-01  5:31   ` wim delvaux
2002-11-01  6:58     ` Andrew Cagney
2002-11-01  7:15       ` Daniel Jacobowitz
2002-11-01  8:55         ` Andrew Cagney
2002-11-01 10:14           ` Daniel Jacobowitz [this message]
2002-11-01 10:32             ` Andrew Cagney
2002-11-01 10:44               ` Kevin Buettner
2002-11-01  7:15       ` wim delvaux
2002-11-01  7:17         ` Daniel Jacobowitz
2002-11-01  8:13           ` wim delvaux
     [not found]       ` <redirect-4290038@silicondust.com>
2002-11-01  8:36         ` Nick Kelsey
2002-11-01 11:43 Howell, David P
2002-11-01 12:46 ` Andrew Cagney
2002-11-04 12:44   ` Jim Blandy

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=20021101181502.GA11243@nevyn.them.org \
    --to=drow@mvista.com \
    --cc=ac131313@redhat.com \
    --cc=gdb@sources.redhat.com \
    --cc=wim.delvaux@adaptiveplanet.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