Improving CPU Service Offerings in Apache CloudStack

Cloud computing has grown in popularity in recent years, partly due to the availability of different open source solutions for building private, public and even hybrid clouds, as Apache CloudStack. One of the challenges posed by cloud applications is Quality-of-Service (QoS) management. In the particular case of Apache CloudStack, Service Offerings are employed as the way to specify QoS levels, as they allow to define the characteristics of the Virtual Machines (VMs) running in the Compute Nodes (CNs) in the Cloud. However, the current implementation of the Apache CloudStack Agent cannot limit the CPU usage of the VMs accurately when the KVM hypervisor is used, presenting a high variability in the performance. This is due to the fact that the performance of the VM does not only depend on the Service Offering selected by the user but also depends on the Service Offerings of the VMs coexisting in the same CN, even if the node is not over-provisioned. Cloud users expect providers to deliver a fixed quality characteristics. If the VM characteristic fluctuate, depending on other VMs sharing the same hardware, it is going to be impossible for the user to determine the best cloud configuration to achieve her requirements. To overcome this situation, we have implemented a supervised Apache CloudStack Agent that can limit the CPU usage accurately, providing performance isolation to the user VM, so each user VM behaves exactly how it is specified in the Service Offerings. The behaviour of this new agent is analysed in this paper under several scenarios.

keywords: KVM, service offerings, performance, Apache CloudStack