Abstract - Cloud computing has become more and more popular with the widely deployment of several cloud infrastructures. Infrastructure-as-a-service (IaaS) Cloud computing replaces bare computer hardware. The cloud user will use the virtual machines (VMs) to fullfil their computing requirements. Among the components of IaaS cloud software stack, the resource allocation module is very important as it selects suitable VMs and the place to execute VMs. This paper focuses on studying and classifying algorithms used in the resource allocation module. The issues of how to apply those algorithms are also discussed.
Keywords – Cloud computing, IaaS data centre, resource allocation algorithm.
Introduction
Cloud computing has become more and more popular with the widely deployment of several cloud infrastructures [1]. The core principle of cloud computing is delivering services from shared hardware. The goal of this computing model is to make a better use of distributed resources, put them together to make higher throughput and be able to handle large-scale computation problem. People often categorize Cloud computing into three levels of use model or cloud computing services as presented in Fig. 1.
Figure 1. General Cloud categorization
Infrastructure-as-a-service (IaaS): Cloud computing replaces bare computer hardware. Users of IaaS have the ability to support operating systems and applications, but don't wish to buy server, storage and networking hardware and a data centre to house the hardware. Examples of those providers are companies such as Amazon[2], ENKI[3], GoGrid[4].
Platform-as-a-service (PaaS): Cloud computing replaces an execution environment for a computer language by providing a system ready to execute the user’s software. The user of PaaS is the programmer. Examples of those providers are companies such as Engine Yard[5] or Google[6].
Software-as-a-Service (SaaS): The user interacts directly
with the Cloud-hosted software, and often pays for “seats” or “users” instead of computer time. Examples of those providers are NetSuite[7], SalesForce.com[8], Google Apps[9].
Within the scope of this paper, we focus on IaaS Cloud. Figure 2 presents the typical architecture of an IaaS cloud. An IaaS cloud has many computing nodes grouped together to form clusters. For each node, there is virtualization component. It is a special purpose operating system that creates and maintains the VMs as well as serves their requests for accessing to hardware resources.
An NC (Node Controller) executes on every node that host VM instances. An NC makes queries to discover the node’s physical resources – the number of cores, the size of memory, the available disk space - as well as to learn about the state of VM instances on the node. The information collected is propagated up to the Cluster Controller.
The Cluster Controller (CC) generally executes on a cluster front-end machine. CC has three primary functions: issue running instances to specific NCs, control the instance virtual network overlay, and gather/report information about a set of NCs.
Figure 2. Typical IaaS cloud architecture
Cloud Controller is the entry-point into the cloud for users and administrators. It queries node managers for information about resources, makes resource allocation decisions, and implements them by making requests to cluster controllers.
Figure 3. Role of resource allocation in VM life cycle
Among the components of IaaS cloud software stack, the resource allocation module is very important as it assigns resources to VMs. Figure 3 presents the role of resource allocation in VMs’ life cycle. When a user submits
VMs to the IaaS cloud system, the cloud resource allocation module will find the acceptable VMs and find the initial places to run those VMs. During the VMs execution process, the cloud system may migrate VMs out of the initial place to other computing nodes. The cloud resource allocation module decides which nodes to migrate VMs to. While the node is executing VMs, the OS of the node may perform coarse-grained dynamic resource allocation to VMs [62].
In this paper, we want to concentrate on the natural distributed character of the IaaS cloud, but not on the OS within a physical node. Thus, this paper focuses on studying and classifying algorithms used in the cloud resource allocation module to decide which VMs to run and define the computing nodes to run those VMs. The rest of the paper is organized as follows. Section 2 summarizes related survey works. Section 3 presents taxonomies for resource allocation algorithms. Section 4 surveys various algorithms that have used for cloud resource allocation. Finally, we end this paper with discussion on open issues, lesson learned in section 5 and conclusion in Section 6.