This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Improvement for post-handler only case in kprobes
- From: "Jun Koi" <junkoi2004 at gmail dot com>
- To: "Stone, Joshua I" <joshua dot i dot stone at intel dot com>
- Cc: systemtap at sources dot redhat dot com
- Date: Tue, 31 Oct 2006 18:32:02 +0900
- Subject: Re: Improvement for post-handler only case in kprobes
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=shlHcSHDwkmUUf4vI0c4Fq8fStfl0hefbQBG70uuGydZ5ntfPXc5htCZ6AkG/w0ccmfAsZHGekRmodj4OqyQ8hN7uMLLrNJkh8TTaZ7gARqjiUo8M0kazd+A8+z/81//8pEycmPf0cQIo/yZLFy/pZHGSCOiO+Evw+UYbNLsRmg=
- References: <C56DB814FAA30B418C75310AC4BB279DD7AB2B@scsmsx413.amr.corp.intel.com>
On 10/31/06, Stone, Joshua I <joshua.i.stone@intel.com> wrote:
On Sunday, October 29, 2006 6:02 AM, Jun Koi wrote:
> [...]
> In case we only has post-handler (NOT pre-handler), we can eliminate
> the single-mode step in the following way:
> - Still put BreakPoint at the registered address.
> - After the single-step, remove the old BreakPoint and put it at the
> current EIP (this is the place we switch out with single-step). Next
> time, we only need to handle the breakpoint, as it is hit right after
> the "original" breakpoint. Hence we dont need to get into the
> single-step mode any more. Of course this improves the performance.
So you're basically suggesting to turn a post-handler on a instruction
into a pre-handler on the following instruction?
Yes, that is my idea.
This is equivalent only if you can guarantee that the two instructions
will always execute together. Thus the first instruction cannot be a
control instruction (branch, jump, etc.), and the second cannot be the
target of any control instruction. You would have to do full
basic-block analysis to guarantee this condition.
Yes, unfortunately we cannot do it without some price paying.
In any case, I don't think you'll save anything, because whatever
instruction is replaced with a breakpoint still needs to be executed.
This happens out-of-line and single-stepped.
What we gain is performance improvement, because we no longer have to
single-step any more (in case we successfully boost with boostable
instruction). Meanwhile in the current approach, we always have to do
single-step for post-handler.
Thank you,
Jun
Josh