Helping with KDE4 (valgrind)

Julian Seward julian at valgrind.org
Tue May 9 01:33:20 BST 2006


Hmm, I'm not in much of a position to advise on what's a good
serialising/deserialising arrangement.  I would say that minimising
the total number of bytes passed will probably help.  Why don't you 
just pass binary structs around?   Converting to/from ASCII takes
time.

J

On Tuesday 09 May 2006 01:01, John Tapsell wrote:
> Thanks.  I'll run that against trunk (I'm not really interested in
> 3.{4,5}  at the moment.  But I got the idea of what to do.
>
> It's about 200kb of data, but it's got to be serialised and
> deserialised.  (It's just a plain text dump.  Values are seperated
> with tabs).
>
> For example, if you do:  "ps?"  to ksysguardd, it replies:
> ksysguard> pid ppid name
>
> then you say "ps"  to it:
>
> 1 0 init
> 123 1 ksysguardd
>
> etc.  Of course with more fields and more rows, but that's it.  Would
> that be particularly expensive?
>
> On 5/8/06, Julian Seward <julian at valgrind.org> wrote:
> > >   It would be great if I could have help profilling ksysguard.
> >
> > Ok.  Here's what I did to get some profile data for the KDE 3.4.2
> > supplied on SuSE 10.  I decided to profile it using Josef W's
> > excellent "callgrind" profiler.
> >
> > I used the latest V sources because I happen to have them sitting
> > around on my machine :), because they are generally faster and
> > more robust than 3.1.1, and also because they contain callgrind as
> > a standard tool (unlike 3.1.1).  I suggest you do the same.  Easy:
> >
> >   svn co svn://svn.valgrind.org/valgrind/trunk valgrind
> >   cd valgrind
> >   ./autogen.sh
> >   ./configure --prefix=...
> >   make
> >   make install
> >
> > (see http://valgrind.org/downloads/repository.html for details)
> >
> > Since I did not know what bunch of processes ksysguard would create,
> > nor which are the important ones, I profiled all of them:
> >
> >   valgrind --tool=callgrind --simulate-cache=yes \
> >            --trace-children=yes -v ksysguard
> >
> > After a couple of minutes the app appeared.  I let it run for about
> > 20 minutes (you don't need to wait that long, but I did).  There were
> > 2 running processes taking up 100% CPU between them (remember, programs
> > run much slower under V).  Then I quit the app.
> >
> > The result is these 3 log files
> >
> > -rw-------   1 sewardj users  387788 2006-05-08 19:51 callgrind.out.21650
> > -rw-------   1 sewardj users       0 2006-05-08 19:51 callgrind.out.21652
> > -rw-------   1 sewardj users 4459626 2006-05-08 20:11 callgrind.out.21651
> >
> > I don't know what's with the .21652 one.
> >
> > I loaded the other two into the kcachegrind GUI (kcachegrind is a
> > standard part of KDE, I believe).  The .21650 one did not look
> > that interesting, but I did not know what I was looking at.  .21651
> > contains a lot more detail.  I switched to the 'cycle estimation' view. 
> > It seems QEventLoop::processEvents consumes 70.15% of the estimated
> > cycles, and the GUI shows lots more info.  Because this is a
> > non-developer build, I only have function names to look at, but if you
> > tell kcachegrind where your sources are and have built with -g (and
> > -O/-O2) you should get details down to the line level.
> >
> > A couple of other comments:
> >
> > - If you're just starting out profiling, you could omit
> >   --simulate-cache=yes.  This provides less useful numbers but it
> >   provides them sooner.
> >
> > - I was surprised that the two active processes (the viewer and the
> >   daemon?) consumed 100% CPU on my desktop 1.7GHz P4.  If we say that
> >   callgrind runs programs 50x slower than native (not sure of the exact
> >   numbers, but it's in that ballpark) then roughly we can say the two
> >   processes natively would take up >= 2% CPU, which seems like a lot
> >   (that's >= 34MHz worth of machine cycles).  So perhaps there's
> >   something expensive in there.
> >
> > Does that help?
> >
> > J




More information about the kde-core-devel mailing list