Average CPU Cycles

Shows the current and average cpu usage for a named process. If more than one process share the same name, they will all be shown and summed:

Windows 8 / 7 / Vista version:
Older version
(for Windows XP):



The program is ideal for measuring the cpu usage for specific programs, to find out the total average cpu usage of a program for its entire uptime or to start measuring at a point in time you are interested in. The latter is for example useful to find out how much cpu a program uses when idle.

The Vista/7 version uses the kernel32.dll function QueryProcessCycleTime which makes it possible to measure smaller cpu bursts than with other more commonly used methods. It also makes the measurements less dependent of the current cpu frequency if your system uses processor frequency scaling/throttling.


Operation

Either type in the process name or press the "Process" button to chose it from a list.

By default, the average value is based on the named program's total uptime and total cpu cycles. By pressing "from Now" you can measure from the current point in time instead.

If you want to monitor more than one process name, then just start more instances of Average CPU.

If it says "Access denied" for a process you want to monitor, then you have to start Average CPU by right clicking it and chose "Run as administrator".

The Current and Average meters: When the bar is thin and "1%" is visible, the whole bar represents 1% of the cpu (all cores). When the bar is thick, the whole bar represents 100% of the cpu (all cores).

The vertical "fader" control sets the measurement interval. It's by default set to 1 second and can be set in between 2 seconds and 20 milliseconds. Setting it to a very low value can in many cases tell you more about a program.


The data

Average CPU : The process' average cpu usage in percent of all cores. Reset it with one of the buttons.

MHz used now : This is a current value of how many MHz the cpu would need to be able to run the amount of cycles since last measurement on one core.

Total CPU cycles : The number of cpu cycles the process has run. Reset with one of the buttons.

Average total : All "average cpu" values summed. This is only shown when there are more than one process displayed.

Current : How much cpu in percent of all cores the process(es) used since last measurement.


Settings

It is very important that the number of cores and the cpu's maximum frequency is correct, or none of the percentages shown will be right. In case the program retrieves the incorrect cpu info, you can adjust this. I'm not sure when this would happen though. Maybe if your cpu is overclocked or something. Well, I added this just in case. Just click on the small cpu info at the bottom of the screen to adjust it.


Accuracy

So just how accurate is Average CPU Cycles (the Vista/7/8 version)? Well, at least it's more accurate than most other process monitors. The Windows Resource Monitor says Winamp uses less than 0.01% cpu on my computer. Average CPU Cycles says it uses 1.5% so which is more correct? Average CPU Cycles says Winamp uses 84 MHz (and 73 MHz when minimized). In other words, you would be able to run just one core of my cpu at 84 MHz and winamp would still work. But the figure from the Windows Resource Monitor would translate to less than 0.56 MHz. The Resource Monitor tells me in other words that it probably would work to play a mp3 on a 1MHz Commodore 64! That is silly. The C64 is an 8 bit machine though, but that figure is just silly no matter what. I could not even play a mp3 in full quality on my 40MHz 68040 Amiga. I could play it in mono and in degraded quality.

The XP version uses an older measurement method and should compare to the Windows Resource Monitor and similar programs. You can run the two versions side by side to compare the results.




Tips for accurate measurements

Even if Average CPU Cycles is less dependent of the current cpu frequency than the XP version (and most other cpu meters), the measurements still are dependent of the frequency.

When running at 35% cpu frequency, my values shows in between 10-40% lower compared to when running the cpu at 100% frequency. (With the XP version, it would be about three times higher instead). I don't know why this is. Maybe the QueryProcessCycleTime function has a flaw or maybe this has something to do with how Windows works - that programs has to wait more cycles for system calls when the frequency is high or something. Anyway - For accurate comparisons, keep the cpu at a steady frequency!

But this is not all. The measurements are influenced by the total computer load as well. If I for example scroll around heavily in a web browser, the values for a completely different program goes up slightly. Again, this probably has something to do with how Windows works - if the system is occupied, maybe other programs making system calls has to wait more. So - for the most accurate measurements; Keep the frequency static and don't do other things with the computer while measuring.

Also; Always wait for the average value to stabilize! Also repeat the measurement to see if you get the same value again.


Download

The program is "Spread-the-word ware". If you intend to use the program after your initial evaluation, you have to post a permanent link to this page (or to the main page) as a new post somewhere (not as a comment to a another post about it). You can do this for example on Facebook, on a forum, or on your blog or homepage.

Download:

AverageCPUcycles.exe V2.3.2 (68 kB) for Windows Vista, 7 and 8.

AverageCPU_XP.exe V1.2.2 (55 kB) for Windows XP.

The program doesn't need any installation. Just save it somewhere, for example on your desktop. (NET 2.0 is required. Included by default in Windows 7 and Vista. )


Don't miss Boray's music!




More programs by Boray

If you like this program, you will likely like some more of my programs.


ALM

Boray Power

Crazy Chat Robot

Insert This

Wake Up!


History

V1.0 2011-07-16
Initial release

V1.1 2011-07-17
Added the "current" value, graphic bars, the process list, the interval control, the "Now" measurements and the possibility to start it with a process name from the command line. Adjusted values for multi core CPUs.

V2.0 2011-07-20
Using the kernel32.dll function QueryProcessCycleTime instead of the .NET function UserProcessorTime.TotalSeconds. The meters are scaled between 100% and 1%. The "MHz used now" column was added while the "program only" column was removed. Color changes. The small cpu info at the bottom was added.

V2.1 2011-07-21
Reading the cpu frequency in a different way. You can now click on the cpu info to change and save settings. Other graphics for the meter bars. New icon. "On top" checkbox. Current process is highlighted in the process selection window.

V2.2 and V1.2 2011-07-22
I found out that QueryProcessCycleTime only is included in Vista and later, so I re-released V1.1 with some changes for XP users. Both V2.2 and V1.2 also includes a bugfix for computers with low resolution timers.

V2.2.1 and V1.2.1 2011-07-24
A small bugfix. On the XP version, the current process is now also preselected in the process selection window just as on the Vista/7 version.

V2.2.2 and V1.2.2 2011-07-24
Both versions now only require .NET 2.0 instead of .NET 3.5.

V2.3.0 2011-08-01
Added an "Average MHz" value and changed the text layout and colors.

V2.3.1 2011-08-02
Somewhat increased accuracy (it now waits for a new timer tick when pressing "Now" and before calculating anything).

V2.3.2 2014-02-11
The program crashed if the measured process was terminated in the time between a process handle was acquired and the cycles was measured. This gap must have been microscopical but it actually happened to me. I also updated the web address to my new domain.



Copyright(C) 2014 by Anders Persson
Boray Software