Consolidating workloads relates to allocating computing resources to multiple programs, for example assigning multiple programs to computing devices for execution, while attempting to consolidate the programs to be executed by only a part of the available devices. Such consolidation may enable, for example, the other devices to assume idle mode and reduce expenses by saving power or other resources.
One specific example of workload consolidation relates to executing virtual machines and attempting to reduce the number of used servers by consolidating the virtual machines.
A virtual machine (VM) is a software implementation of a machine (i.e., a computer) that executes programs, similarly to a physical machine. There are two common types of virtual machines: 1. A system virtual machine which provides a complete system platform that supports execution of a complete operating system. A system virtual machine usually emulates an existing architecture, and may be used to provide a platform for executing programs where the real hardware is not available, for example, an obsolete or a very expensive platform. Another common use of system virtual machine relates to emulating multiple instances of identical machines, thus leading to more uniformity and efficient use of computing resources. 2. A process virtual machine, sometime referred to as language virtual machine, designed to support a single process and execute a single program. Process virtual machines are usually closely suited to one or more programming languages and built for providing program portability and flexibility.
An essential characteristic of a virtual machine of either type is that the software executed by the virtual machine is limited to the resources and abstractions provided by the virtual machine, and cannot exceed them even if the physical machine offers additional resources.
One purpose of consolidating virtual machines to physical machines is using fewer machines, thus saving power, maintenance and other resources. However, consolidation is to be performed such that each virtual machine existing on the target machine, as well as a virtual machine migrated to the physical machine will have sufficient resources such that it can execute as expected.