All of lore.kernel.org
 help / color / mirror / Atom feed
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] perf evlist: Ensure grouped events with same cpu map
Date: Mon, 25 May 2020 14:37:58 +0800	[thread overview]
Message-ID: <e42c13b5-8452-300f-6972-02bcdc46868f@linux.intel.com> (raw)
In-Reply-To: <20200522095314.GD264196@krava>

Hi Jiri,

On 5/22/2020 5:53 PM, Jiri Olsa wrote:
> On Thu, May 21, 2020 at 02:22:40PM +0800, Jin Yao wrote:
> 
> SNIP
> 
>> ---
>>   tools/perf/builtin-stat.c |  3 +++
>>   tools/perf/util/evlist.c  | 32 ++++++++++++++++++++++++++++++++
>>   tools/perf/util/evlist.h  |  5 +++++
>>   3 files changed, 40 insertions(+)
>>
>> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
>> index 377e575f9645..0e4fc6b3323c 100644
>> --- a/tools/perf/builtin-stat.c
>> +++ b/tools/perf/builtin-stat.c
>> @@ -584,6 +584,9 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
>>   	if (affinity__setup(&affinity) < 0)
>>   		return -1;
>>   
>> +	if (!evlist__cpus_matched(evsel_list))
>> +		evlist__force_disable_group(evsel_list);
>> +
>>   	evlist__for_each_cpu (evsel_list, i, cpu) {
>>   		affinity__set(&affinity, cpu);
>>   
>> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
>> index 2a9de6491700..fc6e410ca63b 100644
>> --- a/tools/perf/util/evlist.c
>> +++ b/tools/perf/util/evlist.c
>> @@ -1704,3 +1704,35 @@ struct evsel *perf_evlist__reset_weak_group(struct evlist *evsel_list,
>>   	}
>>   	return leader;
>>   }
>> +
>> +bool evlist__cpus_matched(struct evlist *evlist)
>> +{
>> +	struct evsel *prev = evlist__first(evlist), *evsel = prev;
>> +
>> +	if (prev->core.nr_members <= 1)
>> +		return true;
> 
> hum, this assumes there's only one group in evlist?
> 
> how about case like A,{B,C},D,{E,F}
> 

Yes, you are right, I need to consider the case such as A,{B,C},D,{E,F}. I will post v2.

> also please add automated tests for this
> 

I will add case for testing the group members.

>> +
>> +	evlist__for_each_entry_continue(evlist, evsel) {
>> +		if (evsel->core.cpus->nr != prev->core.cpus->nr)
>> +			return false;
>> +
>> +		for (int i = 0; i < evsel->core.cpus->nr; i++) {
>> +			if (evsel->core.cpus->map[i] != prev->core.cpus->map[i])
>> +				return false;
>> +		}
>> +
>> +		prev = evsel;
>> +	}
>> +
>> +	return true;
>> +}
>> +
>> +void evlist__force_disable_group(struct evlist *evlist)
>> +{
>> +	struct evsel *evsel;
> 
> we need to put some warning for user in here
> 

Yes, agree. I will add warning in v2.

Thanks
Jin Yao

> thanks,
> jirka
> 
>> +
>> +	evlist__for_each_entry(evlist, evsel) {
>> +		evsel->leader = evsel;
>> +		evsel->core.nr_members = 0;
>> +	}
>> +}
>> diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
>> index b6f325dfb4d2..ea7a53166cbd 100644
>> --- a/tools/perf/util/evlist.h
>> +++ b/tools/perf/util/evlist.h
>> @@ -355,4 +355,9 @@ void perf_evlist__force_leader(struct evlist *evlist);
>>   struct evsel *perf_evlist__reset_weak_group(struct evlist *evlist,
>>   						 struct evsel *evsel,
>>   						bool close);
>> +
>> +bool evlist__cpus_matched(struct evlist *evlist);
>> +
>> +void evlist__force_disable_group(struct evlist *evlist);
>> +
>>   #endif /* __PERF_EVLIST_H */
>> -- 
>> 2.17.1
>>
> 

      reply	other threads:[~2020-05-25  6:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-21  6:22 [PATCH] perf evlist: Ensure grouped events with same cpu map Jin Yao
2020-05-22  9:53 ` Jiri Olsa
2020-05-25  6:37   ` Jin, Yao [this message]

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=e42c13b5-8452-300f-6972-02bcdc46868f@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.