Fewer than 32k logical CPUs are currently supported by perf. A cpumap
is indexed by an integer (see perf_cpu_map__cpu) yielding a perf_cpu
that wraps a 4-byte int for the logical CPU - the wrapping is done
deliberately to avoid confusing a logical CPU with an index into a
cpumap. Using a 4-byte int within the perf_cpu is larger than required
so this patch reduces it to the 2-byte int16_t. For a cpumap
containing 16 entries this will reduce the array size from 64 to 32
bytes. For very large servers with lots of logical CPUs the size
savings will be greater.
Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
---
v3. Add bounds checks as suggested by Leo Yan <leo.yan@xxxxxxx>.
v2. Rebase and tweak commit message add Reviewed-by: Tim Chen
<tim.c.chen@xxxxxxxxxxxxxxx>.
---
tools/lib/perf/cpumap.c | 8 ++--
tools/lib/perf/include/perf/cpumap.h | 3 +-
tools/perf/util/cpumap.c | 68 +++++++++++++++++++---------
tools/perf/util/env.c | 2 +-
4 files changed, 54 insertions(+), 27 deletions(-)