From: Yao Qi <yao@codesourcery.com>
To: Tom Tromey <tromey@redhat.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [RFC] GDB performance testing infrastructure
Date: Tue, 27 Aug 2013 06:21:00 -0000 [thread overview]
Message-ID: <521C452A.1000503@codesourcery.com> (raw)
In-Reply-To: <87eh9mdbj1.fsf@fleche.redhat.com>
On 08/22/2013 04:38 AM, Tom Tromey wrote:
> Yao> + GDB load a python script, in which some operations are performed and
> Yao> performance data (time and memory usage) is collected into a file.
> Yao> The performance test is driven by python, because GDB has a good
> Yao> python binding now. We can use python too to collect performance
> Yao> data, process them and draw graph, which is very convenient.
>
> I wonder whether there are cases where the needed API isn't readily
> exposed to Python.
>
> I suppose that is motivation to add them though:-)
Right, as we write more and more test cases, we do need more python
APIs for different components in GDB.
>
> Yao> 2. When we test the performance of GDB reading symbols in and
> Yao> looking for symbols, we either can fake a lot of debug
> Yao> information in the executable or fake a lot of `objfile',
> Yao> `symtab' and `symbol' in GDB. we may extend `jit.c' to add
> Yao> symbols on the fly. `jit.c' is able to add `objfile' and
> Yao> `symtab' to GDB from external reader. We can factor this part to
> Yao> add `objfile', `symtab', and `symbol' to GDB for the performance
> Yao> testing purpose. However, I may be wrong.
>
> I tend to think it is better to go through the normal symbol reading
> paths. The JIT code does things specially; and performance testing that
> may not show improvements or regressions in "ordinary" uses.
>
I am OK on this way. On each machine the performance testing is
deployed, people have to find some large executables with debug info,
and track the performance of GDB loading them and searching for some
symbols.
> Yao> * Run `single-step' with GDBserver
> Yao> ,----
> Yao> | $ make check RUNTESTFLAGS='--target_board=native-gdbserver single-step.exp'
>
> Do you anticipate that these tests will be run by default?
>
No.
> One concern I have is that if we generate truly large test cases, then
> running the test suite could become quite painful. Also, it seems that
> performance tests are best run on a quiet system -- so running them by
> default may in general not yield worthwhile data.
I plan to add a new makefile target 'check-perf' to run all performance
testing cases.
>
> Yao> Here is the performance data, and each row is about the time usage of
> Yao> handling loading and unloading a certain number of shared libraries.
> Yao> We can use this data to track the performance of GDB on handling
> Yao> shared libraries.
>
> Yao> ,----
> Yao> | solib 128 in 0.53
> Yao> | solib 256 in 1.94
> Yao> | solib 512 in 8.31
> Yao> | solib 1024 in 47.34
> Yao> | solib 2048 in 384.75
> Yao> `----
>
> Perhaps the .py code can deliver Python objects to some test harness
> rather than just printing data free-form? Then we can emit the data in
> more easily manipulated forms.
Agreed. In my experiments, I save test result in a python object, and
print them into plain text or json format later.
I'll post patches soon...
--
Yao (é½å°§)
next prev parent reply other threads:[~2013-08-27 6:21 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-14 13:01 Yao Qi
2013-08-21 20:39 ` Tom Tromey
2013-08-27 6:21 ` Yao Qi [this message]
2013-08-27 13:49 ` Agovic, Sanimir
2013-08-28 3:04 ` Yao Qi
2013-09-19 0:36 ` Doug Evans
2013-08-28 4:17 ` [RFC 0/3] GDB Performance testing Yao Qi
2013-08-28 4:17 ` [RFC 1/3] New make target 'check-perf' and new dir gdb.perf Yao Qi
2013-08-28 9:40 ` Agovic, Sanimir
2013-09-19 17:47 ` Doug Evans
2013-09-20 19:00 ` Tom Tromey
2013-09-20 18:59 ` Tom Tromey
2013-08-28 4:17 ` [RFC 2/3] Perf test framework Yao Qi
2013-08-28 9:57 ` Agovic, Sanimir
2013-09-03 1:45 ` Yao Qi
2013-09-03 6:38 ` Agovic, Sanimir
2013-09-19 19:09 ` Doug Evans
2013-09-20 8:04 ` Yao Qi
2013-09-20 16:51 ` Doug Evans
2013-09-22 2:54 ` Yao Qi
2013-09-22 23:14 ` Doug Evans
2013-09-20 17:12 ` Doug Evans
2013-08-28 4:17 ` [RFC 3/3] Test on solib load and unload Yao Qi
2013-08-28 4:27 ` Yao Qi
2013-08-28 11:31 ` Agovic, Sanimir
2013-09-03 1:59 ` Yao Qi
2013-09-03 6:33 ` Agovic, Sanimir
2013-09-02 15:24 ` Blanc, Nicolas
2013-09-03 2:04 ` Yao Qi
2013-09-03 7:50 ` Blanc, Nicolas
2013-09-19 22:45 ` Doug Evans
2013-09-20 19:19 ` Tom Tromey
2013-10-05 0:34 ` Doug Evans
2013-10-07 16:31 ` Tom Tromey
2013-09-22 6:25 ` Yao Qi
2013-09-23 0:14 ` Doug Evans
2013-09-24 2:31 ` Yao Qi
2013-10-05 0:37 ` Doug Evans
2013-09-20 19:14 ` Tom Tromey
2013-09-19 17:25 ` [RFC 0/3] GDB Performance testing Doug Evans
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=521C452A.1000503@codesourcery.com \
--to=yao@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=tromey@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