Skip to content

Commit da0bfb9

Browse files
captain5050acmel
authored andcommitted
perf cpumap: More cpu map reuse by merge.
perf_cpu_map__merge() will reuse one of its arguments if they are equal or the other argument is NULL. The arguments could be reused if it is known one set of values is a subset of the other. For example, a map of 0-1 and a map of just 0 when merged yields the map of 0-1. Currently a new map is created rather than adding a reference count to the original 0-1 map. Signed-off-by: Ian Rogers <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Alexander Antonov <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: Alexey Bayduraev <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Andrii Nakryiko <[email protected]> Cc: Daniel Borkmann <[email protected]> Cc: German Gomez <[email protected]> Cc: James Clark <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: John Fastabend <[email protected]> Cc: John Garry <[email protected]> Cc: KP Singh <[email protected]> Cc: Kajol Jain <[email protected]> Cc: Leo Yan <[email protected]> Cc: Mark Rutland <[email protected]> Cc: Martin KaFai Lau <[email protected]> Cc: Mathieu Poirier <[email protected]> Cc: Mike Leach <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Riccardo Mancini <[email protected]> Cc: Song Liu <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Suzuki Poulouse <[email protected]> Cc: Will Deacon <[email protected]> Cc: Yonghong Song <[email protected]> Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] Link: http://lore.kernel.org/lkml/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent c3ad8d2 commit da0bfb9

File tree

1 file changed

+5
-10
lines changed

1 file changed

+5
-10
lines changed

tools/lib/perf/cpumap.c

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -355,17 +355,12 @@ struct perf_cpu_map *perf_cpu_map__merge(struct perf_cpu_map *orig,
355355
int i, j, k;
356356
struct perf_cpu_map *merged;
357357

358-
if (!orig && !other)
359-
return NULL;
360-
if (!orig) {
361-
perf_cpu_map__get(other);
362-
return other;
363-
}
364-
if (!other)
365-
return orig;
366-
if (orig->nr == other->nr &&
367-
!memcmp(orig->map, other->map, orig->nr * sizeof(struct perf_cpu)))
358+
if (perf_cpu_map__is_subset(orig, other))
368359
return orig;
360+
if (perf_cpu_map__is_subset(other, orig)) {
361+
perf_cpu_map__put(orig);
362+
return perf_cpu_map__get(other);
363+
}
369364

370365
tmp_len = orig->nr + other->nr;
371366
tmp_cpus = malloc(tmp_len * sizeof(struct perf_cpu));

0 commit comments

Comments
 (0)