From 27ceb7cbb4ac89b6b4ff6b20bf4ccdd66bb534a0 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Thu, 5 Nov 2020 10:52:56 +0200 Subject: [PATCH 1/2] Limiting max cpus to max host value --- .../src/main/java/com/cloud/hypervisor/XenServerGuru.java | 7 ++++++- 1 file changed, 6 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 2ef942cd53a3..186c4fe89a77 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 @@ -98,7 +98,12 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { if (userVmVO != null) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { - to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); + // Max cpu cannot be more than host capability + if (host.getCpus() < MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())) + to.setVcpuMaxLimit(host.getCpus()); + else { + to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); + } } } From e0cc29ea9a5888a714b896895413c81f93ada966 Mon Sep 17 00:00:00 2001 From: Darrin Husselmann Date: Fri, 6 Nov 2020 10:54:22 +0200 Subject: [PATCH 2/2] Added log message --- .../main/java/com/cloud/hypervisor/XenServerGuru.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 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 186c4fe89a77..e8cea266af76 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 @@ -99,9 +99,16 @@ public VirtualMachineTO implement(VirtualMachineProfile vm) { HostVO host = hostDao.findById(userVmVO.getHostId()); if (host != null) { // Max cpu cannot be more than host capability - if (host.getCpus() < MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())) + if (host.getCpus() < MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())) { + String message = String.valueOf(new StringBuilder() + .append("Ignoring global max vCPUs limit (from global setting xen.vm.vcpu.max) on vm ") + .append(vm.getUuid()).append(" and setting VM max vCPU to host pCPU max: ") + .append(host.getCpus()) + .append(". Requested number of virtual CPUs exceeds number of host physical CPUs")); + logger.info(message); to.setVcpuMaxLimit(host.getCpus()); - else { + } else { + logger.info("Setting vm: " + vm.getUuid() + " max vCPU limit (from global setting xen.vm.vcpu.max) to: " + MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); to.setVcpuMaxLimit(MaxNumberOfVCPUSPerVM.valueIn(host.getClusterId())); } }