lkml.org 
[lkml]   [2009]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [RFC][PATCH 5/5] perfcounter: Add support for kernel hardware breakpoints
From
Date
On Wed, 2009-07-29 at 12:07 +0530, K.Prasad wrote:

> > That still doesn't provide per-cpu breakpoints.
> >
>
> Yes, it doesn't provide a per-cpu only implementation. One can obtain
> the per-cpu data from the system-wide breakpoints by filtering it for a
> given CPU (agreed, it will associated overhead).
>
> A true per-cpu breakpoint implementation that co-exists with
> system-wide and per-task breakpoints will be difficult. It might require
> the re-introduction of some old features and a few new ones (like switching
> between kernel and user-space breakpoints at syscall time) that were
> rejected earlier by the community.

I'm not clear on why you'd need to switch breakpoints on syscall entry.
You can simply leave the kernel address breakpoint around in userspace,
they're not able to poke at that address space anyway.

> Also, the reason for a per-cpu only breakpoint (user and kernel-space)
> isn't very obvious. While kernel variables can be read/written
> throughout the system and user-space variables are per-task, the need
> for obtaining per-cpu information isn't clear.

Well, suppose you're monitoring a per-cpu variable, or interested in the
effects of a workload confined to 1 cpu or node, there is no reason to
have this breakpoint on all cpus.

>
> This is a little confusing. I'm trying to understand which of the
> questions below does perf-counter try to answer. i) and ii) is what I
> thought would be, and asking iii) doesn't make much sense. What do you
> think?
>
> i) Tell me how many times kernel variable 'x' was updated when task 'a'
> was scheduled
> ii) Tell me how many times kernel variable 'x' was updated on the system
> since I registered for the breakpoint
> iii) Tell me how many times kernel variable 'x' was updated on CPU 'n'

It's 1 and 3. perf-counters doesn't deal with system wide for the
reasons given above.

If you want system wide, you can create a perf counter for each cpu.

But the larger the machine gets, the less likely it is that that is what
you're after. Being per-cpu allows you to do things on a
per-node/socket/etc.. basis which is impossible to do when you limit
yourself to per task or system wide.



\
 
 \ /
  Last update: 2009-07-29 11:23    [W:0.226 / U:0.152 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site