Messages in this thread | | | Date | Mon, 02 Feb 2009 12:03:37 -0800 | From | Corey Ashford <> | Subject | Re: Performance counter API review was [patch] Performance Counters for Linux, v3 |
| |
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@us.ibm.com
| |