Re: Performance counter API review was [patch] Performance Countersfor Linux, v3

From: Corey Ashford
Date: Mon Feb 02 2009 - 15:04:44 EST


Andi Kleen wrote:
[snip]
- Global tracing. Right now there seem to be two modi: per task and
per CPU. But a common variant is global tracing of all CPUs. While this
could be in theory done right now by attaching to each CPU
this has the problem that it doesn't interact very well with CPU
hot plug. The application would need to poll for additional/lost
CPUs somehow and then re-attach to them (or detach). This would
likely be quite clumsy and slow. It would be better if the kernel supported that better.

Or alternative here is to do nothing and keep oprofile for that job
(which it doesn't do that badly)


This issue is of particular interest to us, from the IBM Power toolchain perspective.

Ingo, do you think it would be feasible to add an ability to open a single file descriptor that could give global counting (and sampling) on all CPU's? I realize this would entail creating a context per cpu in the kernel.

How to present the count data back to user space is another issue. For example, do you sum the counts of a particular event type across all CPUs or do you keep them separate, and have the user space app read them up per-cpu (perhaps not knowing exactly which cpu they come from)?

I realize that perfmon doesn't have this ability either, it's currently per-cpu as well for global counting.

But it seems as long as you are going so far as providing a thread inheritance feature (which I assume uses a summing approach for providing counts back to user space), that this "pan-cpu" counting feature might not be too difficult to implement. It sure would simplify the life of user space apps, as Andi said.

--
Regards,

- Corey

Corey Ashford
Software Engineer
IBM Linux Technology Center, Linux Toolchain
Beaverton, OR
503-578-3507
cjashfor@xxxxxxxxxx

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/