RE: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-18 Thread Wei Chen
Hi Jan,

> -Original Message-
> From: Jan Beulich 
> Sent: 2022年7月18日 16:10
> To: Wei Chen 
> Cc: nd ; Andrew Cooper ; George
> Dunlap ; Stefano Stabellini
> ; Wei Liu ; Roger Pau Monné
> ; xen-devel@lists.xenproject.org; Julien Grall
> 
> Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure
> NUMA nodes number
> 
> >>>>> Sent: 2022年7月12日 22:34
> >>>>>
> >>>>> On 08.07.2022 16:54, Wei Chen wrote:
> >>>>>> --- a/xen/arch/Kconfig
> >>>>>> +++ b/xen/arch/Kconfig
> >>>>>> @@ -17,3 +17,14 @@ config NR_CPUS
> >>>>>>  For CPU cores which support Simultaneous Multi-Threading or
> >>>>> similar
> >>>>>>  technologies, this the number of logical threads which Xen
> >> will
> >>>>>>  support.
> >>>>>> +
> >>>>>> +config NR_NUMA_NODES
> >>>>>> +  int "Maximum number of NUMA nodes supported"
> >>>>>> +  range 1 255
> >>>>>> +  default "64"
> >>>>>> +  depends on NUMA
> >>>>>
> >>>>> Does 1 make sense? That's not going to be NUMA then, I would say.
> >>>>>
> >>>>
> >>>> Ok, we need at least 2 nodes to be a real NUMA.
> >>>>
> >>>>> Does the value being (perhaps far) larger than NR_CPUS make sense?
> >>>>>
> >>>>
> >>>> Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
> >>>> So I am not very clear about your comments about far larger? As my
> >>>> Understanding, one node has 2 or 4 cores are very common in a NUMA
> >>>> System.
> >>>
> >>> The defaults are fine. But does it make sense to have 255 nodes when
> >>> just 32 CPUs were selected? I'm afraid kconfig is going to get in the
> >>> way, but I think I'd like the upper bound to be min(NR_CPUS, 255).
> >>
> >> Looking around NUMA nodes with 0 CPUs exists. So I don't think we
> should
> >> tie the two.
> >>
> >
> > Yes, some nodes can only have RAM and some nodes can only have CPUs.
> > So is it ok to use 2-255 for node range?
> 
> Personally I think we shouldn't allow unreasonably high node counts,
> unless proven by real hardware existing. Which goes hand in hand with
> me wanting the upper bound to be a power of 2 value, if for nothing
> else than a hint that using power-of-2 values here is preferable.
> Hence I'd like to propose 64 or 128 as upper bound, in this order of
> (my personal) preference.
> 

Thanks, I will use 64 in next version.

Wei Chen

> Jan


Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-18 Thread Jan Beulich
On 18.07.2022 09:51, Wei Chen wrote:
>> From: Julien Grall 
>> Sent: 2022年7月14日 19:27
>>
>> On 14/07/2022 12:10, Jan Beulich wrote:
>>> On 14.07.2022 12:14, Wei Chen wrote:
> From: Jan Beulich 
> Sent: 2022年7月12日 22:34
>
> On 08.07.2022 16:54, Wei Chen wrote:
>> --- a/xen/arch/Kconfig
>> +++ b/xen/arch/Kconfig
>> @@ -17,3 +17,14 @@ config NR_CPUS
>>For CPU cores which support Simultaneous Multi-Threading or
> similar
>>technologies, this the number of logical threads which Xen
>> will
>>support.
>> +
>> +config NR_NUMA_NODES
>> +int "Maximum number of NUMA nodes supported"
>> +range 1 255
>> +default "64"
>> +depends on NUMA
>
> Does 1 make sense? That's not going to be NUMA then, I would say.
>

 Ok, we need at least 2 nodes to be a real NUMA.

> Does the value being (perhaps far) larger than NR_CPUS make sense?
>

 Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
 So I am not very clear about your comments about far larger? As my
 Understanding, one node has 2 or 4 cores are very common in a NUMA
 System.
>>>
>>> The defaults are fine. But does it make sense to have 255 nodes when
>>> just 32 CPUs were selected? I'm afraid kconfig is going to get in the
>>> way, but I think I'd like the upper bound to be min(NR_CPUS, 255).
>>
>> Looking around NUMA nodes with 0 CPUs exists. So I don't think we should
>> tie the two.
>>
> 
> Yes, some nodes can only have RAM and some nodes can only have CPUs.
> So is it ok to use 2-255 for node range?

Personally I think we shouldn't allow unreasonably high node counts,
unless proven by real hardware existing. Which goes hand in hand with
me wanting the upper bound to be a power of 2 value, if for nothing
else than a hint that using power-of-2 values here is preferable.
Hence I'd like to propose 64 or 128 as upper bound, in this order of
(my personal) preference.

Jan



RE: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-18 Thread Wei Chen
Hi Julien, Jan,

> -Original Message-
> From: Julien Grall 
> Sent: 2022年7月14日 19:27
> To: Jan Beulich ; Wei Chen 
> Cc: nd ; Andrew Cooper ; George
> Dunlap ; Stefano Stabellini
> ; Wei Liu ; Roger Pau Monné
> ; xen-devel@lists.xenproject.org
> Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure
> NUMA nodes number
> 
> Hi Jan,
> 
> On 14/07/2022 12:10, Jan Beulich wrote:
> > On 14.07.2022 12:14, Wei Chen wrote:
> >> Hi Jan,
> >>
> >>> -Original Message-
> >>> From: Jan Beulich 
> >>> Sent: 2022年7月12日 22:34
> >>> To: Wei Chen 
> >>> Cc: nd ; Andrew Cooper ; George
> >>> Dunlap ; Julien Grall ;
> Stefano
> >>> Stabellini ; Wei Liu ; Roger Pau
> Monné
> >>> ; xen-devel@lists.xenproject.org
> >>> Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to
> configure
> >>> NUMA nodes number
> >>>
> >>> On 08.07.2022 16:54, Wei Chen wrote:
> >>>> --- a/xen/arch/Kconfig
> >>>> +++ b/xen/arch/Kconfig
> >>>> @@ -17,3 +17,14 @@ config NR_CPUS
> >>>>For CPU cores which support Simultaneous Multi-Threading or
> >>> similar
> >>>>technologies, this the number of logical threads which Xen
> will
> >>>>support.
> >>>> +
> >>>> +config NR_NUMA_NODES
> >>>> +int "Maximum number of NUMA nodes supported"
> >>>> +range 1 255
> >>>> +default "64"
> >>>> +depends on NUMA
> >>>
> >>> Does 1 make sense? That's not going to be NUMA then, I would say.
> >>>
> >>
> >> Ok, we need at least 2 nodes to be a real NUMA.
> >>
> >>> Does the value being (perhaps far) larger than NR_CPUS make sense?
> >>>
> >>
> >> Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
> >> So I am not very clear about your comments about far larger? As my
> >> Understanding, one node has 2 or 4 cores are very common in a NUMA
> >> System.
> >
> > The defaults are fine. But does it make sense to have 255 nodes when
> > just 32 CPUs were selected? I'm afraid kconfig is going to get in the
> > way, but I think I'd like the upper bound to be min(NR_CPUS, 255).
>
> Looking around NUMA nodes with 0 CPUs exists. So I don't think we should
> tie the two.
> 

Yes, some nodes can only have RAM and some nodes can only have CPUs.
So is it ok to use 2-255 for node range?

> Cheers,
> 
> --
> Julien Grall


Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-14 Thread Julien Grall

Hi Jan,

On 14/07/2022 12:10, Jan Beulich wrote:

On 14.07.2022 12:14, Wei Chen wrote:

Hi Jan,


-Original Message-
From: Jan Beulich 
Sent: 2022年7月12日 22:34
To: Wei Chen 
Cc: nd ; Andrew Cooper ; George
Dunlap ; Julien Grall ; Stefano
Stabellini ; Wei Liu ; Roger Pau Monné
; xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure
NUMA nodes number

On 08.07.2022 16:54, Wei Chen wrote:

--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -17,3 +17,14 @@ config NR_CPUS
  For CPU cores which support Simultaneous Multi-Threading or

similar

  technologies, this the number of logical threads which Xen will
  support.
+
+config NR_NUMA_NODES
+   int "Maximum number of NUMA nodes supported"
+   range 1 255
+   default "64"
+   depends on NUMA


Does 1 make sense? That's not going to be NUMA then, I would say.



Ok, we need at least 2 nodes to be a real NUMA.


Does the value being (perhaps far) larger than NR_CPUS make sense?



Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
So I am not very clear about your comments about far larger? As my
Understanding, one node has 2 or 4 cores are very common in a NUMA
System.


The defaults are fine. But does it make sense to have 255 nodes when
just 32 CPUs were selected? I'm afraid kconfig is going to get in the
way, but I think I'd like the upper bound to be min(NR_CPUS, 255).
Looking around NUMA nodes with 0 CPUs exists. So I don't think we should 
tie the two.


Cheers,

--
Julien Grall



Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-14 Thread Jan Beulich
On 14.07.2022 12:14, Wei Chen wrote:
> Hi Jan,
> 
>> -Original Message-
>> From: Jan Beulich 
>> Sent: 2022年7月12日 22:34
>> To: Wei Chen 
>> Cc: nd ; Andrew Cooper ; George
>> Dunlap ; Julien Grall ; Stefano
>> Stabellini ; Wei Liu ; Roger Pau Monné
>> ; xen-devel@lists.xenproject.org
>> Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure
>> NUMA nodes number
>>
>> On 08.07.2022 16:54, Wei Chen wrote:
>>> --- a/xen/arch/Kconfig
>>> +++ b/xen/arch/Kconfig
>>> @@ -17,3 +17,14 @@ config NR_CPUS
>>>   For CPU cores which support Simultaneous Multi-Threading or
>> similar
>>>   technologies, this the number of logical threads which Xen will
>>>   support.
>>> +
>>> +config NR_NUMA_NODES
>>> +   int "Maximum number of NUMA nodes supported"
>>> +   range 1 255
>>> +   default "64"
>>> +   depends on NUMA
>>
>> Does 1 make sense? That's not going to be NUMA then, I would say.
>>
> 
> Ok, we need at least 2 nodes to be a real NUMA.
> 
>> Does the value being (perhaps far) larger than NR_CPUS make sense?
>>
> 
> Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
> So I am not very clear about your comments about far larger? As my
> Understanding, one node has 2 or 4 cores are very common in a NUMA
> System.

The defaults are fine. But does it make sense to have 255 nodes when
just 32 CPUs were selected? I'm afraid kconfig is going to get in the
way, but I think I'd like the upper bound to be min(NR_CPUS, 255).

>> Why does the range end at a not-power-of-2 value? (I was actually
>> going to suggest to have a shift value specified here, until
>> spotting that NODES_SHIFT isn't used anywhere else, and hence
>> you're rightfully deleting it.)
>>
> 
> I think we have discussed about the 255 in v1. Because Xen is using
> u8 as nodeid_t, so 255 may be a upper bound.

Indeed, but that's something you could have mentioned in the commit
message as justification. But you could also have opted to make the
upper bound 128. Let me ask you: Are you aware of systems with more
than a dozen or so nodes, that Xen can in principle run on?

> And if use a shift value, from a user perspective, I don't like it.
> It needs to be converted, not intuitive enough. It also limits my
> input range, even though my numerical values are reasonable. Yes,
> if a machine has 15 node, we can ask them to input 16, but why not
> let the users decide? instead of being forced to enter 16 by the program?

At least x86 Linux also wants this specified as a shift value, so
people may actually be (more) used to that. Plus non-pwer-of-2
values may yield more complex calculations when the compiler
generates code. Think of a two-dimensional distance table, for
example.

Jan



RE: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-14 Thread Wei Chen
Hi Jan,

> -Original Message-
> From: Jan Beulich 
> Sent: 2022年7月12日 22:34
> To: Wei Chen 
> Cc: nd ; Andrew Cooper ; George
> Dunlap ; Julien Grall ; Stefano
> Stabellini ; Wei Liu ; Roger Pau Monné
> ; xen-devel@lists.xenproject.org
> Subject: Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure
> NUMA nodes number
> 
> On 08.07.2022 16:54, Wei Chen wrote:
> > --- a/xen/arch/Kconfig
> > +++ b/xen/arch/Kconfig
> > @@ -17,3 +17,14 @@ config NR_CPUS
> >   For CPU cores which support Simultaneous Multi-Threading or
> similar
> >   technologies, this the number of logical threads which Xen will
> >   support.
> > +
> > +config NR_NUMA_NODES
> > +   int "Maximum number of NUMA nodes supported"
> > +   range 1 255
> > +   default "64"
> > +   depends on NUMA
> 
> Does 1 make sense? That's not going to be NUMA then, I would say.
> 

Ok, we need at least 2 nodes to be a real NUMA.

> Does the value being (perhaps far) larger than NR_CPUS make sense?
> 

Arm has 128 default NR_CPUS (except some platforms) and x86 has 256.
So I am not very clear about your comments about far larger? As my
Understanding, one node has 2 or 4 cores are very common in a NUMA
System.

> Why does the range end at a not-power-of-2 value? (I was actually
> going to suggest to have a shift value specified here, until
> spotting that NODES_SHIFT isn't used anywhere else, and hence
> you're rightfully deleting it.)
> 

I think we have discussed about the 255 in v1. Because Xen is using
u8 as nodeid_t, so 255 may be a upper bound.

And if use a shift value, from a user perspective, I don't like it.
It needs to be converted, not intuitive enough. It also limits my
input range, even though my numerical values are reasonable. Yes,
if a machine has 15 node, we can ask them to input 16, but why not
let the users decide? instead of being forced to enter 16 by the program?

> > +   help
> > + Controls the build-time size of various arrays and bitmaps
> > + associated with multiple-nodes management. It is the upper bound
> of
> > + the number of NUMA nodes that the scheduler, memory allocation and
> > +  other NUMA-aware components can handle.
> 
> Nit: indentation.
> 

Ok.

Cheers,
Wei Chen

> Jan


Re: [PATCH v2 9/9] xen: introduce a Kconfig option to configure NUMA nodes number

2022-07-12 Thread Jan Beulich
On 08.07.2022 16:54, Wei Chen wrote:
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -17,3 +17,14 @@ config NR_CPUS
> For CPU cores which support Simultaneous Multi-Threading or similar
> technologies, this the number of logical threads which Xen will
> support.
> +
> +config NR_NUMA_NODES
> + int "Maximum number of NUMA nodes supported"
> + range 1 255
> + default "64"
> + depends on NUMA

Does 1 make sense? That's not going to be NUMA then, I would say.

Does the value being (perhaps far) larger than NR_CPUS make sense?

Why does the range end at a not-power-of-2 value? (I was actually
going to suggest to have a shift value specified here, until
spotting that NODES_SHIFT isn't used anywhere else, and hence
you're rightfully deleting it.)

> + help
> +   Controls the build-time size of various arrays and bitmaps
> +   associated with multiple-nodes management. It is the upper bound of
> +   the number of NUMA nodes that the scheduler, memory allocation and
> +  other NUMA-aware components can handle.

Nit: indentation.

Jan