This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug testsuite/11514] nd_syscall.exp takes more than 10 times longer than syscall.exp testcase
- From: "jistone at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sources dot redhat dot com
- Date: 21 Apr 2010 19:05:39 -0000
- Subject: [Bug testsuite/11514] nd_syscall.exp takes more than 10 times longer than syscall.exp testcase
- References: <20100419113044.11514.mjw@redhat.com>
- Reply-to: sourceware-bugzilla at sourceware dot org
------- Additional Comments From jistone at redhat dot com 2010-04-21 19:05 -------
(In reply to comment #10)
> commit bd6593518895fc613b973500c03a3b844bbe68c5
> Author: Mark Wielaard <mjw@redhat.com>
> Date: Tue Apr 20 22:06:15 2010 +0200
>
> PR11514 Only expand kallsyms once for kprobe_derived_probe_group.
>
> kprobe_register is really expensive when used for multiple symbol
> based probes since it will call kallsyms_expand_symbol over and over
> to uncompress the kernel symbol table. So flip the comparison loop
> inside out by looping once over the kernel symbol table.
>
> * tapsets.cxx (kprobe_derived_probe_group::emit_module_decls): Declare
> kprobe_resolve helper function.
> (kprobe_derived_probe_group::emit_module_init): Call kprobe_resolve
> through kallsyms_on_each_symbol. Never register through symbol name,
> just check that address has been filled in by kprobe_resolve.
There's a gotcha about this that I mentioned on IRC. On most archs,
kprobe_lookup_name() is a simple wrapper around kallsyms_lookup_name(), so this
new optimization is perfectly valid.
But on PPC64, it's a little more complicated to deal with function descriptors.
In some cases the returned address is actually a pointer to the real address,
and in other cases it tries to search again with a '.' added to the name. We
need to deal with this too if we're bypassing kprobe_lookup_name().
--
http://sourceware.org/bugzilla/show_bug.cgi?id=11514
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.