The Win32PrioritySeparation value name, a REG_DWORD data type, at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl, determines, in part, how much processor time the threads of a process receive each time they are scheduled, and how much the allotted time can vary. It also affects the relative priority of the threads of foreground and background processes.

The Win32PrioritySeparation value defaults to 0x02 and has a range of 0x0–0x3F (111111 binary).

The data value in this entry is a 6-bit bitmask consisting of three sets of two bits (AABBCC).

  • The highest two bits (AABBCC) determine whether each processor interval is long or short.
  • The middle two bits (AABBCC) determine whether the length of the interval varies or is fixed.
  • The lowest two bits (AABBCC) determine whether the threads of foreground processes get more processor time than the threads of background processes.

The highest two bits (AABBCC) determine how long the threads of processes are permitted to run each time they are scheduled. This interval is specified as a range because threads can be preempted and processor time is not precisely determined.

Values of the highest two bits:

Value Meaning
00 or 11 Shorter intervals in Windows 2000 Professional, and longer intervals in Windows 2000 Server
01 Longer intervals
10 Shorter intervals

The middle two bits (AABBCC) determine whether the length of processor time varies or is fixed and whether the threads of foreground processes have longer processor intervals than those of background processes. If the processor interval is fixed, that interval applies equally to the threads of foreground and background processes. If the processor interval varies, the length of time each thread runs varies, but the ratio of processor time of foreground threads to background threads is fixed.

If a variable interval is specified, the ratio of foreground thread processor time to background thread processor time is determined by the value of the lowest set of bits.

Values of the middle two bits:

Value Meaning
00 or 11 Variable-length intervals in Windows 2000 Professional, and fixed-length intervals in Windows 2000 Server
01 Variable-length intervals
10 Fixed-length intervals

The lowest two bits (AABBCC) determine the ratio of processor time of foreground to background threads. This value is used only when the middle two bits in this mask specify a variable-length interval. Otherwise, the processor interval for foreground and background threads is the same.

Value Meaning
00 Equal and fixed. The threads of foreground processes get the same amount of processor time as the threads of background processes and as the threads of processes with a priority class of Idle. Also, the processor interval is fixed. This value overrides the specification of a variable-length interval in the middle two bits.
01 2:1. The threads of foreground processes get twice the processor time as the threads of background processes each time they are scheduled for the processor.
10 or 11 3:1. The threads of foreground processes get three times the processor time as the threads of background processes each time they are scheduled for the processor.

NOTE: The same value is interpreted differently on a computer running Windows 2000 Professional than on one running Windows 2000 Server.

On a computer running Windows 2000 Professional, the default value, 2 (000010), specifies shorter, variable intervals, in which foreground threads get three times the processor time as background threads.

On a computer running Windows 2000 Server, the same default value, 2 (000010), specifies longer, fixed intervals, in which foreground and background threads get the same amount of processor time.

These strategies optimize foreground processes on a workstation, and they accommodate the needs of processor-intensive services on a server.

To change the value of this entry, use Control Panel / System / Advanced / Performance Options. In the Application response section, select either Applications or Background services.

Selecting Applications sets the value of this entry to 100110, which provides short, variable length processor intervals in which foreground processes get three times as much processor time as do background processes.

Selectinb Background services sets the value of this entry to 011000, and provides for longer, fixed-length processor intervals in which foreground processes and background processes get equal processor priority.

NOTE: The values in this entry have changed from Windows NT 4.0. See tip 0269 » Set foreground/backround priority in the Windows NT 4.0 registry.