• Athira Rajeev's avatar
    perf bench: Fix numa testcase to check if CPU used to bind task is online · 8cb7a188
    Athira Rajeev authored
    Perf numa bench test fails with error:
    
    Testcase:
    
      ./perf bench numa mem -p 2 -t 1 -P 1024 -C 0,8 -M 1,0 -s 20 -zZq --thp  1 --no-data_rand_walk
    
    Failure snippet:
    
    <<>>
      Running 'numa/mem' benchmark:
    
      # Running main, "perf bench numa numa-mem -p 2 -t 1 -P 1024 -C 0,8 -M 1,0 -s 20 -zZq --thp 1 --no-data_rand_walk"
    
      perf: bench/numa.c:333: bind_to_cpumask: Assertion `!(ret)' failed.
    <<>>
    
    The Testcases uses CPU's 0 and 8. In function "parse_setup_cpu_list",
    There is check to see if cpu number is greater than max cpu's possible
    in the system ie via "if (bind_cpu_0 >= g->p.nr_cpus || bind_cpu_1 >=
    g->p.nr_cpus) {".
    
    But it could happen that system has say 48 CPU's, but only number of
    online CPU's is 0-7. Other CPU's are offlined. Since "g->p.nr_cpus" is
    48, so function will go ahead and set bit for CPU 8 also in cpumask (
    td->bind_cpumask).
    
    bind_to_cpumask function is called to set affinity using
    sched_setaffinity and the cpumask. Since the CPU8 is not present, set
    affinity will fail here with EINVAL.
    
    Fix this issue by adding a check to make sure that, CPU's provided in
    the input argument values are online before proceeding further and skip
    the test. For this, include new helper function "is_cpu_online" in
    "tools/perf/util/header.c".
    
    Since "BIT(x)" definition will get included from header.h, remove
    that from bench/numa.c
    Reported-by: default avatarDisha Goel <disgoel@linux.vnet.ibm.com>
    Signed-off-by: default avatarAthira Jajeev <atrajeev@linux.vnet.ibm.com>
    Tested-by: default avatarDisha Goel <disgoel@linux.vnet.ibm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Nageswara R Sastry <rnsastry@linux.ibm.com>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: https://lore.kernel.org/r/20220412164059.42654-2-atrajeev@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    8cb7a188
header.c 94.4 KB