CPU scheduling and thread priority
The MMCSS Games task profile
GPU Priority, Priority, Scheduling Category, SFIO Priority — and which of them Windows actually reads
Last updated
What do the MMCSS Games registry values do?
Under the MMCSS SystemProfile there is a Tasks subkey containing a Games profile, and adjusting its values is one of the most widely shared gaming tweaks there is. Microsoft's documentation is explicit that two of the values people are told to change -- GPU Priority and SFIO Priority -- are not used by the system at all, and that the Clock Rate guarantee was removed in Windows 7.
Registry location and values
GPU Priority
- Location
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games- Value name
GPU Priority- Type
REG_DWORD- Default
- 8
| Value | What it does |
|---|---|
0-31 | Documented range. Microsoft states: "This priority is not yet used." Changing it has no effect. |
Priority
- Location
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games- Value name
Priority- Type
REG_DWORD- Default
- 2
| Value | What it does |
|---|---|
1-8 | Task priority, 1 low to 8 high. Real, but note the caveat below. |
Caveat | For tasks whose Scheduling Category is High, Priority is always treated as 2 regardless of what you set. |
Scheduling Category
- Location
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games- Value name
Scheduling Category- Type
REG_SZ- Default
- Medium
| Value | What it does |
|---|---|
High | Thread priority 23-26. Intended for Pro Audio. Forces Priority to be treated as 2. |
Medium | Thread priority 16-22. Threads belonging to the foreground application. The default for Games. |
Low | Thread priority 8-15. |
SFIO Priority
- Location
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games- Value name
SFIO Priority- Type
REG_SZ- Default
- High
| Value | What it does |
|---|---|
Idle, Low, Normal, High | Scheduled I/O priority. Microsoft states: "This value is not used." |
Clock Rate
- Location
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games- Value name
Clock Rate- Type
REG_DWORD- Default
- 10000
| Value | What it does |
|---|---|
100-nanosecond units | A scheduling granularity hint. On Windows Vista this was a guaranteed maximum clock rate; from Windows 7 onward that guarantee was removed to reduce power consumption. |
What Windows actually does with this
A process calls AvSetMmThreadCharacteristics naming a task such as "Games". MMCSS then applies the characteristics stored under that task's registry key to the calling thread. Scheduling Category maps to a thread priority band; Priority positions the thread within it. The other values in the key are read but, per Microsoft's own documentation, are either unused or no longer honoured.
What it affects
Only processes that explicitly register with MMCSS under the Games task. A game that never calls the API is completely unaffected by anything in this key, whatever the values say.
Is it worth changing?
Setting GPU Priority to 8 is the most widely repeated gaming registry tweak in existence and Microsoft documents the value as unused. The same is true of SFIO Priority. Scheduling Category and Priority are real, but raising Games to High is counterproductive: it forces Priority to be treated as 2 and puts game threads in a band designed for professional audio, above much of the system. The defaults here are sensible and there is no good reason to change them.
What can go wrong
Setting Scheduling Category to High can starve system threads and produce stutter rather than remove it. The other values are inert, so the risk of changing them is that you believe you have fixed something and stop looking for the real cause.
How to undo it
Restore the defaults listed above: GPU Priority 8, Priority 2, Scheduling Category Medium, SFIO Priority High, Clock Rate 10000. A restart is not required, but a process must re-register to pick up changes.
Create a System Restore Point before editing the registry. Every setting on this page is reversible, but a restore point is the difference between undoing one change and reinstalling Windows.
Which Windows versions this applies to
Windows Vista and later. Clock Rate behaviour changed in Windows 7.
The MMCSS Games task profile: common questions
If GPU Priority does nothing, why does every guide recommend it?
The value exists, sits in a key named Games, and is called GPU Priority, so the inference is reasonable. It was reserved for a feature that was never implemented. Microsoft's MMCSS reference has said "not yet used" for many years.
Does my game even use MMCSS?
Most do not. You can check with a tool that lists MMCSS-registered threads. If nothing has joined the Games task, the entire key is inert for you.