The Holy Grail for scientists the world over has been to discover the fundamental particle of nature. Computer scientists have adopted a more aggressive approach of trying to divide a server down to its most fundamental slice. Virtualization has been the new kid on the technology block for the last decade, and it is only now that we see technologies such as SaaS (Software as a Service) and Cloud computing taking it off the top of that list. Interestingly, these technologies will take deployment of virtualized environments even further.
The What…
So, what exactly does virtualization mean? By its very definition, virtualization means abstracting something. There is a famous phrase in software technology circles that “every problem can be solved by adding another layer of abstraction”. This is the basic paradigm of virtualization, the only difference being that server virtualization is all about abstracting the hardware resources at the lowest layer compared to traditional virtualization approaches of abstracting at the topmost layers of the stack, where the application resides. To define server virtualization, it is the abstraction of the hardware resources on a system. So, a user can create isolated environments for his applications, with the flexibility of adding/deleting resources when required, the ultimate aim being to increase the utilization of the available resources.
The Why…
The typical reason why a customer would go in for a virtualized environment is to be able to do server consolidation, i.e. consolidating a number of physical servers onto a reduced set of virtual servers. A few nuggets from IDC March 2007 reports make it clear why virtualization has become as popular as it is today: • More than 41 million physical servers will be installed in 2010; a 700% increase in just 15 years. • $8 is spent on maintaining legacy IT for every $1 invested in new IT infrastructure; this severely limits business innovation. • 50¢ is spent to power and cool servers for every $1 in server spending today; this will increase to 70¢ by 2010. • $29B is spent annually on server power and cooling, with only 30% actually going to the IT load. • Constructing a new data centre costs approximately $1,000 per square foot. This is $40,000 per rack or $2,400 for a typical server. • $20B will be spent on server virtualization in 2010, up 68% in 5 years.
The How…
A server can be either partitioned into virtual servers using hardware, firmware or software wherein each new entity sees a mutually disjoint subset of the resources on the system, or we can have what are known as virtual machines which see logical resources and the actual physical hardware is owned by a software/firmware entity known as the Virtual Machine Monitor (VMM/hypervisor). The VMM actually controls the hardware, and provides hooks for management agents to define the resource requirements of each operating system (also known as a “guest”), which can run under the control of the VMM. The VMM does CPU, Memory and I/O virtualization, and gives each guest operating system the impression that it is running on its own set of physical hardware resources.
The Problem…
If the VMM allows unmodified operating systems to run on top of it, the virtualization cost is very high. The traditional method of virtualization was what is known as “trap-and-emulate”. This is an expensive process, and the hardware support for this in the form of privilege rings in the CPU, had to be augmented with software techniques such as dynamic binary translation to support full virtualization.
And the Solution…
One of the initial techniques to solve this problem was paravirtualization, which basically involved modifications to the guest operating system to call into the VMM, where virtualization costs were high. However, this doesn’t improve the memory and I/O virtualization performance substantially, and this leads to the phase of hardware revolution in virtualization.
CPU manufacturers, especially Intel (VT-x) and AMD (SVM) on the x86 chipsets, introduced a special “root” or VMM mode in the chip to get around the deficiencies of the older privilege levels model. The next step in the evolution was memory virtualization, where, again, both Intel and AMD introduced technologies known as EPT(Extended page tables) and NPT (Nested page tables) respectively to enable direct hardware memory translations, instead of the VMM having to arbitrate the guest operating system’s access to physical memory.
The final step in this hardware evolution was the introduction of the VT-d and IOMMU technologies from Intel and AMD respectively, which allows I/O devices to be directly assigned to guest operating systems, and the DMA done by the devices to directly go to guest memory, rather than be done by the VMM on behalf of the guest, which is the main cause of the I/O virtualization overhead.
Simultaneously, the PCI SIG introduced two new specifications, known as the SR-IOV (Single root I/O virtualization) and the MR-IOV (Multi-root I/O virtualization) to address the device side of the issue. All the above hardware technologies are currently not fully mature, and hence the performance of virtual machines is still not near a bare-metal server, but the improvement has been substantial, and is expected to start nearing bare-metal over the next few years.
The Future is now…
As we move into the phase where cloud computing (e.g. Amazon EC2) becomes more popular and not just hype, virtualization technologies, especially the ability to move virtual machines around without downtime (examples being VMware vMotion and XenMotion) become more important. While this article has focussed primarily on server virtualization, network and storage virtualization have also been developing along similar lines, and the future holds more development around the confluence of these three areas of virtualization.
In the late 1990s, VMware was probably the only player in this area, but, thanks to the vision of the people like Mendel Rosemblum, today virtual machines are everywhere.




