Re: [PATCH] rt-numa: Use a reasonable default max CPU value.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux