[Qemu-devel] [PATCH v1] spapr.c: Update qemu's maxcpus for pseries machine.

Seeteena Thoufeek posted 1 patch 6 years, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1512127449-11114-1-git-send-email-s1seetee@linux.vnet.ibm.com
Test checkpatch passed
Test docker passed
Test ppc passed
Test s390x passed
hw/ppc/spapr.c | 1 +
1 file changed, 1 insertion(+)
[Qemu-devel] [PATCH v1] spapr.c: Update qemu's maxcpus for pseries machine.
Posted by Seeteena Thoufeek 6 years, 4 months ago
Need to adjust the max cpus supported number from error message since
it was conflicting with KVM's.

Steps to Reproduce:
1.boot up with
"-smp 64,maxcpus=102464,cores=8,threads=1,sockets=8"

qemu-kvm: Number of SMP CPUs requested (102464) exceeds max CPUs
supported by machine 'pseries-rhel7.4.0alt' (1024)

2. On KVM machine it shows

boot up with
"-m 6G,maxmem=300G,slots=256 -smp 64,maxcpus=1024,cores=8,threads=1
,sockets=128"

Number of hotpluggable cpus requested (1024) exceeds the maximum cpus
 supported by KVM (240)

It seemed that 1024 was useless since KVM only support 240 so far.
Hence,we need to adjust it to an reasonable value 240.

Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
---
 hw/ppc/spapr.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 9efddea..c753254 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3691,6 +3691,7 @@ static const TypeInfo spapr_machine_info = {
         if (latest) {                                                \
             mc->alias = "pseries";                                   \
             mc->is_default = 1;                                      \
+            mc->max_cpus = 240;                                      \
         }                                                            \
     }                                                                \
     static void spapr_machine_##suffix##_instance_init(Object *obj)  \
-- 
1.8.3.1


Re: [Qemu-devel] [PATCH v1] spapr.c: Update qemu's maxcpus for pseries machine.
Posted by David Gibson 6 years, 4 months ago
On Fri, Dec 01, 2017 at 04:54:09PM +0530, Seeteena Thoufeek wrote:
> Need to adjust the max cpus supported number from error message since
> it was conflicting with KVM's.
> 
> Steps to Reproduce:
> 1.boot up with
> "-smp 64,maxcpus=102464,cores=8,threads=1,sockets=8"
> 
> qemu-kvm: Number of SMP CPUs requested (102464) exceeds max CPUs
> supported by machine 'pseries-rhel7.4.0alt' (1024)
> 
> 2. On KVM machine it shows
> 
> boot up with
> "-m 6G,maxmem=300G,slots=256 -smp 64,maxcpus=1024,cores=8,threads=1
> ,sockets=128"
> 
> Number of hotpluggable cpus requested (1024) exceeds the maximum cpus
>  supported by KVM (240)
> 
> It seemed that 1024 was useless since KVM only support 240 so far.
> Hence,we need to adjust it to an reasonable value 240.
> 
> Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>

This has been written without adequate thought and investigation.

First, in upstream code there's nothing wrong with having different
limits in qemu and kernel - the can both vary depending on various
factors.  Secondly, the 240 limit doesn't come from the kernel
upstream - only in RHEL.

Third, it doesn't even come from the kernel in RHEL - the downstream
qemu lies about the kernel limit.

I'm in the process of fixing this correctly, I expect to have
something on Monday.

> ---
>  hw/ppc/spapr.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 9efddea..c753254 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3691,6 +3691,7 @@ static const TypeInfo spapr_machine_info = {
>          if (latest) {                                                \
>              mc->alias = "pseries";                                   \
>              mc->is_default = 1;                                      \
> +            mc->max_cpus = 240;                                      \
>          }                                                            \
>      }                                                                \
>      static void spapr_machine_##suffix##_instance_init(Object *obj)  \

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
Re: [Qemu-devel] [PATCH v1] spapr.c: Update qemu's maxcpus for pseries machine.
Posted by seeteena 6 years, 4 months ago
Thanks David for the explanation.

I thought the changes been into upstream code for pseries to limit

maxcpus to 240 instead of 1024.



On 12/01/2017 06:07 PM, David Gibson wrote:
> On Fri, Dec 01, 2017 at 04:54:09PM +0530, Seeteena Thoufeek wrote:
>> Need to adjust the max cpus supported number from error message since
>> it was conflicting with KVM's.
>>
>> Steps to Reproduce:
>> 1.boot up with
>> "-smp 64,maxcpus=102464,cores=8,threads=1,sockets=8"
>>
>> qemu-kvm: Number of SMP CPUs requested (102464) exceeds max CPUs
>> supported by machine 'pseries-rhel7.4.0alt' (1024)
>>
>> 2. On KVM machine it shows
>>
>> boot up with
>> "-m 6G,maxmem=300G,slots=256 -smp 64,maxcpus=1024,cores=8,threads=1
>> ,sockets=128"
>>
>> Number of hotpluggable cpus requested (1024) exceeds the maximum cpus
>>   supported by KVM (240)
>>
>> It seemed that 1024 was useless since KVM only support 240 so far.
>> Hence,we need to adjust it to an reasonable value 240.
>>
>> Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
> This has been written without adequate thought and investigation.
>
> First, in upstream code there's nothing wrong with having different
> limits in qemu and kernel - the can both vary depending on various
> factors.  Secondly, the 240 limit doesn't come from the kernel
> upstream - only in RHEL.
>
> Third, it doesn't even come from the kernel in RHEL - the downstream
> qemu lies about the kernel limit.
>
> I'm in the process of fixing this correctly, I expect to have
> something on Monday.
>
>> ---
>>   hw/ppc/spapr.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>> index 9efddea..c753254 100644
>> --- a/hw/ppc/spapr.c
>> +++ b/hw/ppc/spapr.c
>> @@ -3691,6 +3691,7 @@ static const TypeInfo spapr_machine_info = {
>>           if (latest) {                                                \
>>               mc->alias = "pseries";                                   \
>>               mc->is_default = 1;                                      \
>> +            mc->max_cpus = 240;                                      \
>>           }                                                            \
>>       }                                                                \
>>       static void spapr_machine_##suffix##_instance_init(Object *obj)  \


Re: [Qemu-devel] [Qemu-ppc] [PATCH v1] spapr.c: Update qemu's maxcpus for pseries machine.
Posted by Greg Kurz 6 years, 4 months ago
On Fri,  1 Dec 2017 16:54:09 +0530
Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com> wrote:

> Need to adjust the max cpus supported number from error message since
> it was conflicting with KVM's.
> 
> Steps to Reproduce:
> 1.boot up with
> "-smp 64,maxcpus=102464,cores=8,threads=1,sockets=8"
> 
> qemu-kvm: Number of SMP CPUs requested (102464) exceeds max CPUs
> supported by machine 'pseries-rhel7.4.0alt' (1024)
> 

The above error message was dumped by commit c0dd10991903 (authored by
you apparently). Now it should be:

Invalid SMP CPUs 102464. The max CPUs supported by
 machine 'pseries-rhel7.4.0alt' is 1024

> 2. On KVM machine it shows
> 
> boot up with
> "-m 6G,maxmem=300G,slots=256 -smp 64,maxcpus=1024,cores=8,threads=1
> ,sockets=128"
> 
> Number of hotpluggable cpus requested (1024) exceeds the maximum cpus
>  supported by KVM (240)
> 
> It seemed that 1024 was useless since KVM only support 240 so far.

This is the limit imposed by KVM, which is basically the number of
CPUs on the host system. On some bigger systems, it can be up to
1536 AFAIK.

The machine limit is a different beast and someone could legitimately
run a fully emulated guest (TCG) with 1024 CPUs.

Hence it really doesn't make sense to hardcode the KVM value from your
system into QEMU.

> Hence,we need to adjust it to an reasonable value 240.
> 
> Signed-off-by: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
> ---
>  hw/ppc/spapr.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 9efddea..c753254 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3691,6 +3691,7 @@ static const TypeInfo spapr_machine_info = {
>          if (latest) {                                                \
>              mc->alias = "pseries";                                   \
>              mc->is_default = 1;                                      \
> +            mc->max_cpus = 240;                                      \

BTW, this isn't the right place: the limit is set in spapr_machine_class_init()

>          }                                                            \
>      }                                                                \
>      static void spapr_machine_##suffix##_instance_init(Object *obj)  \