To simplify things initially, we’ll forget about hidden schedulers and assume hard CPU affinity. That gives us an execution environment that looks like this:
Each CPU is physically tied to a scheduler.
Therefore, out of all the workers in the system, there is a subset of workers that will only run on that CPU.
Workers occasionally hand over control of their CPU to a different worker in their scheduler.
At any given moment, each CPU is expected to be running a worker that does something of interest to the middle or upper layers of SQL Server.
Some of this useful work will be done on behalf of the worker’s scheduler siblings.
However, a (hopefully) tiny percentage of a worker’s time is spent within the act of scheduling.
As usual, this is worth the read.