cloudstack-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CLOUDSTACK-10321) CPU Cap for KVM
Date Mon, 12 Mar 2018 10:28:00 GMT

    [ https://issues.apache.org/jira/browse/CLOUDSTACK-10321?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16395042#comment-16395042
] 

ASF GitHub Bot commented on CLOUDSTACK-10321:
---------------------------------------------

rafaelweingartner commented on a change in pull request #2482: CLOUDSTACK-10321: CPU Cap for
KVM
URL: https://github.com/apache/cloudstack/pull/2482#discussion_r173747369
 
 

 ##########
 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());
+                s_logger.debug("Host " + host.getId() + " max CPU speed = " + hostMaxSpeed
+ "MHz, VM " + vm.getId() +
+                        "max CPU speed = " + maxSpeed + "MHz. Setting CPU quota percentage
as: " + percent.doubleValue());
+            } catch (NumberFormatException e) {
+                s_logger.error("Error calculating vm quota percentage, it wll not be set:
" + e.getMessage());
 
 Review comment:
   Is this CPU quota limit set by VM?
   What about logging the VM UUID that caused this error here?
   

----------------------------------------------------------------
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:
users@infra.apache.org


> CPU Cap for KVM
> ---------------
>
>                 Key: CLOUDSTACK-10321
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-10321
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the default.) 
>            Reporter: Nicolas Vazquez
>            Assignee: Nicolas Vazquez
>            Priority: Major
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message