Virtualization makes use of four resources: CPU, disk, memory, and network, all of which create a difficult balancing act for data center administrators trying to achieve the optimal configuration for their virtual environment.
How do you select the "best" memory, CPU and storage for virtualization? These answers to frequently asked questions will guide you in your decision-making.
Are there tools to optimize or balance virtualization utilization?
Some hypervisors have tools such as VMware Dynamic Resource Scheduling that automatically detect contention and migrate virtual machines to other hosts to affect an automated balance. There were even hints at VMworld 2009 of this happening for storage contention as well (Dynamic Resource Scheduling using Storage VMotion). Other than the tools provided by VMware for their own products, I have yet to see an automated tool for the other hypervisors.
Should there be more than one virtual CPU for a Virtual Machine?
In general, no, as most applications and operating systems do not actually make use of the other CPUs. There are always exceptions to this statement, and those pertain to those applications that are threaded or have many processes that make them up. Often SQL Server, Exchange, and Terminal Service applications are candidates for multiple virtual CPUs.
Is there a 'best' CPU for virtualization?
This has been a debate for sometime: do I use AMD or Intel CPUs? The answer is use what works best for you. If you have only AMD, go with AMD, etc. The key however is to use CPUs that have either AMD-V or Intel-VT technologies within them. All Quad Core CPUs have this functionality. The other factor to be aware of is that you may require specific processors to meet the functional requirements of the hypervisor. For example, VMware' Fault Tolerance requires a limited subset of CPUs. In general, however, Quad-Core CPUs is the starting point for which CPUs to choose.
How do you select storage for virtualization?
To select storage for virtualization you need to determine what type of storage your hypervisor supports, then look into those options. For example, you would not want a CIFS storage device for VMware ESX.
Once you've done the research, it's time to run tests using your virtual machine workload. Each workload for each company will be different. Therefore you need to design and run your own tests to decide which technology works best and which vendor offers the best set of features for your needs.
In general, your storage choices will depend on the speed of your networking adapters. A 12Gb FC-HBA is faster than a 10Gb network adapter, yet a 4Gb FC-HBA will be slower than a 10Gb FCoE adapter. It is important to look at all aspects of your storage.
How do you determine how much memory is in use by your virtualization host?
This is done by looking at the state of the virtualization host. You can go to each VM and do the math, but each hypervisor intimately knows all memory in use. VMware ESX and ESXi optimize memory usage by using transparent page sharing which improves overall virtual memory usage and virtualization memory management.
How do you determine CPU performance?
Since the hypervisor knows every clock cycle given to a specific VM, you can determine CPU performance by looking outside the VM at the hypervisor level. Tools run from within a VM are more a gauge without the ability to give you valid real numbers. The only time when this gauge is real is when the hypervisor has not overcommitted CPU. If CPU overcommit occurred, then each VM is getting a slice of a CPU and not the full CPU which the internal to the VM performance meters require.
ABOUT THE AUTHOR: Edward L. Haletky is the author of VMware ESX Server in the Enterprise: Planning and Securing Virtualization Servers. He recently left Hewlett-Packard Co., where he worked on the virtualization, Linux and high-performance computing teams. Haletky owns AstroArch Consulting Inc. and is a champion and moderator for the VMware Communities Forums.