nvazquez commented on a change in pull request #2482: CLOUDSTACK-10321: CPU Cap for KVM URL: https://github.com/apache/cloudstack/pull/2482#discussion_r173787248
########## File path: server/src/com/cloud/hypervisor/KVMGuru.java ########## @@ -52,10 +59,49 @@ protected KVMGuru() { super(); } + /** + * Retrieve host max CPU speed + */ + protected double getHostCPUSpeed(HostVO host) { + return host.getSpeed(); + } + + protected double getVmSpeed(VirtualMachineTO to) { + return to.getMaxSpeed() != null ? to.getMaxSpeed() : to.getSpeed(); + } + + /** + * Set VM CPU quota percentage with respect to host CPU on 'to' if CPU limit option is set + * @param to vm to + * @param vmProfile vm profile + */ + protected void setVmQuotaPercentage(VirtualMachineTO to, VirtualMachineProfile vmProfile) { + if (to.getLimitCpuUse()) { + VirtualMachine vm = vmProfile.getVirtualMachine(); + HostVO host = _hostDao.findById(vm.getHostId()); + if (host == null) { + throw new CloudRuntimeException("Host with id: " + vm.getHostId() + " not found"); + } + s_logger.debug("Limiting CPU usage for VM " + vm.getId() + " on host " + host.getId()); + double hostMaxSpeed = getHostCPUSpeed(host); + double maxSpeed = getVmSpeed(to); + try { + BigDecimal percent = new BigDecimal(maxSpeed / hostMaxSpeed); + percent = percent.setScale(2, RoundingMode.HALF_DOWN); + to.setCpuQuotaPercentage(percent.doubleValue()); Review comment: Solved, thanks ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services