From a83b9026384b201f279070b391985f535af8b08b Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 21 Aug 2023 13:51:52 +0200 Subject: [PATCH 1/9] xen/xcpng: revert java changes in PR #4672 This fixes #7375 --- .../main/java/com/cloud/hypervisor/XenServerGuru.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java index a8d7a6e268e4..9de6ba8ab4f7 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java @@ -17,7 +17,6 @@ package com.cloud.hypervisor; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -96,14 +95,7 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { if (userVmVO != null) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { - List clusterHosts = hostDao.listByClusterAndHypervisorType(host.getClusterId(), host.getHypervisorType()); - HostVO hostWithMinSocket = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpuSockets)).orElse(null); - Integer vCpus = MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId()); - if (hostWithMinSocket != null && hostWithMinSocket.getCpuSockets() != null && - hostWithMinSocket.getCpuSockets() < vCpus) { - vCpus = hostWithMinSocket.getCpuSockets(); - } - to.setVcpuMaxLimit(vCpus); + to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); } } From d5ab29772014dd44afe92994dc84732cd30731cb Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 09:06:23 +0200 Subject: [PATCH 2/9] Revert "xen/xcpng: revert java changes in PR #4672" This reverts commit a83b9026384b201f279070b391985f535af8b08b. --- .../main/java/com/cloud/hypervisor/XenServerGuru.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java index 9de6ba8ab4f7..a8d7a6e268e4 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java @@ -17,6 +17,7 @@ package com.cloud.hypervisor; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; @@ -95,7 +96,14 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { if (userVmVO != null) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { - to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); + List clusterHosts = hostDao.listByClusterAndHypervisorType(host.getClusterId(), host.getHypervisorType()); + HostVO hostWithMinSocket = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpuSockets)).orElse(null); + Integer vCpus = MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId()); + if (hostWithMinSocket != null && hostWithMinSocket.getCpuSockets() != null && + hostWithMinSocket.getCpuSockets() < vCpus) { + vCpus = hostWithMinSocket.getCpuSockets(); + } + to.setVcpuMaxLimit(vCpus); } } From 89fe6a7bec8253d0665fcaaeace7c193a7c5cf96 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 09:05:54 +0200 Subject: [PATCH 3/9] xen: check hosts cpu cores intead of cpu sockets --- .../src/main/java/com/cloud/hypervisor/XenServerGuru.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java index a8d7a6e268e4..449f93b83108 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java @@ -97,11 +97,11 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { List clusterHosts = hostDao.listByClusterAndHypervisorType(host.getClusterId(), host.getHypervisorType()); - HostVO hostWithMinSocket = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpuSockets)).orElse(null); + HostVO hostWithMinCpus = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpus)).orElse(null); Integer vCpus = MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId()); - if (hostWithMinSocket != null && hostWithMinSocket.getCpuSockets() != null && - hostWithMinSocket.getCpuSockets() < vCpus) { - vCpus = hostWithMinSocket.getCpuSockets(); + if (hostWithMinCpus != null && hostWithMinCpus.getCpus() != null && + hostWithMinCpus.getCpus() < vCpus) { + vCpus = hostWithMinCpus.getCpus(); } to.setVcpuMaxLimit(vCpus); } From 8fa9343ddcb69ca78aadc5d1e0961b520c0b6501 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 09:09:45 +0200 Subject: [PATCH 4/9] Revert "xen: check hosts cpu cores intead of cpu sockets" This reverts commit 89fe6a7bec8253d0665fcaaeace7c193a7c5cf96. --- .../src/main/java/com/cloud/hypervisor/XenServerGuru.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java index 449f93b83108..a8d7a6e268e4 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java @@ -97,11 +97,11 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { List clusterHosts = hostDao.listByClusterAndHypervisorType(host.getClusterId(), host.getHypervisorType()); - HostVO hostWithMinCpus = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpus)).orElse(null); + HostVO hostWithMinSocket = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpuSockets)).orElse(null); Integer vCpus = MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId()); - if (hostWithMinCpus != null && hostWithMinCpus.getCpus() != null && - hostWithMinCpus.getCpus() < vCpus) { - vCpus = hostWithMinCpus.getCpus(); + if (hostWithMinSocket != null && hostWithMinSocket.getCpuSockets() != null && + hostWithMinSocket.getCpuSockets() < vCpus) { + vCpus = hostWithMinSocket.getCpuSockets(); } to.setVcpuMaxLimit(vCpus); } From 35b6566d2fe26c59ca8438a7024de6371cc4ebd8 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 09:09:47 +0200 Subject: [PATCH 5/9] Revert "Revert "xen/xcpng: revert java changes in PR #4672"" This reverts commit d5ab29772014dd44afe92994dc84732cd30731cb. --- .../main/java/com/cloud/hypervisor/XenServerGuru.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java index a8d7a6e268e4..9de6ba8ab4f7 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/XenServerGuru.java @@ -17,7 +17,6 @@ package com.cloud.hypervisor; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -96,14 +95,7 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { if (userVmVO != null) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { - List clusterHosts = hostDao.listByClusterAndHypervisorType(host.getClusterId(), host.getHypervisorType()); - HostVO hostWithMinSocket = clusterHosts.stream().min(Comparator.comparing(HostVO::getCpuSockets)).orElse(null); - Integer vCpus = MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId()); - if (hostWithMinSocket != null && hostWithMinSocket.getCpuSockets() != null && - hostWithMinSocket.getCpuSockets() < vCpus) { - vCpus = hostWithMinSocket.getCpuSockets(); - } - to.setVcpuMaxLimit(vCpus); + to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); } } From dbc0aa79a84277e4ddd4f8aa1bf33836b3819a41 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 10:01:26 +0200 Subject: [PATCH 6/9] xen: set vmr.VCPUsMax to minimum of global setting and host cpu cores --- .../hypervisor/xenserver/resource/CitrixResourceBase.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 7fcf88584693..5895f6069b56 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -1338,7 +1338,12 @@ public VM createVmFromTemplate(final Connection conn, final VirtualMachineTO vmS vmr.VCPUsMax = (long)vmSpec.getCpus(); } else { if (vmSpec.getVcpuMaxLimit() != null) { - vmr.VCPUsMax = (long)vmSpec.getVcpuMaxLimit(); + long vcpuMaxLimit = (long) vmSpec.getVcpuMaxLimit(); + if (vcpuMaxLimit <= _host.getCpus()) { + vmr.VCPUsMax = vcpuMaxLimit; + } else { + vmr.VCPUsMax = (long) _host.getCpus(); + } } } } else { From 9f156369b29ecd35d5009aa50a8156f39a601237 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 10:41:35 +0200 Subject: [PATCH 7/9] Update plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java Co-authored-by: dahn --- .../hypervisor/xenserver/resource/CitrixResourceBase.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index 5895f6069b56..e996f45afd27 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -1338,12 +1338,7 @@ public VM createVmFromTemplate(final Connection conn, final VirtualMachineTO vmS vmr.VCPUsMax = (long)vmSpec.getCpus(); } else { if (vmSpec.getVcpuMaxLimit() != null) { - long vcpuMaxLimit = (long) vmSpec.getVcpuMaxLimit(); - if (vcpuMaxLimit <= _host.getCpus()) { - vmr.VCPUsMax = vcpuMaxLimit; - } else { - vmr.VCPUsMax = (long) _host.getCpus(); - } + vmr.VCPUsMax = Math.min(vcpuMaxLimit, _host.getCpus()); } } } else { From 2ee927408c54ec10763d9aa55127b2c8efc7f44d Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 11:08:24 +0200 Subject: [PATCH 8/9] Update plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java --- .../cloud/hypervisor/xenserver/resource/CitrixResourceBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index e996f45afd27..aef8e54f0289 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -1338,7 +1338,7 @@ public VM createVmFromTemplate(final Connection conn, final VirtualMachineTO vmS vmr.VCPUsMax = (long)vmSpec.getCpus(); } else { if (vmSpec.getVcpuMaxLimit() != null) { - vmr.VCPUsMax = Math.min(vcpuMaxLimit, _host.getCpus()); + vmr.VCPUsMax = Math.min(vmSpec.getVcpuMaxLimit(), _host.getCpus()); } } } else { From d72745fd374f7e0c74af21f932d93476535f27b5 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 28 Aug 2023 11:09:09 +0200 Subject: [PATCH 9/9] Update plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java --- .../cloud/hypervisor/xenserver/resource/CitrixResourceBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java index aef8e54f0289..79a1ef034839 100644 --- a/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java +++ b/plugins/hypervisors/xenserver/src/main/java/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java @@ -1338,7 +1338,7 @@ public VM createVmFromTemplate(final Connection conn, final VirtualMachineTO vmS vmr.VCPUsMax = (long)vmSpec.getCpus(); } else { if (vmSpec.getVcpuMaxLimit() != null) { - vmr.VCPUsMax = Math.min(vmSpec.getVcpuMaxLimit(), _host.getCpus()); + vmr.VCPUsMax = Math.min(vmSpec.getVcpuMaxLimit(), (long) _host.getCpus()); } } } else {