Re: [PATCH 2/2] perf_counter: optimize context switch between identical inherited contexts

Paul Mackerras
2009-05-22T09:56:47Z

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.