From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: "Frédéric Weisbecker" <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
Mike Galbraith <efault@gmx.de>, Paul Mackerras <paulus@samba.org>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Anton Blanchard <anton@samba.org>, Li Zefan <lizf@cn.fujitsu.com>,
Zhaolei <zhaolei@cn.fujitsu.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
"K . Prasad" <prasad@linux.vnet.ibm.com>,
Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [RFC][PATCH 5/5] perfcounter: Add support for kernel hardware breakpoints
Date: Fri, 24 Jul 2009 16:26:09 +0200 [thread overview]
Message-ID: <1248445569.6987.74.camel@twins> (raw)
In-Reply-To: <c62985530907240702h2b2de14bw2f0d475f46067e4e@mail.gmail.com>
On Fri, 2009-07-24 at 16:02 +0200, Frédéric Weisbecker wrote:
> 2009/7/23 Peter Zijlstra <a.p.zijlstra@chello.nl>:
> > On Mon, 2009-07-20 at 13:08 -0400, Frederic Weisbecker wrote:
> >> This adds the support for kernel hardware breakpoints in perfcounter.
> >> It is added as a new type of software counter and can be defined by
> >> using the counter number 5 and by passsing the address of the
> >> breakpoint to set through the config attribute.
> >
> > Is there a limit to these hardware breakpoints? If so, the software
> > counter model is not sufficient, since we assume we can always schedule
> > all software counters. However if you were to add more counters than you
> > have hardware breakpoints you're hosed.
> >
> >
>
> Hmm, indeed. But this patch handles this case:
>
> +static const struct pmu *bp_perf_counter_init(struct perf_counter *counter)
> +{
> + if (hw_breakpoint_perf_init((unsigned long)counter->attr.config))
> + return NULL;
> +
>
> IIRC, hw_breakpoint_perf_init() calls register_kernel_breakpoint() which in turn
> returns -ENOSPC if we haven't any breakpoint room left.
>
> It seems we can only set 4 breakpoints simultaneously in x86, or
> something close to that.
Ah, that's not the correct way of doing that. Suppose that you would
register 4 breakpoint counter to one task, that would leave you unable
to register a breakpoint counter on another task. Even though these
breakpoints would never be scheduled simultaneously.
Also, regular perf counters would multiplex counters when over-committed
on a hardware resource, allowing you to create more such breakpoints
than you have actual hardware slots.
The way to do this is to create a breakpoint pmu which would simply fail
the pmu->enable() method if there are insufficient hardware resources
available.
Also, your init routine, the above hw_breakpoint_perf_init(), will have
to verify that when the counter is part of a group, this and all other
hw breakpoint counters in that group can, now, but also in the future,
be scheduled simultaneously.
This means that there should be some arbitration towards other in-kernel
hw breakpoint users, because if you allow all 4 hw breakpoints in a
group and then let another hw breakpoint users have one, you can never
schedule that group again.
[ which raises a fun point, Paulus do we handle groups having multiple
'hardware' pmu's in? ]
Now, for the actual counter implementation you can probably re-use the
swcounter code, but you also need a pmu implementation.
next prev parent reply other threads:[~2009-07-24 14:24 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-20 17:08 [RFC][PATCH 0/5] hw-breakpoints: Make the API generic + support for perfcounters Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 1/5] hw-breakpoints: Make kernel breakpoints API truly generic Frederic Weisbecker
2009-07-20 17:27 ` Mathieu Desnoyers
2009-07-25 2:37 ` Frederic Weisbecker
2009-07-25 15:38 ` Mathieu Desnoyers
2009-07-28 1:35 ` Frederic Weisbecker
2009-07-21 11:15 ` K.Prasad
2009-07-25 2:56 ` Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 2/5] hw-breakpoints: Pull up the target symbol in a generic field Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 3/5] hw-breakpoints: Make user breakpoints API truly generic Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 4/5] perfcounter: Grow the event number to 64 bits Frederic Weisbecker
2009-07-20 17:08 ` [RFC][PATCH 5/5] perfcounter: Add support for kernel hardware breakpoints Frederic Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-21 7:11 ` Frédéric Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-21 7:19 ` Frédéric Weisbecker
2009-07-20 17:38 ` Peter Zijlstra
2009-07-20 21:22 ` Frédéric Weisbecker
2009-07-24 20:20 ` Masami Hiramatsu
2009-07-23 13:08 ` Peter Zijlstra
2009-07-23 17:45 ` Peter Zijlstra
2009-07-23 19:56 ` Alan Stern
2009-07-24 14:02 ` Frédéric Weisbecker
2009-07-24 14:26 ` Peter Zijlstra [this message]
2009-07-24 17:47 ` Frederic Weisbecker
2009-07-25 10:56 ` Peter Zijlstra
2009-07-25 14:19 ` Frederic Weisbecker
2009-07-25 15:51 ` Mathieu Desnoyers
2009-07-25 16:27 ` Peter Zijlstra
2009-07-25 16:22 ` Peter Zijlstra
2009-07-25 23:57 ` K.Prasad
2009-07-27 8:53 ` Peter Zijlstra
2009-07-28 1:03 ` Frederic Weisbecker
2009-07-28 7:24 ` Peter Zijlstra
2009-07-28 14:04 ` Mathieu Desnoyers
2009-07-28 14:42 ` Peter Zijlstra
2009-07-29 0:36 ` Frederic Weisbecker
2009-07-29 8:28 ` Peter Zijlstra
2009-07-29 14:03 ` Frederic Weisbecker
2009-07-28 16:12 ` K.Prasad
2009-07-28 16:41 ` Peter Zijlstra
2009-07-29 6:37 ` K.Prasad
2009-07-29 9:22 ` Peter Zijlstra
2009-07-29 14:57 ` Arnaldo Carvalho de Melo
2009-07-28 0:18 ` Frederic Weisbecker
2009-07-28 7:26 ` Peter Zijlstra
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=1248445569.6987.74.camel@twins \
--to=a.p.zijlstra@chello.nl \
--cc=acme@redhat.com \
--cc=anton@samba.org \
--cc=efault@gmx.de \
--cc=fweisbec@gmail.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=prasad@linux.vnet.ibm.com \
--cc=rostedt@goodmis.org \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linutronix.de \
--cc=zhaolei@cn.fujitsu.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