Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

libperf cpumap: Grow array of read CPUs in smaller increments

Instead of growing the array by 2048, grow by the larger of the current
range or 16.

As ranges are typical for things like the online CPUs this will mean a
single allocation happens.

While uncore CPU maps will grow 16 at a time which is a value that is
generous except say on large servers.

Reviewed-by: Leo Yan <leo.yan@arm.com>
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ben Gainey <ben.gainey@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Kyle Meyer <kyle.meyer@hpe.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20241206044035.1062032-9-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Ian Rogers and committed by
Arnaldo Carvalho de Melo
bfb94675 e9ca57d7

+5 -4
+5 -4
tools/lib/perf/cpumap.c
··· 213 213 goto invalid; 214 214 215 215 if (nr_cpus == max_entries) { 216 - max_entries += MAX_NR_CPUS; 216 + max_entries += max(end_cpu - start_cpu + 1, 16UL); 217 217 tmp = realloc(tmp_cpus, max_entries * sizeof(struct perf_cpu)); 218 218 if (tmp == NULL) 219 219 goto invalid; ··· 227 227 cpu_list = p; 228 228 } 229 229 230 - if (nr_cpus > 0) 230 + if (nr_cpus > 0) { 231 231 cpus = cpu_map__trim_new(nr_cpus, tmp_cpus); 232 - else if (*cpu_list != '\0') { 232 + } else if (*cpu_list != '\0') { 233 233 pr_warning("Unexpected characters at end of cpu list ('%s'), using online CPUs.", 234 234 cpu_list); 235 235 cpus = perf_cpu_map__new_online_cpus(); 236 - } else 236 + } else { 237 237 cpus = perf_cpu_map__new_any_cpu(); 238 + } 238 239 invalid: 239 240 free(tmp_cpus); 240 241 out: