Messages in this thread Patch in this message | | | Subject | Re: [PATCH v4 3/3] perf record: adapt affinity to machines with #CPUs > 1K | From | Alexey Budankov <> | Date | Tue, 3 Dec 2019 13:48:05 +0300 |
| |
On 03.12.2019 13:12, Jiri Olsa wrote: > On Mon, Dec 02, 2019 at 09:58:48AM +0300, Alexey Budankov wrote: > > SNIP > >> >> -static void build_node_mask(int node, cpu_set_t *mask) >> +static void build_node_mask(int node, struct mmap_cpu_mask *mask) >> { >> int c, cpu, nr_cpus; >> const struct perf_cpu_map *cpu_map = NULL; >> @@ -240,17 +242,23 @@ static void build_node_mask(int node, cpu_set_t *mask) >> for (c = 0; c < nr_cpus; c++) { >> cpu = cpu_map->map[c]; /* map c index to online cpu index */ >> if (cpu__get_node(cpu) == node) >> - CPU_SET(cpu, mask); >> + set_bit(cpu, mask->bits); >> } >> } >> >> -static void perf_mmap__setup_affinity_mask(struct mmap *map, struct mmap_params *mp) >> +static int perf_mmap__setup_affinity_mask(struct mmap *map, struct mmap_params *mp) >> { >> - CPU_ZERO(&map->affinity_mask); >> + map->affinity_mask.nbits = cpu__max_cpu(); >> + map->affinity_mask.bits = bitmap_alloc(map->affinity_mask.nbits); >> + if (!map->affinity_mask.bits) >> + return -1; > > hum, this one should be also behind (rec->opts.affinity != PERF_AFFINITY_SYS) > condition, right? sry I haven't noticed that before..
That has not been so far, but, probably like this:
diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index 7f573f646431..832d2cb94b2c 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -269,7 +269,8 @@ int mmap__mmap(struct mmap *map, struct mmap_params *mp, int fd, int cpu) return -1; } - if (perf_mmap__setup_affinity_mask(map, mp)) { + if (mp->affinity != PERF_AFFINITY_SYS && + perf_mmap__setup_affinity_mask(map, mp)) { pr_debug2("failed to alloc mmap affinity mask, error %d\n", errno); return -1; Thanks, Alexey
| |