This article was previously published under Q259025
This article describes the performance options in Windows. To view or modify these options in Windows 2000, click Start, point to Settings, click Control Panel, double-click System, click the Advanced tab, and then click Performance Options. To view these options in Windows XP, click Start, click Control Panel, double-click System, click the Advanced tab, and then click Settings under Performance.
You can use the performance options to set Windows be optimized for either foreground programs or background services. The assumptions are that background services are relatively few in number and would be more efficient with more CPU time, and that program servers or interactive programs on desktop computers would be more efficient with shorter time slices to allow them to be more responsive to keyboard input and to service more threads (many thousands on Terminal Services in Application Server mode).
The term "quantum" is a unitless measure of time for each time slice that a thread will run until a "context switch" occurs and another thread (either within the same program or from within another program) is selected to run. This prevents a CPU-bound process from monopolizing the processor. Currently in Windows, 3 quantums are equal to either 10 milliseconds (single processor) or 15 milliseconds (multiple-processor Pentium). This depends on the hardware abstraction layer (HAL) selected for your computer. Original Equipment Manufacturer (OEM) HALs may have a different value. Time slices that are fixed at 36 quantums are currently used when background services are selected (as you might choose in a typical server installation).
The situation become more complex when you enable the Foreground Applications option. This introduces the "variable quantum" concept. In this case, background tasks receive a different quantum than the quantums received by the foreground tasks. Also, both sets of quantums are shorter than a thread would receive on a computer set for background services. Currently, a background process receives a quantum of 3 and a foreground process receives a quantum of 9. Therefore, you can calculate the length of time the thread will run before its timer expires.
In addition to time slice settings in Windows, the Foreground Applications option results in a process boost of 2 over background processes. Note that this boost applies only to current thread priority, which is not visible in Task Manager. You can use System Monitor to observe the thread's current priority and see the priority boost in action. Also, remember that Microsoft Windows NT also uses additional priority adjustments (usually 2) based on other events, such as momentarily boosting a thread's priority when it returns from an I/O call, when returning from a user-mode subsystem call, or when receiving keyboard input. When the Foreground Applications option is active, the current thread priority for a running process is boasted from 8 to 12 on occasion. The keyboard boost is also the reason the process boost is limited to 2, so the other threads can respond quickly to keyboard input. This setting is applied to all process threads immediately.
None of the foregoing discussion applies to the concept of priority classes or job scheduling classes. In Windows Advanced Server and Datacenter Server, which uses Job objects to control the behavior of jobs, job scheduling classes are used only if the Background Services option is selected.Please consult the Microsoft Developers Network documentation for additional information about Job scheduling classes.