From: Peter Zijlstra <a.p.zijlstra@chello.nl>
To: Ingo Molnar <mingo@elte.hu>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>,
linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>
Subject: Re: perf_counter: resetting a event counter
Date: Tue, 05 May 2009 09:34:20 +0200 [thread overview]
Message-ID: <1241508860.11059.24.camel@twins> (raw)
In-Reply-To: <20090505065206.GB27191@elte.hu>
On Tue, 2009-05-05 at 08:52 +0200, Ingo Molnar wrote:
> * Corey Ashford <cjashfor@linux.vnet.ibm.com> wrote:
>
> > Hi,
> >
> > In implementing the PAPI_reset function, whose purpose is to reset
> > all of the counters in an event set, I found that [it appears]
> > there is no straight-forward way to implement this function using
> > "Performance Couunters for Linux". My current implementation just
> > closes the counters and reopens them again. This is not a elegant
> > solution, nor is the other alternative that occurred to me:
> > maintain a "virtual" counter in user space, maintained using a
> > base count, which is subtracted off of the current perf_counter
> > value of a particular counter.
> >
> > Is there a way that I missed to reset an event counter? If not,
> > I'd like to request that a new ioctl command be added to support
> > this ability.
>
> We already have such ioctl actions:
>
> case PERF_COUNTER_IOC_ENABLE:
> case PERF_COUNTER_IOC_DISABLE:
> case PERF_COUNTER_IOC_REFRESH:
>
> It would be a pretty natural addition to also have a reset method
> there. Would you like to take a stab at it and send a patch? A
> first-level approximation would be to do something like:
>
> perf_counter_disable(counter);
> atomic64_set(&counter->count, 0);
> perf_counter_enable(counter);
>
> btw, the reset code should probably take the counter->mutex lock as
> well, because parallel resets done from multiple contexts are
> otherwise not well-defined.
I would suggest simply bailing when the counter is active when trying to
reset if anything.
A plain: atomic64_set(&counter->count, 0), sounds attractive too.
The trouble with putting in those disable/enable calls is that you
cannot use the ioctl on an already disabled call, since it will
immediately enable it. Also, using it on an active counter is racy in
nature so the disable/enable cycle (or the proposed mutex) doesn't buy
you anything.
next prev parent reply other threads:[~2009-05-05 7:34 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-04 22:15 perf_counter: resetting a event counter Corey Ashford
2009-05-05 6:52 ` Ingo Molnar
2009-05-05 7:34 ` Peter Zijlstra [this message]
2009-05-05 7:42 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1241508860.11059.24.camel@twins \
--to=a.p.zijlstra@chello.nl \
--cc=cjashfor@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox