Virtual Machines (VM) and Virtual Machine Monitors and Managers (VMM) are becoming the de facto standard in data centers (the Cloud). The primary reason is that they increase data center utilization and reduce the need for servers and server upgrades. VM and VMMs lowers a data center’s cost, whether its a public cloud, like Azure or AWS, or its a private or on-premise cloud. This because a VM/VMM architecture allows applications to share servers and the multi-core processors inside the server.
The concept is nothing new, it dates back to the 1960s, originally coined as time-sharing. In a time sharing or VM/VMM environment, several applications programs are granted access to a processor. The catch is that each application program only gets access for a specific period of time. Once an applications program execution time slot, times-out, the next application program obtains access to the processor instruction execution pipeline (also referred to as a context switch). Because a processor can execute instructions very quickly, for the most part, all the applications programs perform their tasks on just one processor without any obvious slow-down in performance.
But that is to a point. The alternative to time-sharing or VM/VMM is to allow each application program running to have access to its own processor. In that case, each application program will perform their tasks quicker than they would in a VM/VMM environment, but how much quicker depends on the code that the application programs must execute. Sometimes the trade off between using the data center’s hardware resources, for example, five processors with five different application programs versus using the resources of just one processor executing five different application programs, is not worth the overhead.
Making the decision as to how many processors and for that matter what types of processors should be used to run what application programs (often referred to as workloads or virtual machine guests) is extremely complex. More so in a data center environment. In that case the Virtual Machine Manager, has to decide how to split up the work, but not for a just a few application programs and processors, but for several hundred thousand application programs and several hundred processors. All with the underlying thought in mind, that the end-users (the that are waiting for the application to run, don’t notice a slowdown.
Although data center administrators have some control over data center resource usage, in the end, such a complex task, is something that, for optimum results must be done via preprogrammed firmware, hardware and middleware.