From: Yao Qi <yao@codesourcery.com>
To: <gdb-patches@sourceware.org>
Subject: [PATCH 0/5] Cache code access for disassemble
Date: Wed, 23 Oct 2013 08:29:00 -0000 [thread overview]
Message-ID: <1382516855-32218-1-git-send-email-yao@codesourcery.com> (raw)
Hi,
In general, this patch series improve the speed of disassemble in
remote debugging, by means of caching code access.
When I think about code cache, I realize not only code cache but
also target_dcache can be per-address-space. OTOH, when the patch
'[RFA] Use data cache for stack accesses' was reviewed, the
intention of getting target_dcache per-address-space was mentioned, but
it was not done because we don't have an address_space structure at
that moment (2009-07). 'struct address_space' was added by
multi-executable patch in 2009-09. Patch #1 adds REGISTRY for
'struct address_space' and patch #2 get variable 'target_dcache'
per-address-space, and add a 'struct target_dcache' to hold all
caches, which paves a way for code-cache.
Patch #3 adds most of the stuff to cache code access, similar to
the code cache stack access. Patch #4 is to use target_read_code
to read code when doing disassembly. Patch #5 is the doc and news
entry (mostly copied from 'set stack-cache'.).
The performance is measured by disassembling three large functions
in GDB (such as evaluate_subexp_standard) twice, and here is the
result I got:
The number of 'm' packets:
Original Patched
83054 1257
74240 844
74240 844
Original Patched
disassemble cpu_time 3.48 0.56
disassemble cpu_time 2.95 0.36
disassemble cpu_time 1.78 0.47
disassemble wall_time 6.07428908348 0.628926992416
disassemble wall_time 5.23267793655 0.413200855255
disassemble wall_time 3.2379360199 0.554491043091
disassemble vmsize 61152 61204
disassemble vmsize 61544 61596
disassemble vmsize 61544 61596
Regression tested on x86_64-linux. I also tried using target_read_code
for skip_prologue, but the change is quite specific to each target
(using target_read_code in *-tdep.c files for reading code). I plan to
do it in next step.
*** BLURB HERE ***
Yao Qi (5):
Add REGISTRY for struct address_space.
Associate target_dcache to address_space.
set/show code-cache
Use target_read_code in disassemble.
set/show code-cache NEWS and doc
gdb/NEWS | 6 ++
gdb/disasm.c | 2 +-
gdb/doc/gdb.texinfo | 10 ++++
gdb/progspace.c | 14 ++---
gdb/progspace.h | 22 +++++++-
gdb/target.c | 148 +++++++++++++++++++++++++++++++++++++++++++++------
gdb/target.h | 5 ++
7 files changed, 180 insertions(+), 27 deletions(-)
--
1.7.7.6
next reply other threads:[~2013-10-23 8:29 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-23 8:29 Yao Qi [this message]
2013-10-23 8:29 ` [PATCH 2/5] Associate target_dcache to address_space Yao Qi
2013-10-23 16:37 ` Tom Tromey
2013-10-24 8:33 ` Yao Qi
2013-10-28 20:49 ` Tom Tromey
2013-10-28 21:51 ` Doug Evans
2013-10-23 8:29 ` [PATCH 5/5] set/show code-cache NEWS and doc Yao Qi
2013-10-23 15:25 ` Eli Zaretskii
2013-10-24 8:26 ` Yao Qi
2013-10-24 15:21 ` Eli Zaretskii
2013-10-25 9:35 ` Yao Qi
2013-10-25 10:01 ` Eli Zaretskii
2013-11-02 0:25 ` Yao Qi
2013-11-02 7:06 ` Eli Zaretskii
2013-10-23 8:29 ` [PATCH 4/5] Use target_read_code in disassemble Yao Qi
2013-10-23 8:29 ` [PATCH 3/5] set/show code-cache Yao Qi
2013-10-25 7:47 ` Doug Evans
2013-10-25 14:35 ` Yao Qi
2013-10-25 15:57 ` Doug Evans
2013-10-26 13:24 ` Yao Qi
2013-10-28 18:33 ` Doug Evans
2013-10-23 8:29 ` [PATCH 1/5] Add REGISTRY for struct address_space Yao Qi
2013-10-28 20:46 ` Tom Tromey
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=1382516855-32218-1-git-send-email-yao@codesourcery.com \
--to=yao@codesourcery.com \
--cc=gdb-patches@sourceware.org \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).