diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index 3fd015d462c..fc5333fefe5 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -955,7 +955,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe if (speed != null) { int cpuWeight = _maxWeight; //cpu_weight - int utilization = 0; // max CPU cap, default is unlimited + long utilization = 0; // max CPU cap, default is unlimited // weight based allocation cpuWeight = (int)((speed*0.99) / _host.speed * _maxWeight); @@ -964,12 +964,11 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe } if (vmSpec.getLimitCpuUse()) { - utilization = (int)((speed*0.99) / _host.speed * 100); + utilization = (((long)speed * vmSpec.getCpus() * 100 ) / _host.speed); } vcpuParams.put("weight", Integer.toString(cpuWeight)); - vcpuParams.put("cap", Integer.toString(utilization)); - + vcpuParams.put("cap", Long.toString(utilization)); } if (vcpuParams.size() > 0) {