Resource Waits - time spent waiting for a resource to be available e.g. Locks, Latches, I/O etc
Signal Waits - the equivalent of the UNIX run queue - time spent waiting for the CPU to become available (as opposed to time spent actually processing)
Queue Waits - time spent waiting for something to do
External Waits - time spent waiting for something outside the database
sys.dm_os_wait_stats
sys.dm_os_waiting_tasks
CMEMTHREAD
IO_RETRY
PREEMPTIVE_DEBUG
RESOURCE_SEMAPHORE
RESOURCE_SEMAPHORE_QUERY_COMPILE
THREADPOOL
Azure DB
IO_QUEUE_LIMIT
LOG_RATE_GOVERNOR
POOL_LOG_RATE_GOVERNOR
REGMGR_THROTTLED
SE_REPL*
sp_WhoIsActive
sp_BlitzFirst
sp_PressureDetector
Get-DbaWaitStatistic
"Benign and can be ignored" (2)
If it doesn't need to wait for anything else, a SQL Server thread will run for a maximum of 4ms then voluntarily yield the processor. High SOS_SCHEDULER_YIELD waits can be an indicator of a SQL Server where all other waits have been eliminated. However, in a virtual environment, they can also be an indicator of hypervisor performance problems (i.e. cpu contention - check RDY%).