This article provides information on scheduler operation when using CPU affinity.
By specifying a CPU affinity setting for virtual machines, you can restrict the assignment of virtual machines to a subset of the available processors in multiprocessor systems.
The scheduler operation guarantees that virtual CPUs are not migrated to or execute on a processor outside the configured affinity set. This behavior is consistent across all versions of ESXi.
Other virtual machine worlds, outside of the virtual CPUs where guest operating system application binaries are executed, can include threads to perform processing required for emulating mouse, keyboard, screen, CD-ROM, miscellaneous legacy devices and IO completion for the virtual machine.
The CPU affinity setting for a virtual machine applies to all of the virtual CPUs associated with the virtual machine.
This respect of physical boundaries by the scheduler may be required for some guest application licensing models.
By using this feature, you can assign each virtual machine to processors in the specified affinity set. In this context, the term CPU refers to a logical processor on a hyper threaded system and refers to a core on a non-hyper threaded system.
CPU affinity specifies virtual machine-to-processor placement constraints and is different from the relationship created by a Virtual Machine -Virtual Machine or Virtual Machine -Host affinity rule, which specifies Virtual Machine-Virtual Machine host placement constraints.