Messages in this thread | | | Date | Fri, 22 May 2009 19:56:16 +1000 | From | Paul Mackerras <> | Subject | Re: [PATCH 2/2] perf_counter: optimize context switch between identical inherited contexts |
| |
Peter Zijlstra writes:
> On Fri, 2009-05-22 at 14:27 +1000, Paul Mackerras wrote: > > Since we don't have individual fds for the counters in a cloned > > context, the only thing that can make two clones of a given parent > > different after they have been cloned is enabling or disabling all > > counters with prctl. To account for this, we keep a count of the > > number of enabled counters in each context. Two contexts must have > > the same number of enabled counters to be considered equivalent. > > Curious point that.. so prctl() can disable counters it doesn't own. > > Shouldn't we instead fix that?
Well, prctl enables/disables the counters that are counting on the current process, regardless of who or what created them. I always thought that was a little strange; maybe it is useful to be able to disable all the counters that any other process might have put on to you, but I can't think of a scenario where you'd really need to do that, particularly since the disable is a one-shot operation, and doesn't prevent new (enabled) counters being attached to you.
On the other hand, what does "all the counters I own" mean? Does it mean all the ones that I have fds open for? Or does it mean all the ones that I created? Either way we don't have a good way to enumerate them.
Paul.
| |