![]() |
|
||||||||
|
|
|||||||||
|
|||||||||

With the introduction of virtual machines into enterprises, the need for ways to ensure optimal performance is moving to the center of the virtualization equation. For all the potential cost and performance benefits that can be achieved through implementation of virtual machines, the benefits will not be realized to the extent possible if proper attention is not paid to implementation and performance considerations.
High-performance virtualization is challenging, particularly with the x86 architecture,which was not designed for virtualization. There are three methods for implementing virtualization with the x86 architecture:
• transparent virtualization
• paravirtualization
• hardware
While either of these implementations will help move you along the path toward virtualization, typically a combination of the three is used for best performance, reliability and capability to the end user in the hypervisor environment. What is best for an enterprise will depend on the individual organization's specific requirements and environment.
A "hypervisor" (sometimes referred to as "virtual machine monitor") is a virtualization platform that allows multiple operating systems to run on a host computer at the same time.
There are two types of hypervisors:
• Type 1 is software that runs directly on a given hardware platform as an operating system control program, with a "guest" operating system running at the second level above the hardware.
• Type 2 is software that runs within an operating system environment, with a "guest" operating system running at the third level above that hardware.
Transparent virtualization allows operating systems, or components of the operating system, to run inside virtual machines without modification. This helps ensure that the guest operating systems run without modification. This results in excellent OS compatibility. Furthermore, because there is no modification, most CPU instructions are executed directly, with zero or low performance overhead.
Paravirtualization requires modifications to the OS before it can run inside the virtual machine. For example, changes may be required for drivers or kernels.
There are also instances where hardware can provide explicit support for virtualization. While this is not the norm, hardware vendors are moving into this area as the popularity of virtualization increases.
For memory management, a goal is to limit modification of the operating system to address virtualization and limit specific hardware changes. By limiting modification, performance will be enhanced. One method is the use of shadow page tables, which provide a map between the guest operating system's virtual memory pages and the underlying physical machine pages. This helps make virtual memory access efficient, without OS modification or hardware support. Shadow page tables insulate guest operating systems from their dependence on specific machine memory, allowing the hypervisor to optimize the use of that memory far beyond what an individual operating system is capable of doing.
In I/O virtualization, there are two key decisions: where the drivers for the physical network and storage hardware reside, and what virtual hardware is presented to the guest operating system. For high-performance I/O, drivers can be placed directly into the hypervisor.
Whichever method(s) is chosen, performance should be considered. Virtualization by its very nature imposes some level of performance overhead. The overhead comes from CPU virtualization, memory management, and I/O virtualization. The exact proportions and whether they represent a perceptible performance hit depends on workload. Paravirtualization is effective for situations in which certain non-virtualization instructions are being called, but its benefits can be outweighed by inadequate memory management or by poor I/O throughput. Also, what other workload is being run in the network, and how many virtual machines are being run.
Quality of Service is an important issue for virtual machines. No virtual machine should be able to negatively impact another virtual machine, and should be able to guarantee a minimum level of resources and service.
Just as with physical servers, you can tune a virtual machine to better suit one application or another. Whether your virtual server is running SQL Server or other databases, Citrix applications, web servers, or anything else, you'll want to make sure it's tuned properly. Fragmentation can have a substantial negative impact on the virtual machines' and the physical machine's performance, so defragmenting drives at both the physical and virtual layers is an important step to improving virtual machine performance.