From: Ian Rogers <irogers@google.com> To: Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>, Song Liu <songliubraving@fb.com>, Andrii Nakryiko <andriin@fb.com>, Kajol Jain <kjain@linux.ibm.com>, Andi Kleen <ak@linux.intel.com>, John Garry <john.garry@huawei.com>, Jin Yao <yao.jin@linux.intel.com>, Kan Liang <kan.liang@linux.intel.com>, Cong Wang <xiyou.wangcong@gmail.com>, Kim Phillips <kim.phillips@amd.com>, Paul Clarke <pc@us.ibm.com>, Srikar Dronamraju <srikar@linux.vnet.ibm.com>, linux-kernel@vger.kernel.org Cc: netdev@vger.kernel.org, bpf@vger.kernel.org, linux-perf-users@vger.kernel.org, Vince Weaver <vincent.weaver@maine.edu>, Stephane Eranian <eranian@google.com>, Ian Rogers <irogers@google.com> Subject: [PATCH v2 4/7] perf metricgroup: Order event groups by size Date: Wed, 20 May 2020 11:20:08 -0700 [thread overview] Message-ID: <20200520182011.32236-5-irogers@google.com> (raw) In-Reply-To: <20200520182011.32236-1-irogers@google.com> When adding event groups to the group list, insert them in size order. This performs an insertion sort on the group list. By placing the largest groups at the front of the group list it is possible to see if a larger group contains the same events as a later group. This can make the later group redundant - it can reuse the events from the large group. A later patch will add this sharing. Signed-off-by: Ian Rogers <irogers@google.com> --- tools/perf/util/metricgroup.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c index dca433520b92..bac63524d12f 100644 --- a/tools/perf/util/metricgroup.c +++ b/tools/perf/util/metricgroup.c @@ -508,7 +508,21 @@ static int __metricgroup__add_metric(struct list_head *group_list, return -EINVAL; } - list_add_tail(&eg->nd, group_list); + if (list_empty(group_list)) + list_add(&eg->nd, group_list); + else { + struct list_head *pos; + + /* Place the largest groups at the front. */ + list_for_each_prev(pos, group_list) { + struct egroup *old = list_entry(pos, struct egroup, nd); + + if (hashmap__size(&eg->pctx.ids) <= + hashmap__size(&old->pctx.ids)) + break; + } + list_add(&eg->nd, pos); + } return 0; } -- 2.26.2.761.g0e0b3e54be-goog
next prev parent reply other threads:[~2020-05-20 18:20 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-20 18:20 [PATCH v2 0/7] Share events between metrics Ian Rogers 2020-05-20 18:20 ` [PATCH v2 1/7] perf metricgroup: Always place duration_time last Ian Rogers 2020-05-20 18:20 ` [PATCH v2 2/7] perf metricgroup: Use early return in add_metric Ian Rogers 2020-05-20 18:20 ` [PATCH v2 3/7] perf metricgroup: Delay events string creation Ian Rogers 2020-05-20 18:20 ` Ian Rogers [this message] 2020-05-20 18:20 ` [PATCH v2 5/7] perf metricgroup: Remove duped metric group events Ian Rogers 2020-05-20 18:20 ` [PATCH v2 6/7] perf metricgroup: Add options to not group or merge Ian Rogers 2020-05-20 18:20 ` [PATCH v2 7/7] perf metricgroup: Remove unnecessary ',' from events Ian Rogers 2020-05-21 11:43 ` [PATCH v2 0/7] Share events between metrics Jiri Olsa 2020-05-21 17:22 ` Arnaldo Carvalho de Melo 2020-05-22 10:13 ` Jiri Olsa 2020-05-22 14:49 ` Arnaldo Carvalho de Melo [not found] ` <CAP-5=fUaaNpi3RZd9-Q-uCaudop0tU5NN8HFek5e2XLoBZqt6w@mail.gmail.com> 2020-05-22 17:56 ` Ian Rogers 2020-05-23 22:19 ` Jiri Olsa 2020-05-25 13:34 ` Arnaldo Carvalho de Melo 2020-05-22 9:25 ` kajoljain 2020-05-22 14:31 ` Arnaldo Carvalho de Melo
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=20200520182011.32236-5-irogers@google.com \ --to=irogers@google.com \ --cc=acme@kernel.org \ --cc=ak@linux.intel.com \ --cc=alexander.shishkin@linux.intel.com \ --cc=andriin@fb.com \ --cc=bpf@vger.kernel.org \ --cc=eranian@google.com \ --cc=john.garry@huawei.com \ --cc=jolsa@redhat.com \ --cc=kan.liang@linux.intel.com \ --cc=kim.phillips@amd.com \ --cc=kjain@linux.ibm.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-perf-users@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=mingo@redhat.com \ --cc=namhyung@kernel.org \ --cc=netdev@vger.kernel.org \ --cc=pc@us.ibm.com \ --cc=peterz@infradead.org \ --cc=songliubraving@fb.com \ --cc=srikar@linux.vnet.ibm.com \ --cc=vincent.weaver@maine.edu \ --cc=xiyou.wangcong@gmail.com \ --cc=yao.jin@linux.intel.com \ --subject='Re: [PATCH v2 4/7] perf metricgroup: Order event groups by size' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).