From: "Jin, Yao" <yao.jin@linux.intel.com>
To: Jiri Olsa <jolsa@redhat.com>
Cc: acme@kernel.org, jolsa@kernel.org, peterz@infradead.org,
mingo@redhat.com, alexander.shishkin@linux.intel.com,
Linux-kernel@vger.kernel.org, ak@linux.intel.com,
kan.liang@intel.com, yao.jin@intel.com
Subject: Re: [PATCH v3 2/4] perf counts: Reset prev_raw_counts counts
Date: Fri, 8 May 2020 10:45:25 +0800 [thread overview]
Message-ID: <0d7cbbb0-9c35-c6c8-839b-2f12d6ed2808@linux.intel.com> (raw)
In-Reply-To: <20200507151932.GF2804092@krava>
Hi Jiri,
On 5/7/2020 11:19 PM, Jiri Olsa wrote:
> On Thu, May 07, 2020 at 02:58:20PM +0800, Jin Yao wrote:
>> The evsel->prev_raw_counts is updated in perf_evsel__compute_deltas:
>>
>> perf_evsel__compute_deltas()
>> {
>> tmp = *perf_counts(evsel->prev_raw_counts, cpu, thread);
>> *perf_counts(evsel->prev_raw_counts, cpu, thread) = *count;
>> }
>>
>> When we want to reset the evsel->prev_raw_counts in
>> perf_evsel__reset_prev_raw_counts, zeroing the aggr is not enough,
>> we need to reset the counts too.
>>
>> Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
>> ---
>> tools/perf/util/counts.c | 5 +++++
>> tools/perf/util/counts.h | 2 ++
>> tools/perf/util/stat.c | 1 +
>> 3 files changed, 8 insertions(+)
>>
>> diff --git a/tools/perf/util/counts.c b/tools/perf/util/counts.c
>> index f94e1a23dad6..af3bf36f7c63 100644
>> --- a/tools/perf/util/counts.c
>> +++ b/tools/perf/util/counts.c
>> @@ -64,3 +64,8 @@ void perf_evsel__free_counts(struct evsel *evsel)
>> perf_counts__delete(evsel->counts);
>> evsel->counts = NULL;
>> }
>> +
>> +void perf_evsel__reset_raw_counts(struct evsel *evsel)
>> +{
>> + perf_counts__reset(evsel->prev_raw_counts);
>> +}
>> diff --git a/tools/perf/util/counts.h b/tools/perf/util/counts.h
>> index 92196df4945f..15bb9acb7cb0 100644
>> --- a/tools/perf/util/counts.h
>> +++ b/tools/perf/util/counts.h
>> @@ -42,4 +42,6 @@ void perf_evsel__reset_counts(struct evsel *evsel);
>> int perf_evsel__alloc_counts(struct evsel *evsel, int ncpus, int nthreads);
>> void perf_evsel__free_counts(struct evsel *evsel);
>>
>> +void perf_evsel__reset_raw_counts(struct evsel *evsel);
>> +
>> #endif /* __PERF_COUNTS_H */
>> diff --git a/tools/perf/util/stat.c b/tools/perf/util/stat.c
>> index 774468341851..89e541564ed5 100644
>> --- a/tools/perf/util/stat.c
>> +++ b/tools/perf/util/stat.c
>> @@ -168,6 +168,7 @@ static void perf_evsel__reset_prev_raw_counts(struct evsel *evsel)
>> evsel->prev_raw_counts->aggr.val = 0;
>> evsel->prev_raw_counts->aggr.ena = 0;
>> evsel->prev_raw_counts->aggr.run = 0;
>> + perf_evsel__reset_raw_counts(evsel);
>
> that seems needed, but we have it scathered all over the place,
> could you centralize the reset? the way I see it the perf_counts__reset
> should zero all the members of struct perf_counts.. so also
> the aggr values
>
> it could also check for counts != NULL and we could call it
> instead of:
> perf_evsel__reset_prev_raw_counts
> perf_evsel__reset_raw_counts
> perf_counts__reset
>
> jirka
>
While sometime, we may want to only reset evsel->counts and sometime we just
want to reset the evsel->prev_raw_counts. So maybe we improve
perf_evsel__reset_counts to:
void perf_evsel__reset_counts(struct evsel *evsel, bool counts, bool
prev_raw_counts)
{
if (counts)
perf_counts__reset(evsel->counts);
if (prev_raw_counts && evsel->prev_raw_counts);
perf_counts__reset(evsel->prev_raw_counts);
}
static void perf_counts__reset(struct perf_counts *counts)
{
counts->aggr.val = 0;
counts->aggr.ena = 0;
counts->aggr.run = 0;
xyarray__reset(counts->loaded);
xyarray__reset(counts->values);
}
So we will only keep perf_evsel__reset_counts and remove
perf_evsel__reset_prev_raw_counts.
Thanks
Jin Yao
next prev parent reply other threads:[~2020-05-08 2:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-07 6:58 [PATCH v3 0/4] perf stat: Support overall statistics for interval mode Jin Yao
2020-05-07 6:58 ` [PATCH v3 1/4] perf stat: Fix wrong per-thread runtime stat " Jin Yao
2020-05-07 15:19 ` Jiri Olsa
2020-05-08 2:03 ` Jin, Yao
2020-05-07 6:58 ` [PATCH v3 2/4] perf counts: Reset prev_raw_counts counts Jin Yao
2020-05-07 15:19 ` Jiri Olsa
2020-05-08 2:45 ` Jin, Yao [this message]
2020-05-07 6:58 ` [PATCH v3 3/4] perf stat: Copy counts from prev_raw_counts to evsel->counts Jin Yao
2020-05-07 15:19 ` Jiri Olsa
2020-05-08 3:34 ` Jin, Yao
2020-05-07 6:58 ` [PATCH v3 4/4] perf stat: Report summary for interval mode Jin Yao
2020-05-07 15:18 ` Jiri Olsa
2020-05-08 1:11 ` Jin, Yao
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=0d7cbbb0-9c35-c6c8-839b-2f12d6ed2808@linux.intel.com \
--to=yao.jin@linux.intel.com \
--cc=Linux-kernel@vger.kernel.org \
--cc=acme@kernel.org \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=kan.liang@intel.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=yao.jin@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.