Top VMware vSphere Performance Tips
You most likely chose VMware’s vSphere as your virtualization solution due to its reputation as a solid and performant product; however, without proper attention and optimization you will not fully utilize the capabilities of the platform. There’s a multitude of optimizations that can be made to make your vSphere setup perform at optimal levels.
- Use only VMware-compatible hardware
VMware maintains a hardware compatibility list for each of the versions of their vSphere platform. Before purchasing or attempting to use any hardware configuration you should first make sure that all the components are properly supported. You also need to make sure that your hardware meets the minimum configuration necessary for proper installation and operation
- Run your system through a burn-in/stress test
When building or buying a new system for use in a server capacity it’s always a good idea to run the system through a thorough stress test or burn-in period. Various software exists that allows, you to do this and many are available as live CDs that you can boot and run the system through its paces. This helps to weed out faulty components and will allow you to ensure a solid platform when you switch the system to production.
- Choose appropriate back-end storage given the application
Many diverse systems exist for back-end storage and your choice of technology can have a tremendous impact on the overall performance of your system. Disk I/O is one of the major sticking points remaining in the computer hardware industry and has been one of the slowest to grow.
The choice of back-end storage devices and configurations depends on the type of applications you will be running. Commodity SATA drives in the server itself for instance will not suffice for high-speed writing to disk of large data sets produced by scientific equipment. If you have a need for high-speed or high-volume storage you may want to consider some of the more robust and effective storage mediums such as iSCSI or NFS. Your storage must be able to handle the required volume and read/write times for your applications to function smoothly while also accommodating the overhead of the host operating system and the vSphere system itself.
- Use server-class network interface cards
Not all network interface cards are created equal; built-in adapters tend to only support the needs of run-of-the-mill users. For enterprise-grade servers you’ll want to use server-class NICs that support checksum offloading, TCP segmentation offloading, the ability to handle 64-bit DMA addresses, the ability to handle scatter gather elements occurring multiple times within a single frame, and jumbo-sized frames. These features will allow vSphere to make use of its built-in advanced networking support.
- Provision virtual environments with only the resources that they require
It may seem counter-intuitive but when in virtualization systems over-allocating resources to your virtual machines comes with a performance penalty. VMware copes very well with overloading the system with too many virtual machines but it’s not very good at handling machines that waste resources. Start with the recommended/default settings for memory, storage, etc and then only adjust them as a need presents itself. The management console will tell you when there’s an issue with resources and you can act on these alerts as needed.
- Remove unused and unnecessary virtual and/or physical hardware from the VM
By disabling devices, you are freeing up interrupt resources. You also will get an increase in performance by disabling devices that consume extra resources due to polling such as USB adapters and PCI devices which reserve blocks of memory for their operation. Also, when using Windows guests be sure to disable optical drives as Windows constantly polls them which can cause issues especially when multiple guests are doing so simultaneously.
- Monitor CPU usage in your host environment
Keep track of the CPU usage of your entire virtualization setup via your console so that you can see when the system is over-allocated. You then have the choice to migrate VMs to other hosts in your network, to move resource hogs to less-densely-populated hosts, or to disable VMs that are no longer in use or necessary. As a rule of thumb VMware states that if the system average load is equal to the number of physical processors that the system contains that you are over-allocating your resources and have too many guests on your server.
- Enable Hyper-Threading if your hardware supports it
Hyper-threading is a technology that was developed to keep a steady stream of instructions being ran through your processor’s pipeline. Unlike multiple processors which allows for multiple instructions to be executed simultaneously HT reduces processor idle time and gets you more work performed for each of your clock cycles. There is no set and fast rule for the gains to be achieved via HT but for some applications it can more than double performance.
- Provide your host with a proper amount of memory for guests and for console overhead
When choosing how much physical memory to place in your host systems and how many guests to configure you need to total up the amount of memory that each VM will require. To this figure you will also need to add a buffer for overhead on the VM as well as the overhead required by vSphere itself. When unsure err on the side of slightly more physical memory than is required.
- Minimize the usage of applications that open and close files constantly or schedule them for periods of low disk I/O
Reading and writing files is the most expensive operation in computing. To make the most of your resources you should schedule cron jobs and I/O heavy operations for periods of low system and network utilization. If you are using I/O laden software during peak times you will experience often-times serious performance degradation.