From: Ingo Molnar <mingo@kernel.org>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: "Frank Ch. Eigler" <fche@redhat.com>,
linux-arch@vger.kernel.org,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Sandeepa Prabhu <sandeepa.prabhu@linaro.org>,
x86@kernel.org, lkml <linux-kernel@vger.kernel.org>,
"Steven Rostedt (Red Hat)" <rostedt@goodmis.org>,
systemtap@sourceware.org, "David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH -tip v6 00/22] kprobes: introduce NOKPROBE_SYMBOL(), cleanup and fixes crash bugs
Date: Fri, 20 Dec 2013 11:46:15 +0100 [thread overview]
Message-ID: <20131220104615.GA22609@gmail.com> (raw)
In-Reply-To: <52B40E79.8040701@hitachi.com>
* Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote:
> (2013/12/20 17:20), Ingo Molnar wrote:
> >
> > * Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> wrote:
> >
> >>> But a closer look indicates that the insertion of kprobes is
> >>> taking about three (!!) orders of magnitude longer than before, as
> >>> judged by the rate of increase of 'wc -l
> >>> /sys/kernel/debug/kprobes/list'.
> >>
> >> Right, because kprobes are not designed for thousands of probes.
> >
> > Then this needs to be fixed, because right now this bug is making it
> > near impossible to properly test kprobes robustness.
> >
> > For example a hash table (hashed by probe address) could be used in
> > addition to the list, to speed up basic operations.
>
> kprobe itself is already using hlist (6bits hash table).
> Maybe we'd better expand the table bits. However, the iteration
> of the list on debugfs is just doing seq_printf()s. I'm not exactly
> sure what Frank complaints about...
Well, Frank reported that the test he performed takes hours to finish,
and he mentioned a specific script line he used to produce that:
# stap -te "probe kprobe.function("*") {}"
I suspect an equivalent perf probe sequence would be something like:
# for FUNC in $(grep -iw t /proc/kallsyms | cut -d' ' -f3); do date; perf probe -a $FUNC; done
(totally untested.)
Can you reproduce that slowdown, using his method?
I can reproduce one weirdness, with just 13 probes added, 'perf probe
-l' [which should really be 'perf probe list'!] executes very slowly:
# perf stat --null --repeat 3 perf probe -l
Performance counter stats for 'perf probe -l' (3 runs):
0.763640098 seconds time elapsed ( +- 1.61% )
0.7 seconds is ridiculously long.
Also, here's another bugreport as well: while playing around with
'perf probe' I found that its usability is still very poor. For
example I mis-remembered the syntax and typed the obvious way to :
# perf probe add __schedule
Failed to find path of kernel module.
Failed to open debuginfo file.
Error: Failed to add events. (-2)
why the heck does a simple and obvious 'perf probe add' not work, why
is the strange syntax of 'perf probe -a' forced? Every other perf
subcommand uses clean command spaces - see for example 'perf bench'.
Also, the error message is totally misleading and uninformative to the
level of being passive-aggressive. An error message should directly
relate to the mistake performed and should give a good way out of the
situation. Who the heck cares that there was no debuginfo file to
open? Who cares that the 'path of kernel module' was not found? It has
no relation to the bug.
An informative error message would be:
# perf probe add __schedule
Error: Could not find symbol 'add'.
and that's it. No 'failed to add events' message - obviously the event
is not enabled if we cannot find the symbol name.
Thanks,
Ingo
next prev parent reply other threads:[~2013-12-20 10:46 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-19 9:03 [PATCH -tip v6 00/22] kprobes: introduce NOKPROBE_SYMBOL(), cleanup and fixes crash bugs Masami Hiramatsu
2013-12-19 9:03 ` [PATCH -tip v6 01/22] kprobes: Prohibit probing on .entry.text code Masami Hiramatsu
2013-12-19 9:03 ` [PATCH -tip v6 02/22] kprobes: Introduce NOKPROBE_SYMBOL() macro for blacklist Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 03/22] [BUGFIX] kprobes/x86: Prohibit probing on debug_stack_* Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 04/22] [BUGFIX] x86: Prohibit probing on native_set_debugreg/load_idt Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 05/22] [BUGFIX] x86: Prohibit probing on thunk functions and restore Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 06/22] [BUGFIX] x86: Prohibit probing on memcpy/memset Masami Hiramatsu
2013-12-19 9:37 ` Jovi Zhangwei
2013-12-20 2:37 ` Masami Hiramatsu
2013-12-20 3:07 ` Jovi Zhangwei
2013-12-20 4:42 ` Masami Hiramatsu
2013-12-20 8:31 ` Jovi Zhangwei
2013-12-20 9:21 ` Masami Hiramatsu
2013-12-23 4:51 ` Jovi Zhangwei
2013-12-23 10:59 ` Masami Hiramatsu
2013-12-24 6:39 ` Jovi Zhangwei
2013-12-24 8:32 ` Masami Hiramatsu
2013-12-24 9:53 ` Jovi Zhangwei
2013-12-24 15:58 ` Masami Hiramatsu
2013-12-25 14:44 ` Jovi Zhangwei
2013-12-19 9:04 ` [PATCH -tip v6 07/22] kprobes/x86: Call exception handlers directly from do_int3/do_debug Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 08/22] kprobes/x86: Allow probe on some kprobe preparation functions Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 09/22] kprobes: Allow probe on some kprobe functions Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 10/22] ftrace/kprobes: Allow probing on some preparation functions Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 11/22] x86: Allow kprobes on text_poke/hw_breakpoint Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 12/22] x86: Use NOKPROBE_SYMBOL() instead of __kprobes annotation Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 13/22] kprobes: Use NOKPROBE_SYMBOL macro instead of __kprobes Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 14/22] ftrace/kprobes: Use NOKPROBE_SYMBOL macro in ftrace Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 15/22] notifier: Use NOKPROBE_SYMBOL macro in notifier Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 16/22] sched: Use NOKPROBE_SYMBOL macro in sched Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 17/22] kprobes: Show blacklist entries via debugfs Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 18/22] kprobes: Support blacklist functions in module Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 19/22] kprobes: Use NOKPROBE_SYMBOL() in sample modules Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 20/22] kprobes/x86: Use kprobe_blacklist for .kprobes.text and .entry.text Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 21/22] kprobes/x86: Remove unneeded preempt_disable/enable in interrupt handlers Masami Hiramatsu
2013-12-19 9:04 ` [PATCH -tip v6 22/22] [RFC] kprobes/x86: Add emergency recovery process for bad kprobes Masami Hiramatsu
2013-12-19 20:46 ` [PATCH -tip v6 00/22] kprobes: introduce NOKPROBE_SYMBOL(), cleanup and fixes crash bugs Frank Ch. Eigler
2013-12-20 4:21 ` Masami Hiramatsu
2013-12-20 8:20 ` Ingo Molnar
2013-12-20 9:31 ` Masami Hiramatsu
2013-12-20 10:46 ` Ingo Molnar [this message]
2013-12-22 21:10 ` Masami Hiramatsu
2013-12-23 13:04 ` Ingo Molnar
2013-12-24 1:19 ` Masami Hiramatsu
2014-01-29 11:22 ` Masami Hiramatsu
2014-02-09 14:37 ` Ingo Molnar
2014-02-09 21:27 ` Frank Ch. Eigler
2014-02-10 4:02 ` Masami Hiramatsu
2014-02-10 11:31 ` Masami Hiramatsu
2013-12-20 13:40 ` Frank Ch. Eigler
2013-12-22 21:32 ` Masami Hiramatsu
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=20131220104615.GA22609@gmail.com \
--to=mingo@kernel.org \
--cc=ananth@in.ibm.com \
--cc=davem@davemloft.net \
--cc=fche@redhat.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=rostedt@goodmis.org \
--cc=sandeepa.prabhu@linaro.org \
--cc=systemtap@sourceware.org \
--cc=x86@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.