The Rise of Resource Overcommitment
In this world of constant digitization, the rise of large-scale cloud computing has given the users a choice to receive computing resources on-demand and with flexible pricing models. The cloud vendors pool in their massive hardware resources to provide virtual machines on top of it to its users. “Resource overcommitment” is best used to make use of the resources present in a virtualized cloud infrastructure. But what exactly is “Resource overcommitment”? In general terms, it is the allocation of more virtual resources to a machine or a group of machines than are physically present.
As most applications will never use all the resources allocated to them at all times, most of the resources provided by a provider will remain idle without “overcommitment.” Therefore, this approach is less wasteful and more profitable. Also, other than the public cloud offerings such as Microsoft Azure and Amazon Web Services, organizations of today are virtualizing their IT infrastructures to create private clouds. Although private clouds may have less strict SLAs, it still needs resource scheduling to improve the performance of virtual machines. Hence, overcommitment without resource management might lead to poor performance.
Virtualization in IaaS
IaaS or Infrastructure as a Service is driven by one of the critical technologies known as Virtualization. It enables multiple operating systems with different configurations to run on a physical machine at the same time.
A software layer called virtual machine monitor (VMM) or hypervisor is required to run the virtual machines on a system. This hypervisor controls all the hardware resources and can take resources from one VM to give them to another. The hypervisor manages the state of all the VMs at all times. It does so by catching all the privileged directions implemented by the guest VM and copying the resource they access. The hypervisor is also responsible for emulating all the hardware devices and implementing suitable resource isolation between multiple machines operating on the corresponding physical machine.
Types of Virtualization
Based on how they trap the privileged directions given by the guest kernel, there are primarily three techniques utilized for virtualization.
Complete Virtualization with Binary Translation. In this method, the user-mode code operates directly on the CPU without any translation. The non-virtualizable directions in the guest kernel-code are transcribed on the fly-to-code, which has the intended impact on the virtual hardware.
Hardware-driven Full Virtualization. The hardware vendors have developed new features to support virtualization and make virtualization simpler. AMD-V and Intel VT-x are two such technologies developed by AMD and Intel to provide specific directions in their ISA (Instruction Set Architecture) for virtual machines and a new ring privilege level for VM. Sensitive and privileged calls are set up to automatically trap the VMM, eliminating the need for either paravirtualization or binary translation. It also has a modified MMU with support for tagged TLBs and multi-level page tables.
Paravirtualization. This approach needs modification of the guest kernel. The non-virtualizable/privileged directions in the guest kernel source code are replaced with hypercalls that directly call the hypervisor. The hypervisor presents hypercall interfaces for kernel operations such as interrupt handling, memory management, and communication to devices. It varies from full virtualization, where the unmodified guest kernel is utilized, and the guest OS is not aware that it is operating in a virtualized environment.
Virtualization Benefits for IaaS
Virtualization presents numerous benefits other than just resource isolation. This makes it a driving technology behind IaaS success. Here are a few benefits of virtualization:
- It offers the capability to treat disks of a virtual machine as files which can be snapshotted for quick backup and restore.
- Virtual machines can be easily relocated or migrated if the physical machines require maintenance or develop some failure.
- Ease in expanding the resource capacity (RAM or CPU cores) of the machine at runtime by CPU or memory hotplug.
- It presents the ease of creation of new machines and deployment of applications via pre-built images of the filesystem of the machine.
- As the hypervisor emulates hardware resources, there is an opportunity for overcommitment of CPU and memory resources.
Resource Management in IaaS
Resource management is an indispensable way to make use of the underlying hardware of the cloud effectively. A resource manager oversees physical resources allocation to the virtual machines deployed on a cluster of nodes in the cloud. Also, the resource management systems have differing purposes depending upon the requirements.
Using physical machines reduces operational costs and can be accomplished through the overcommitment of resources. However, resource overcommitment comes with new challenges such as removal of the hotspot and the dilemma of where to schedule new incoming VMs to reduce the chances of the hotspot. For example: if the total capacity of the virtual machines operating on a physical machine is more than the full capacity of the physical machines, a situation may appear where the VMs might want to use a sum total of more resources than that are currently present. Not meeting those resource specifications can lead to violation of SLAs and poor performance of the VMs. This situation is called a hotspot.
Mitigating the Challenge of Hotspot
Live migration and memory ballooning of VM help in minimizing hotspots. Ballooning can be used if a VM is low on memory to take away some memory from one guest on the same host, which has some free memory, and provide it to the needy guest. But, if none of the guests have enough free memory, then most of the time, the host is overloaded. In that case, a guest has to be migrated from the current host to a different host while keeping an account of the complete load of the cluster.
Final Thoughts
This article gives a fair insight into the different technologies behind IaaS in cloud computing and how they are used. Resource overcommitment helps in making use of the hardware effectively, but resource management is necessary for overcommitment to work. However, there are numerous problems and challenges related to resource management and virtualization in IaaS, but a conscious approach along with proper research can empower us to reap the benefits of IaaS.