Distributed Memory and CPU Management in Cloud Computing Environments
A thesis submitted
in Partial Fulfillment of the Requirements
for the Degree of
Master of Technology
by
to the
DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING
INDIAN INSTITUTE OF TECHNOLOGY KANPUR
ABSTRACT
To efficiently utilize the resources in a virtualized environment, they need to be overcommited. Overcommitment is the process of allocating more resources to a virtual machine, or a group of virtual machines than are physically present on the host. It is based on the premise that most of the Virtual Machines will use only a small percentage of the resources allocated to them at a given time. However, situations may arise when the resources required by the virtual machines are more than the physical resources present on the machine. The performance of the Virtual Machines will be severely impacted in these situations. Most cloud providers generally have Service Level Agreements (SLAs) with their clients and hence cannot allow virtual machines to deliver a poor quality of service.
In this thesis, we explore the problem of overcommitment of the CPU and memory resources. We propose a distributed resource scheduler (DRS) which uses techniques such as memory ballooning and virtual machine live nigration to solve the problems in CPU and memory overcommitment. We design an architecture for DRS which is horizontally scalable and describe the techniques involved in monitoring and memory ballooning aspects of the DRS.
Contents
1 Introduction: Virtualization and Resource Management in Cloud
1.1 Virtualization
1.2 Virtual Machine Live Migration
1.3 Resource Management in Cloud
1.4 Organization of this Thesis
2 Related Work
2.1 Auto-Ballooning in Xen
2.2 Memory Management in VMware ESX
2.3 VMware Distributed Resource Management
2.4 Other Works
3 Architecture and Design of DRS
3.1 Functions of DRS
3.2 Goals and Non-Goals
3.3 Architecture Overview
4 Implementation of Monitoring and Auto-Ballooning
4.1 Monitoring
4.2 Auto-Ballooning
5 Experimental Evaluation
5.1 Experimental Setup
5.2 Results
6 Conclusions
6.1 Summary
6.2 Future Work
References