Server virtualization is becoming widespread, bringing multiples benefits to infrastructure management: reduction in the number of physical servers, simplified provisioning and rationalization of technological architectures.
However, with virtualization come new practices that do not match with old infrastructures habits, especially when it involves new server allocation.
The challenge does not reside in how simple is the creation of a new server in “three-clicks” - generating virtual server sprawl - but rather the difficulties of properly configuring the characteristics of a virtual machine.
The old adage “Small is beautiful” is rarely applied to server configuration. In the past when buying physical machines, the amount of server capacity required would have been overestimated in order to avoid potential performance problems.
There are challenges finding the ‘sweet spot’ when applying this approach when configuring server capacity in a virtualized environment:
- An undersized virtual machine will obviously lead to performance problems
- An oversized virtual machine will also lead to performance problems
When planning processor management in a virtual environment, it is important to consider that to allow virtual machine execution the hypervisor should be able to schedule every virtual processor to a physical processor.
Extra considerations need to be factored into capacity planning, such as within a 4-core server, setting up multiple virtual machines configured each with 4 virtual processors will produce significant contention on physical processors, making the simultaneous execution of multiple virtual machines more difficult and generating latency. The waiting time resulting of this practice will therefore impact the overall performance of every virtual machine running in the server.
On the memory management side, the hypervisor distributes the physical memory pages to the virtual machines according to their needs, and manages memory shortage through a global paging strategy that impacts performance of every virtual machine on the server.
Oversizing virtual machine memory configuration can lead to issues when operating applications embark on opportunistic behavior such as reserving all available memory for their own use (eg: Oracle, SAP, SQL Server, Exchange …). In this situation, both guest operating system and hypervisor cannot rely on a strategy to determine efficiently which pages should be pinned into physical memory and which one should be swapped. As a consequence, excessive global paging activity will generate memory contention in every virtual machine degrading overall server performance.
Already the apparent simplicity provided by virtual infrastructures is being questioned, and the potential risks created by configuration side effects between virtual machines are exposed. Whatever the virtualization platform (Xen, VMware, POWER…), the implementation of virtual infrastructures does not preclude of fine tuning the performances of the systems to find the right balance point. After all, haven’t we been warned about the risk of putting all one’s eggs in one basket?
