On Thu, 12 Jan 2023, Sebastian Andrzej Siewior wrote: > numa_num_task_cpus() returns here > 100 CPUs while the system has only > 32 populated. The BIOS assumes that I can probably use larger CPUs (with > more cores) on the socket so the number of "configured CPUs" is rather > high. > For default configuration, only with the -S option, it makes sense to > use the current affinity instead looking at the number of possible CPUs > which could be brought online. It still depends on the affinity of the > created threads if the additional CPUs can be used. In a container setup > this may not be the case. > > Use sched_getaffinity() to figure out the number of possible CPUs. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > src/lib/rt-numa.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/src/lib/rt-numa.c b/src/lib/rt-numa.c > index 3eead80c3b2b3..1b09cff8d9485 100644 > --- a/src/lib/rt-numa.c > +++ b/src/lib/rt-numa.c > @@ -35,10 +35,19 @@ int numa_initialize(void) > > int get_available_cpus(struct bitmask *cpumask) > { > + cpu_set_t cpuset; > + int ret; > + > if (cpumask) > return numa_bitmask_weight(cpumask); > > - return numa_num_task_cpus(); > + CPU_ZERO(&cpuset); > + > + ret = sched_getaffinity(0, sizeof(cpu_set_t), &cpuset); > + if (ret < 0) > + fatal("sched_getaffinity failed: %m\n"); > + > + return CPU_COUNT(&cpuset); > } > > int cpu_for_thread_sp(int thread_num, int max_cpus, struct bitmask *cpumask) > -- > 2.39.0 > In cyclictest we have if (num_threads == -1) num_threads = get_available_cpus(affinity_mask); But the num_threads can be set to -1 in OPT_THREADS too, not just for OPT_SMP John Kacur