[PATCH 0/4] tools/perf: Fix perf bench numa, futex and epoll to work with machines having #CPUs > 1K

Disha Goel disgoel at linux.vnet.ibm.com
Wed Apr 6 17:33:55 AEST 2022



-----Original Message-----
From: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
To: acme at kernel.org, jolsa at kernel.org, disgoel at linux.vnet.ibm.com
Cc: mpe at ellerman.id.au, linux-perf-users at vger.kernel.org, 
linuxppc-dev at lists.ozlabs.org, maddy at linux.vnet.ibm.com, 
rnsastry at linux.ibm.com, kjain at linux.ibm.com
Subject: [PATCH 0/4] tools/perf: Fix perf bench numa, futex and epoll
to work with machines having #CPUs > 1K
Date: Sat,  2 Apr 2022 00:28:49 +0530

The perf benchmark for collections: numa, futex and epollhits failure
in system configuration with CPU's more than 1024.These benchmarks uses
"sched_getaffinity" and "sched_setaffinity"in the code to work with
affinity.
Example snippet from numa benchmark:<<>>perf: bench/numa.c:302:
bind_to_node: Assertion `!(ret)' failed.Aborted (core dumped)<<>>
bind_to_node function uses "sched_getaffinity" to save the cpumask.This
fails with EINVAL because the default mask size in glibc is 1024.
Similarly in futex and epoll benchmark, uses sched_setaffinity
duringpthread_create with affinity. And since it returns EINVAL in such
systemconfiguration, benchmark doesn't run.
To overcome this 1024 CPUs mask size limitation of cpu_set_t,change the
mask size using the CPU_*_S macros ie, use CPU_ALLOC toallocate
cpumask, CPU_ALLOC_SIZE for size, CPU_SET_S to set mask bit.
Fix all the relevant places in the code to use mask size which is
largeenough to represent number of possible CPU's in the system.
Fix parse_setup_cpu_list function in numa bench to check if input CPUis
online before binding task to that CPU. This is to fix failures
where,though CPU number is within max CPU, it could happen that CPU is
offline.Here, sched_setaffinity will result in failure when using
cpumask havingthat cpu bit set in the mask.
Patch 1 and Patch 2 address fix for perf bench futex and perf
benchepoll benchmark. Patch 3 and Patch 4 address fix in perf bench
numabenchmark
Athira Rajeev (4):  tools/perf: Fix perf bench futex to correct usage
of affinity for    machines with #CPUs > 1K  tools/perf: Fix perf bench
epoll to correct usage of affinity for    machines with #CPUs >
1K  tools/perf: Fix perf numa bench to fix usage of affinity for
machines    with #CPUs > 1K  tools/perf: Fix perf bench numa testcase
to check if CPU used to bind    task is online
Tesed the patches on powerpc with CPU > 1K and other configurations as
well, verified the perf benchmark numa, futex and epoll for whole
series with the patch set.Tested-by: Disha Goel <
disgoel at linux.vnet.ibm.com>
 tools/perf/bench/epoll-ctl.c           |  25 ++++--
tools/perf/bench/epoll-wait.c          |  25 ++++--
tools/perf/bench/futex-hash.c          |  26 ++++--
tools/perf/bench/futex-lock-pi.c       |  21 +++--
tools/perf/bench/futex-requeue.c       |  21 +++--
tools/perf/bench/futex-wake-parallel.c |  21 +++--
tools/perf/bench/futex-wake.c          |  22 +++--
tools/perf/bench/numa.c                | 117 ++++++++++++++++++-------
tools/perf/util/header.c               |  43 +++++++++
tools/perf/util/header.h               |   1 + 10 files changed, 252
insertions(+), 70 deletions(-)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20220406/4edec27c/attachment.htm>


More information about the Linuxppc-dev mailing list