In the modern-day, most x86 computers utilize no more than 15% of their total capacity, meaning that as much as 85% of a given system's resources are left untapped and therefore unusable. Virtualization, however, can increase utilization dramatically, and can lead to gains in performance that are quite notable.
Virtualization is an information technology concept and practice that has recently gained popularity, with those utilizing it and seeking performance gains without significantly greater costs. To understand this concept, it is first important to understand exactly what virtualization is.
While there are various types, the type that is revolutionizing computing and hosting environment, involves running multiple virtual machines (VMs) on a single computer or server. Essentially, this means running multiple guest operating systems (OS) on a single (host) computer.
Of course, the question then arises - how is this an advantage? Put simply, running multiple operating systems allows applications to be run alone or in small groups, thus segmenting hardware resources for various applications that are resource-intensive.
In many instances, applications that are run on a server are intended to stand alone on it. In the past, this meant utilizing multiple physical servers, thus increasing IT hardware costs out of proportion to performance gains.
With virtualization, however, a single computer can be segmented into multiple operating systems and "slices" of that computer's hardware can be utilized to run an application. In this sense, there is a specific dedication of hardware resources to specific applications.
Of particular interest is the fact that the additional operating systems, as well as the host OS, need not be the same. A host system running a Windows OS can run guest operating systems that are Windows-based or any combination of Unix, Linux, BSD, or other operating systems.
While virtualization represents a net gain in computing power, there are also implications in the form of "performance overhead." In short, it requires more resources than a single OS installation, but can be tweaked to lead to performance gains. Here is a brief overview of resource allocation for processing, memory, storage, and networking.
For applications that are processor-intensive, CPU virtualization can mean a reduction in overall performance. However, many setups create load balancing for processors that overcomes this problem.
VMs can also fully utilize multi-core processors as well as multi-processor configurations, meaning that it can work for CPU-intensive applications as long as load balancing is properly set up and utilized.
While the virtualization setup itself will require a small amount of RAM, this is relatively minimal and only truly limits the setup in terms of the number of guest operating systems (virtual machines) that can be set up.
If a large number of virtual systems are not required, this will almost never present any serious problems. Advanced setup can also allocate RAM dynamically, so that unused RAM within a virtual machine will be utilized.
Since a VM includes an individual operating system, there is disk space overheard in such a setup. However, operating systems can be set up to run as lean as possible for the given application that the VM will run. Many setups will allow shared access to hard drive slices, increasing throughput and offering a solid solution for I/O intensive applications.
Probably the least affected aspect of VMs is networking capability, which is virtually the same as that for a physical machine. These systems can be set up with their own IPs and can use multiple network interface cards, so that networking between them is very fast, as is between physical machines.