Virtualizing Demanding Applications, Part 1
Lately, I have been fielding many questions regarding how to virtualize tier-1 applications. While many organizations have gone down the route of server virtualization, many have also shied away from tier-1 applications for many reasons. Some still have pre-conceived opinions dating back to the early days of server virtualization where the technology was not ready to tackle these types of workloads. And then there are those organizations that have attempted to virtualize tier-1 applications and have been unsuccessful for the simple reason of not possessing the right knowledge to do so.
In this two-part post, I take you through the process of virtualizing tier-1 applications -- what to look for in order to achieve the results you want.
Before I get down into the technical part, I want to stress a point that many seem to be ignoring: Understating the minimum, maximum and recommended settings of an application is critical as you try and virtualize it.
The reason I bring this up is because I hear, on a daily basis, things like: Why should I virtualize Exchange, or SQL? .. Or SharePoint? ... They require so many resources that it is better to put them on a physical machine. I will not go into the traditional benefits of server virtualization -- you should be well aware of that. Instead, you should focus on understanding the consolidation ratios for demanding applications, which is not as high as regular servers. So, don't expect the 25:1 ratios, but that's OK. Even if you virtualize at ratios of 2:1 or 3:1, you're doing much better.
Let's look at an example: If you are using an HP DL580 with four sockets and 10 cores, that is a total of 40 cores. With hyperthreading, you now have 80 threads -- that is a monster machine and a favorite for demanding applications.
Considering that the maximum CPU that Exchange can address is 12 cores, you can easily have three instances of Exchange on this server. So, again: Understanding the system requirements of the application is the first step in the process.
Now, let's examine the different technologies in the stack and the recommended configurations for virtualizing demanding applications. The components of the stack include CPU memory, network, and storage and VM virtual hardware configuration. So, let's tackle CPU.
HWmmu -- Make sure your processor has support for hardware-assisted memory management unit (MMU), this is important especially with demanding applications. Most of the new processors extend support for this technology as follows:
- Intel Extended Page Tables (EPT): Nehalem processors or better
- AMD Rapid Virtualization Indexing (RVI): Shanghai processor or better
BIOS settings
- NUMA: Enabled
- Hyperthreading: Enabled
- Power Management: Disabled. This is especially important in blade systems, it can lead to latency and can be detected with demanding applications, VDI, Citrix XenApp, Exchange, SQL, SharePoint, etc.
- Turbo: Enabled
Physical Server Platform
- If you will assign a VM 8 vCPUs or more, make sure that your physical server platform has at least 4 sockets, demanding VMs require a platform that can satisfy their needs, 8 vCPU VM can put a heavy burden on the hypervisor scheduler, as a result a bigger system is advisable
- Use vSphere 4.1 or newer; 4.1 introduced significant updates to the hypervisor scheduler which would enhance demanding applications access to compute resources
Next time, we look at the remaining stack components. Meanwhile, please do share your comments on what you have done to virtualize demanding applications and what your success or failure efforts.
Posted by Elias Khnaser on 02/27/2012 at 12:49 PM