Virtual Machine Balancing and Resource Management
Original Publication Date: 2005-Oct-11
Included in the Prior Art Database: 2005-Oct-11
This disclosure describes a method of virtual machine management by detecting resource hogs and moving them to less heavily loaded nodes.
Virtual Machine Balancing and Resource Management The Problem
The process of creating and managing virtual machines (VM) on large, mainframe class systems, to achieve reasonable efficiency is well understood in the computer industry. This efficiency is largely a result of the nature of the workload on large machines -- large machines inherently tend to run hundreds or thousands of VMs on a single system. These large workloads tend to even out utilization of a system over time, since a spike in demand by a small number of VMs would have little effect on the overall performance of the system.
However, the nature of computing is changing with the introduction of virtualization into commodity class machines, such as the Intel 32 bit Pentium class machines. These machines tend to run a couple or a few VMs. As a result of the small number of VMs running on an individual machine at any one time, a large spike in demand by one of more VMs may cause the machine to become overloaded. For example, one instance of an overloaded machine is when physical memory is exhausted and paging (aka swapping) occurs -- the writing and recalling of physical pages of memory to offline storage. This paging can seriously impair the effectiveness of a machine. The introduction of virtualization in commodity class machines, and the ability for a transient peak in demand to drastically effect the overall performance of the machine, has created a need for virtual machine balancing in commodity class machines.
Scope of the Invention
A cluster is a plurality of machines ("nodes") that cooperate to complete a large task. Clusters afford the opportunity to move work from a heavily loaded node to a less loaded node to ensure throughput and efficiency. This type of load balancing has been done for many years on the process or job level. However, we disclose a method of dynamic load balancing of entire virtual machines across a group of physical machines in response to the problem statement above. We introduce the concept of a VM Resource Supervisor (VMRS) that can:
-- determine that the VM allocation across nodes is out of balance (some nodes too heavily loaded, others under loaded)
-- provide a mechanism for redistributing VMs within the group to increase efficiency. This VM redistribution requires the ability to:
* suspend a VM on a node * migrate a suspended VM from one node to another * restart a suspended VM
-- provide a mechanism to dynamically alter the size of a VM; this includes methods of both shrinking or expanding the virtual memory size of a VM
Details of the Invention
There are two possible solutions we explore in addressing the problem of an unbalanced workload with respect to virtual machines. In the first scenario, a balance is achieved through a method of swapping a highly loaded VM on one node with a lightly loaded one on another, without changing the size of any of the virtual machines. In the second scenario, resources of the virtual machines are...