Process Priority

Windows

Prime95 essentially replaces the System Idle Process in that whenever your other programs are not running, the remainder of your CPU will be used by Prime95. Unlike the System Idle Process, Prime95 will cause your CPU usage graph to read 100% all the time.

When you look at Prime95 in the Task Manager, it will say that it is running at normal priority. This is slightly misleading since it is only showing the priority of the container process. All of the work being done is done by a separate thread running at the lowest priority available.

Windows defines process and thread priority with an integer ranging from 0 to 31. Zero is the lowest priority and 31 is the highest. The priority 0 is reserved for one particular process, so the lowest priority for any given thread will be 1. See http://msdn.microsoft.com/en-us/library/ms685100(VS.85).aspx

The current Prime95 program runs a minimum of 3 threads: one for the interface, one for communicating with the PrimeNet server, and at least one for doing actual calculations. The interface thread and the communication thread both run at Normal priority (which is represented by 8). The worker thread or threads which perform calculations and consequently use a lot of CPU time will run at the lowest possible priority (represented by 1). You can verify this using the ProcessExplorer utility available from Sysinternals.

Here are some screenshots illustrating the different thread priorities for the Prime95 program:

 

    

Notice that the process for the entire program appears to be running at normal priority.

 

        

These two threads are running at normal priority. Notice that they are currently inactive and have spent very little CPU time running.

 

    

This thread is one of the actual worker threads which performs the program's calculations. Notice that it is currently using a lot of the CPU's cycles and has spent a lot of time running. Unlike the inactive threads, the worker thread runs at the lowest possible priority.

 

 

Here are some screenshots illustrating the different thread priorities for the NTPRIME program:

 

    

Notice that the process for the entire program, just like the regular Prime95, appears to be running at normal priority.

 

        

These two threads are running at normal priority. Notice that they are currently inactive and have spent very little CPU time running.

 

    

This thread is one of the actual worker threads which performs the program's calculations. Notice that it is currently using a lot of the CPU's cycles and has spent a lot of time running. Unlike the inactive threads, the worker thread runs at the lowest possible priority just like in the regular Prime95 program. (You may notice that the Kernel Time and User Time in this image are both much less than in the corresponding Prime95 image. In the Prime95 image, the program had been running for about 3 days; in this image the NTPRIME service had only been running for a little over 8 minutes.)