Meeting hardware requirements for virtualization remains something of an art form. It is important to give each
virtual machine the hardware it needs, but it is also important not to waste resources by over provisioning virtual machines. This decreases the total number of virtual machines that can simultaneously run on a host server, which increases costs. This article examines various techniques to ensure that you assign the proper hardware resources for virtual machines.
To meet hardware requirements for virtualization, heed application needs, guest machine limitations
Almost every application vendor publishes a list of hardware requirements for its applications. These requirements do not change just because an application runs on a virtual server. If an application requires 4 GB of memory, then you need to make sure the virtual machine on which you plan to run the application is provisioned with at least 4 GB of memory.
Some organizations prefer to give each virtual machine as much memory as it is ever likely to use, rather than taking the time to figure out how much memory each virtual machine really needs. Although this technique might waste memory, it does improve virtual machine performance, since the machine has been allocated plenty of memory.
If your organization uses this technique, one way to avoid wasting memory is to know the upper memory limits that each operating system supports. For example, 32-bit operating systems can address a maximum of 4 GB of memory. Assigning anything over 4 GB to a virtual machine running a 32-bit operating system would be a waste, since the operating system won’t even see the extra memory. (There are exceptions for servers using a Physical Address Extension).
To better identify your hardware requirements for virtualization of applications, the chart below illustrates the maximum amount of memory supported by various Windows Server operating systems.
|Operating System||Maximum Memory Supported|
|Windows Server 2008 R2 Datacenter||2 TB|
|Windows Server 2008 R2 Enterprise||2 TB|
|Windows Server 2008 R2 Foundation||8 GB|
|Windows Server 208 R2 Standard||32 GB|
|Windows HPC Server 2008 R2||128 GB|
|Windows Web Server 2008 R2||32 GB|
|Windows Server 2008 Datacenter X64||2 TB|
|Windows Server 2008 Enterprise X64||2 TB|
|Windows Server 2008 HPC Edition||128 GB|
|Windows Server 2008 Standard X86||4 GB|
|Windows Server 2008 Standard X64||32 GB|
|Windows Server 2003 R2 SP1 Datacenter X64||1 TB|
|Windows Server 2003 R2 SP1 Enterprise X64||1 TB|
|Windows Server 2003 R2 SP1 Standard Edition X64||32 GB|
|Windows Server 2003 R2 SP1 Standard Edition X86||4 GB|
|Windows Server 2003 SP2 Datacenter X64||2 TB|
|Windows Server 2003 SP2 Enterprise X64||2 TB|
|Windows 2003 Enterprise X64||64 GB|
|Windows 2003 Standard X64||16 GB|
|Windows 2003 Standard X86||4 GB|
|Windows 2003 Web Edition||2 GB|
|Windows 2000 Server||4 GB|
|Windows NT 4.0||4 GB|
Assuming that you base virtual server memory allocations around how much memory the virtual servers actually need, as opposed to how much they can support, you can simplify the memory planning process by using single-purpose virtual machines.
Memory planning can become complicated when you try to host multiple applications on a single virtual machine. Since each application vendor specifies the amount of memory required by its applications, let's pretend that one application requires 4 GB of RAM and that the other application requires 2 GB. Does that mean that hardware requirements for a virtual machine hosting both applications would be 6 GB of RAM?
The answer is probably not. When an application vendor specifies the amount of memory required for their application, the estimate usually takes into account the memory required by the operating system. If you are hosting two separate applications, then you usually won't be able to simply add the memory requirements together to determine the total memory needed. Both sets of memory requirements probably take the operating systems memory requirements into account.
To give you a more concrete example, suppose the applications were running on Windows Server 2008, which requires at least 512 MB of memory. However, Microsoft recommends equipping servers with at least 2 GB of memory. In that case, then the first application (the one requiring 4 GB) probably requires 2 GB for itself and 2 GB for the operating system. The second application (the one requiring 2 GB) probably does not use any more memory than some of the optional Windows system services, and, therefore, works fine with 2 GB of memory, assuming that nothing else is running on the server.
To address the hardware requirements for virtualization, it is a lot easier to run each application in its own virtual machine rather than guess how much memory is required.
The two applications used in this example would probably work fine with a little over 4 GB of RAM. The problem is that we don’t really know that for sure. To address the hardware requirements for virtualization, it is a lot easier to run each application in its own virtual machine rather than guess how much memory is required.
Of course, using a dedicated virtual machine for each application can consume more memory than would be used running multiple applications on a single virtual machine. The tradeoff, however, is that using a separate virtual machine for each application increases security and it makes it possible to shut down a virtual machine without affecting multiple applications. For health care organizations virtualizing mission-critical applications, this piece of mind is probably worth the extra memory consumption.
Performance Monitor not best choice for gauging hardware requirements for virtualization
In the past, the tool of choice for determining a system's hardware usage has always been the Performance Monitor. In a virtual environment, however, the Performance Monitor is of limited use. It works well for tracking memory usage and can be helpful for virtual machine capacity planning, but it does not work so well for tracking CPU or disk I/O consumption.
When you run the Performance Monitor inside a virtual machine, the Performance Monitor can only look at the resources that have been allocated to that virtual machine, not the resources available on the system as a whole. As such, if you use the Performance Monitor to measure the impact that the virtual machine is having on the physical hardware, the measurements will be skewed.
Brien M. Posey, MCSE, is a Microsoft Most Valuable Professional for his work with Windows 2000 Server and IIS. He has served as CIO for a nationwide chain of hospitals and was once in charge of IT security for Fort Knox. Write to him at firstname.lastname@example.org contact @SearchHealthIT on Twitter.