The CPU scheduler in VMware vSphere® 5.x (ESXi™ 5.x) is crucial to providing good performance in a consolidated environment. Because most modern processors are equipped with multiple cores per processor, or chip multiprocessor (CMP) architecture, it is easy to build a system with tens of cores running hundreds of virtual machines. In such a large system, allocating CPU resources efficiently and fairly is critical.
The goal of this document is to provide detailed explanations of ESXi CPU scheduling policies to help vSphere users who want to understand how virtual machines are scheduled. In most cases, the CPU scheduler works well with no special tuning. However, a deeper understanding of the scheduler can help users troubleshoot some performance problems and implement best practices to get the most of a scheduling policy. It is beyond the scope of this paper to provide implementation specifics of the ESXi CPU scheduling algorithm or to provide the complete information of a tuning guide.
The paper also calls out a couple of interesting updates on the CPU scheduler in vSphere 5.x. For example, the CPU load balancing algorithm has significantly changed and provides nice performance improvements. vNUMA (virtual NUMA) is another exciting feature introduced in vSphere 5.0. vNUMA greatly improves the performance of workloads that are optimized for a NUMA (Non-Uniform Memory Access) architecture.
This paper also substantiates the claims it makes with experimental data, although not every claim is backed by data. The tests were performed with micro-benchmarks that simulate certain aspects of real-world workloads, However, results may vary with actual workloads carried out on different test or production environments.
The CPU Scheduler in VMware vSphere 5.1