Quality of Service

The Quality of Service (QoS) associated with a thread is used to indicate the desired performance and power efficiency. Each thread is assigned to a QoS level. While scheduling priority remains the main metric by which the system determines which thread to schedule next, QoS can influence core selection and processor power management. On platforms with heterogeneous processors, the QoS of a thread may restrict scheduling to a subset of processors, or indicate a preference for a particular class of processor.

Developers may already be employing other facilities to control when to execute, such as when the user is not present, only on AC/charging, or depending on the battery level. QoS provides a facility to influence how to execute. This facility can help to improve CPU efficiency and thus extend battery life. In addition, this process can assist in reducing CPU power consumption while operating on AC power to reduce thermal output which can lead to high fan noise, or even thermal throttling.

Quality of Service levels

The system maintains multiple QoS levels, each with differentiated performance and power efficiency. Windows provides standard default settings for scheduling and processor power management for each QoS level. The precise tuning of each QoS level for processor power management and heterogeneous scheduling can be modified through Windows Provisioning. For more information on performance tuning and provisioning, see Processor power management options.

QoS level Description Performance and power Release
High Windowed applications that are in the foreground and in focus, or audible, and explicitly tag processes with SetProcessInformation or threads with SetThreadInformation Standard high performance. 1709
Medium Windowed applications that may be visible to the end user but are not in focus. Varies by platform, between High and Low. 1709
Low Windowed applications that are not visible or audible to the end user. On battery, selects most efficient CPU frequency and schedules to efficient core. 1709
Eco Applications that explicitly tag processes with SetProcessInformation or threads with SetThreadInformation. Always selects most efficient CPU frequency and schedules to efficient cores. Windows 11
Media Threads explicitly tagged by the Multimedia Class Scheduler Service to denote multimedia batch buffering. CPU frequency reduced for efficient batch processing. 2004
Deadline Threads explicitly tagged by Multimedia Class Scheduler Service to denote that audio threads require performance to meet deadlines. High performance to meet media deadlines. 2004

Quality of Service classification

The following table shows the supported QoS classifications.

Source Description
Multimedia Foundation The Multimedia Class Scheduler Service prioritizes CPU resources for multimedia scenarios. The service tags specific threads responsible for multimedia processing using the Media and Deadline QoS levels to provide power efficiency while meeting performance deadlines.
API SetProcessInformation lets developers explicitly tag a process as HighQoS or EcoQoS by toggling the PROCESS_POWER_THROTTLING_EXECUTION_SPEED feature in ProcessPowerThrottling.
SetThreadInformation lets developers explicitly tag a thread as HighQoS or EcoQoS by toggling the THREAD_POWER_THROTTLING_EXECUTION_SPEED feature in ThreadPowerThrottling .
Audible Processes which are determined to be playing audio are HighQoS.
Visible Processes which directly own a window (or are descendants of window owning processes) are assigned a QoS level according to their visibility and focus state:

Window StateQuality of Service
In FocusHigh
VisibleMedium
Minimized, or Fully OccludedLow
Heuristic Threads which are not classified by the above sources are automatically assigned a QoS level by the system. These heuristics include (but are not limited to) thread priority, where threads running with reduced thread priority can imply a lower QoS level.