81 lines
2.8 KiB
Diff
81 lines
2.8 KiB
Diff
From 32ef39b64d9bef122fb265827f281911991c8412 Mon Sep 17 00:00:00 2001
|
|
From: Ian Rogers <irogers@google.com>
|
|
Date: Wed, 20 May 2020 11:20:08 -0700
|
|
Subject: [PATCH 082/201] perf metricgroup: Order event groups by size
|
|
|
|
mainline inclusion
|
|
from mainline-v5.8-rc1
|
|
commit 6bf2102bec4e600e72f87569d2c8e01a3efb340e
|
|
category: feature
|
|
bugzilla: https://gitee.com/openeuler/kernel/issues/I8C0CX
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6bf2102bec4e600e72f87569d2c8e01a3efb340e
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
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>
|
|
Acked-by: Jiri Olsa <jolsa@redhat.com>
|
|
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
|
|
Cc: Andi Kleen <ak@linux.intel.com>
|
|
Cc: Andrii Nakryiko <andriin@fb.com>
|
|
Cc: Cong Wang <xiyou.wangcong@gmail.com>
|
|
Cc: Jin Yao <yao.jin@linux.intel.com>
|
|
Cc: John Garry <john.garry@huawei.com>
|
|
Cc: Kajol Jain <kjain@linux.ibm.com>
|
|
Cc: Kan Liang <kan.liang@linux.intel.com>
|
|
Cc: Kim Phillips <kim.phillips@amd.com>
|
|
Cc: Mark Rutland <mark.rutland@arm.com>
|
|
Cc: Namhyung Kim <namhyung@kernel.org>
|
|
Cc: Paul Clarke <pc@us.ibm.com>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Cc: Song Liu <songliubraving@fb.com>
|
|
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
|
|
Cc: Stephane Eranian <eranian@google.com>
|
|
Cc: Vince Weaver <vincent.weaver@maine.edu>
|
|
Cc: bpf@vger.kernel.org
|
|
Cc: netdev@vger.kernel.org
|
|
Link: http://lore.kernel.org/lkml/20200520182011.32236-5-irogers@google.com
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.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 14b9e897cc74..c9ff1be3a992 100644
|
|
--- a/tools/perf/util/metricgroup.c
|
|
+++ b/tools/perf/util/metricgroup.c
|
|
@@ -518,7 +518,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.27.0
|
|
|