Book Image

vSphere High Performance Cookbook

Book Image

vSphere High Performance Cookbook

Overview of this book

VMware vSphere is the key virtualization technology in today's market. vSphere is a complex tool and incorrect design and deployment can create performance-related problems. vSphere High Performance Cookbook is focused on solving those problems as well as providing best practices and performance-enhancing techniques. vSphere High Performance Cookbook offers a comprehensive understanding of the different components of vSphere and the interaction of these components with the physical layer which includes the CPU, memory, network, and storage. If you want to improve or troubleshoot vSphere performance then this book is for you! vSphere High Performance Cookbook will teach you how to tune and grow a VMware vSphere 5 infrastructure. This book focuses on tuning, optimizing, and scaling the infrastructure using the vSphere Client graphical user interface. This book will enable the reader with the knowledge, skills, and abilities to build and run a high-performing VMware vSphere virtual infrastructure. You will learn how to configure and manage ESXi CPU, memory, networking, and storage for sophisticated, enterprise-scale environments. You will also learn how to manage changes to the vSphere environment and optimize the performance of all vSphere components. This book also focuses on high value and often overlooked performance-related topics such as NUMA Aware CPU Scheduler, VMM Scheduler, Core Sharing, the Virtual Memory Reclamation technique, Checksum offloading, VM DirectPath I/O, queuing on storage array, command queuing, vCenter Server design, and virtual machine and application tuning. By the end of this book you will be able to identify, diagnose, and troubleshoot operational faults and critical performance issues in vSphere.
Table of Contents (15 chapters)
vSphere High Performance Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

CPU scheduler – processor topology/cache aware


ESXi Server has an advanced CPU scheduler geared towards providing high performance, fairness, and isolation of virtual machines running on Intel/AMD x86 architectures.

The ESXi CPU scheduler is designed with the following objectives:

  • Performance isolation: Multi-VM fairness.

  • Co-scheduling: illusion that all vCPUs are concurrently online.

  • Performance: high throughput, low latency, high scalability, and low overhead.

  • Power efficiency: saving power without losing performance.

  • Wide Adoption: enabling all the optimizations on diverse processor architecture.

There can be only one active process per CPU at any given instant, for example, multiple vCPUs can run on the same pCPU, just not at one instant, but there are often more processes than CPUs. Therefore, queuing will occur, and the scheduler is responsible for controlling the queue, handling priorities, and preempting the use of the CPU.

The main tasks of the CPU scheduler are to choose which world is to be scheduled to a processor. In order to give each world a chance to run, the scheduler dedicates a time slice (also known as the duration a world can be executed (usually 10-20 ms, 50 for VMkernel by default)) for each process and then migrates the state of the world between run, wait, costop, and ready.

ESXi implements the proportional share-based algorithm. It associates each world with a share of CPU resource across all virtual machines. This is called entitlement and is calculated from the user-provided resource specifications, such as shares, reservations, and limits.

Getting ready

To step through this recipe, you need a running ESXi Server, a Virtual Machine, and a working installation of vSphere Client. No other prerequisites are required.

How to do it...

Let's get started:

  1. Log in to the VMware vSphere Client.

  2. In the virtual machine inventory, right-click on the virtual machine, and click on Edit Settings. The Virtual Machine Properties dialog box appears.

  3. Click on the Options tab.

  4. Under the Advanced section, click on General Row.

  5. Now on the right-hand side click on the Configuration Parameters button.

  6. Now click on the Add Row button at the bottom and add the parameter sched.cpu.vsmpConsolidate and on the Value section type TRUE.

  7. The final screen should like the following screenshot and then click on OK to save the setting.

How it works...

The CPU scheduler uses processor topology information to optimize the placement of vCPUs onto different sockets.

The CPU scheduler spreads the load across all the sockets to maximize the aggregate amount of cache available.

Cores within a single socket typically use a shared last-level cache. Use of a shared last-level cache can improve vCPU performance if the CPU is running memory-intensive workloads.

By default, the CPU scheduler spreads the load across all sockets in under-committed systems. This improves performance by maximizing the aggregate amount of cache available to the running vCPUs. For such workloads, it can be beneficial to schedule all of the vCPUs on the same socket, with a shared last-level cache, even when the ESXi host is under committed. In such scenarios, you can override the default behavior of the spreading vCPUs across packages by including the following configuration option in the virtual machine's VMX configuration file, sched.cpu.vsmpConsolidate=TRUE. However, it is usually better to stick with the default behavior.