Utility-driven Allocation of Multiple Types of Resources to Virtual Machines in Clouds Dorian Minarolli and Bernd Freisleben Department of Mathematics and Computer Science, University of Marburg Hans-Meerwein-Str. 3, D-35032 Marburg, Germany {minarolli, freisleb}@informatik.uni-marburg.de Abstract—One of the challenges of ”Infrastructure-as-a- Service” Clouds is how to dynamically allocate resources to virtual machines such that quality of service constraints are satisfied and resource utilization is increased. There are several proposals to dynamically allocate particular types of resources to virtual machines, but an approach that considers all relevant types of resources is missing. In this paper, a multiple resource management approach, consisting of a resource manager that dynamically allocates CPU, memory, disk and network resources to virtual machines in order to maximize a utility function, is presented. Experimental results show the benefits of the proposed approach. Keywords-utility function; resource allocation; virtualization; control theory I. I NTRODUCTION Virtualization technologies such as Xen [3] or VMware [17] are typically used to increase resource utilization in ”Infrastructure-as-a-Service” Clouds through flexible resource management and consolidation. One of the key mechanisms for flexible resource management offered by virtualization is the dynamic allocation of resources to virtual machines (VMs), such as dynamically allocating CPU shares, memory portions, disk I/O rates and network bandwidth. There has been a lot of research on how to dynamically allocate particular types of resources to VMs, but approaches on how to manage multiple types of resources are lacking. The motivation for a combined management approach is that different types of applications or the same application in different execution phases require different types of resources, e.g., some applications are disk I/O bound, while other applications are CPU bound, such that the overall resource utilization can be improved by finding a proper match between application characteristics and resource types. In this paper, we present an approach for dynamically man- aging different types of resources, i.e., CPU, memory, disk, and network, by maximizing a utility function. In the field of economics, utility is a scalar value to express the satisfaction gained from a set of goods or services. In our context, a utility function is used to drive the allocation of resources to VMs such that quality of service (QoS) requirements are satisfied and the financial profit of the Cloud infrastructure provider is maximized. Our approach consists of resource managers situated in each physical machine of the Cloud infrastructure that dynamically manage resources of the VMs running on a physical machine. For each type of resource to be managed, the manager contains a) a monitoring component to measure resource usage, b) a feed-back controller to allocate resource shares to each VM such that QoS requirements are met, and c) an arbitrator that attempts to maximize a node utility function by considering the utility values of the VMs that run on it. The novelty of the proposed approach is to consider multiple types of resources and a new arbitration algorithm trying to maximize a utility function for the dynamic allocation of multiple types of resources. Experimental results indicate that our approach is beneficial for efficiently allocating different types of resources to VMs in Infrastructure-as-a- Service Clouds. The paper is organized as follows. Section II covers related work. Section III describes the utility function model, the architecture and the algorithm of the resource manager. Section IV discusses implementation issues. Section V presents the experimental setup and an evaluation. Section VI concludes the paper and outlines areas of future work. II. RELATED WORK Several proposals in the literature are based on utility func- tions to dynamically allocate resources. For example, Walsh et al. [18] and Menasce and Bennani [12] present approaches for using utility functions in autonomic computing systems to solve resource allocation tasks. Chase et al. [5] consider utility functions to dynamically allocate resources and to save energy by consolidating load. Van et al. [13] propose an autonomic resource controller that finds an optimal number and size of VMs to allocate CPU resources to applications maximizing a utility function by using a Constraint Programming (CP) approach. Cardosa et al. [4] propose a suite of techniques for VM placement trying to maximize a utility function while taking advantage of particular virtualization features. Kusic et al. [11] propose a dynamic resource provisioning framework that determines the number of VMs and their CPU allocation, maximizing a utility function using limited lookahead control and taking into account node switching cost and risk of pro- visioning. The works mentioned above dynamically allocate resources by maximizing utility functions similar to our work, but all of them exclusively focus on managing CPU usage - other types of resources such as memory, disk or network are not considered. Furthermore, An et al. [2] propose to use an economical model for resource allocation in the Clouds.