Two weeks ago I was fortunate to be at VMworld 2015. I think it was of great value for me as a professional to be able to attend because by participating in the different sessions and Hands on Labs I learned and validated a lot of the knowledge I use on a day to day basis. I wrote some of this in my post VMworld PEX, but I would like to go over one of the sessions that was about Best Practices for vSphere across different scenarios. The session started with the presenter talking about virtualization all in. There is no reason or, in other words, there is not a single application that could not be virtualized and work for production. He made the disclaimer that the design might call for a change in hardware to accommodate for the performance needed, but in the end it could be done. Here is a summary:
- VMware all in!
- vSphere is achieving low network latency, into the microseconds.
- Due the characteristics of virtualization and its optimizations, VMware was able to score better performance running a hadoop cluster than the physical counterpart.
- The vCenter Web Client runs faster on Chrome
- Install the vCenter DB close to the vCenter, avoid having the database across the network.
- Place the vCenter and its database on Tier one storage.
- Don’t change statistics levels, the ones that come with the vCenter are practically useless, use Operations Manager instead.
- Check VMware KB 2021302 (previous to 6) for JVM correct sizing.
- Size the VM into the pNUMA node if possible. (https://blogs.vmware.com/vsphere/tag/vnuma)
- Don’t use vCPU Hot-Add, this disables the vNUMA.
- Select High Performance in the BIOS
- Enable Hyper-threading
- Use the latest Virtual Hardware Version
- Use vmxnet3 for network
- Jumbo Frames provide value, use it.
- Use Latency Sensitivity cautiously, it reserves a core.
You can adjust the latency sensitivity of a virtual machine to optimize the scheduling delay for latency sensitive applications.
ESXi is optimized to deliver high throughput. You can optimize your virtual machine to meet the low latency requirement of latency sensitive applications. Examples of latency sensitive applications are VOIP or media player applications, or applications that require frequent access to the mouse or keyboard devices.
- Use multiple vSCSI adapters
- Don’t user RDM’s. And if you need them for Microsoft Cluster then stop using MS cluster :).
- Follow you OEM’s integration guides, all vendors have white papers on how to configure this or that specifically for their equipment.
- In Windows set the Power Policy to High Performance to avoid core parking.
- The use of network receive side scaling (RSS) must be enabled at the guest NIC and Windows OS.
- Rightsize is better that oversize, configure the VM’s with what they need. I would add to oversize a bit on the host side.
- For Linux, be sure to use the latest kernel and Elevator=noop. Check this old KB that explains some of the I/O schedulers. (http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2011861)
- Database Recommendations
- Use Large Memory Pages
- Ensure vNuma is correct and aligned
- Tune SQL MAXDOP Cost Threshold (https://msdn.microsoft.com/en-us/library/ms189094.aspx)
- Oracle doesn’t leverage NUMA well and often benefits from disabling it at the database level
- Disable Interrupt Coalescing
- Messaging Recommendations
- Disable Interrupt Coalescing
- Fast Storage!
- In general, single threaded applications will benefit from higher frequency CPU’s, a high multicore CPU will work better for applications with a higher degree of parallelism.
- Don’t over commit the memory, design for approximately 75% RAM use. Take into consideration your admission control.
- HPC: http://www.vmware.com/files/pdf/techpaper/Virtualized-Hadoop-Performance-with-VMware-vSphere6.pdf
I hope this is somewhat helpful to everyone out there.