Get a really responsive computer and still save power and money!

My processor (an AMD Athlon X2 5600+ 2.8GHz) saves 17W when running at 35% of its maximum frequency. And 17W is pretty much, so processor frequency scaling is a good idea. But Windows' frequency scaling is a bit slow in raising the frequency when needed. According to my tests on Windows Vista, after a heavy cpu load is started, it takes around 0.15 s before the frequency is raised at all.



This means that small cpu bursts definitively feels slower compared to if the cpu was running at 100% frequency all the time. This could be things like opening a picture, opening a new file explorer or just about anything.

The problem in my opinion is that the frequency scaling algorithm lacks user behaviour input and has no idea if a small cpu burst is triggered by the user or by something else. So what my program does is to bring user activity checks into the equation:



What it does is to change the system's power plan to one saving power when the mouse and keyboard isn’t touched for a specified amount of time and then to a high performance plan when the mouse or keyboard is touched again. This way you will get a really responsive system while saving power when the user is inactive.

The program does NOT install any patches in your system. It just switches power plans exactly as if you would have done it yourself in the control panel.



Windows Vista and Windows 7/8

Use the "set high" and "set low" buttons to chose which power plans to use. Then go to the control panel and adjust the advanced settings of those plans to your liking. The minimum processor state of the power plan used for the power save mode should be something like 5% and for the one in high performance mode it should be set to something like 100%. (Mine is set to 85%):



You can easily create new power plans in the control panel if you want two plans that are exactly the same except for the minimum processor state.

Boray POWer's system tray icon changes to a dimmed smaller version when it goes into power save mode. Use the Windows Resource Monitor to see if the frequency goes down:



You can also see in your control panel when it switches between power plans in the power options.



Windows XP

Use the "set high" and "set low" buttons to chose which power plans to use. To understand what the different schemes does, read here.

Test your settings by opening the control panel's power option to check which scheme is selected. The power option window has to be closed and opened again to see if it was changed.


The CPU load setting

New in V1.6 is a cpu load setting:


Setting it to 100% disables it and Boray Power will act just like previous versions. But if you for example don't want to switch to low mode while watching HD video or while doing ASIO sound recording, then this setting is the answer. This is how it works:

An average cpu load value is measured and updated every 30 seconds. You can see this value in the bottom left corner:


When you haven't touched the mouse and keyboard for your specified idle time, Boray Power checks if the cpu load value is less or equal to your setting. If it is, it switches to low mode. Otherwise it will wait for your idle time all over.

Note that once in low mode, Boray Power won't switch up to high mode again if the cpu load should go above your setting. It only looks at user activity then.


Download

There is no shareware limitations in the program, but you agree to the following terms by using the program: The program is NOT FREE! It's Boray Music Ware: If you use the program, then you have to buy at least one of my tunes at boray.bandcamp.com. Look at it this way: You pay me for the program and you get a free song as a bonus.

Download Boray Power:
boraypower.zip V1.6.2 (~70 kB)

(NET 2.0 is required. Included by default in Windows 7 and Vista.)

Installation

Unzip the archive and put the boraypower folder where you want it.

Launch BorayPOWer.exe and change the settings to your liking. If you want the program to load at system startup (and you probably want that), then check the "Launch at system startup" checkbox. Press Save to save the settings.

Note: Closing the window will terminate the program, so click on "Hide" instead.


Particularly suited for Windows Vista - but still useful for Windows 7 and 8.

(Added in July 2012:) Most graphs and numbers on this page are from Windows Vista, but after some recent tests I now know that the frequency scaling was improved in Windows 7. I strongly suspect that the slow raise in Vista's frequency scaling is the main reason why Vista got it's bad reputation of being a sluggish OS. So Boray Power is extra useful on Vista, but still useful in Windows 7 and 8. Even though Windows 8 as a whole is faster in raising the frequency when using the high performance plan, it sometimes is slower than Vista as well. Read more about this under "Boray's Automated Frequency REsponse Tester (BAFRET)" below. Using BorayPower the way I propose will be more responsive than any improved frequency scaling algorithm not taking user activity into account anyway.


Boray POWer in practise

My computer feels just like if it was in high performance mode all the time. Still, it runs in power save mode most of the time. If you previously had your minimum processor state set to a low value, you can see BorayPOWer as a kind of turbo boost, while if you previously had it set to a high value, you can see BorayPOWer as a power saver / heat reducer / fan noise reducer - with intact high computing speed.

Using BorayPOWer and setting the high performance mode to 100% and power save mode to 35%, would compared to running the cpu at 100% all the time, save me about $10 every year according to my statistics, measurements and calculations.

BorayPOWer checks for user inactivity once every second and then for user activity twenty times a second to be able to quickly switch to high performance.

A couple of voices about Boray Power from the web: Addictive Tips, Softoxi, Paul, Tekzilla video below:




Boray's Automated Frequency REsponse Tester (BAFRET)

A new tool released in July 2012. With it you can measure the time it takes for the frequency scaling to reach the top frequency with just one mouse click.



Download:
BAFRET.exe V1.2 (50 kB)

What it does is more or less to automate what I did with the data from the old program (Boray CPU response tester). But here you get the most interesting values right away. During a measuring period of 1.5 s, a small 3 ms test is performed 500 times. It's like a cpu benchmark test so each of the 500 tests is given a score and the time for when each sub test ended is also recorded. The top score is regarded as "100% frequency" even if it in some cases isn't. The "power save" plan in Windows 7 doesn't seem to reach the top frequency at all for example. Anyway, "ending mean value" means the mean value for the last 201 scores of the measuring period. This is used for one of the ways to calculate the response time.

There are three different ways of calculating the response time in this program:
A: The time it takes for the sub test score to reach the "ending mean value" (or rather 99.5% of it),
B: The time it takes for the sub test score to reach 95% of the top score or
C: The time it takes for the sub test score to reach the mean value.

Each could be the most interesting in different situations and power plans.

It's not single 3 ms test scores that are compared to the goal values but a mean value of the three next tests, so this is why the "first" value displayed could be higher than 95% and it still takes time to reach 95%.

You will most likely get a different result every time you run the test, so for this reason you can set the program on repeat for a while to make maybe 100 complete tests and show you mean values of all of the tests.

Here follows my results:

The Vista and Windows 8 tests were made on the same machine (AMD Athlon X2 5600+ 2.8GHz) while the Windows 7 tests were made on an Intel Pentium Dual Core P6200 2.13 GHz.

Total average of all three A B C types in milliseconds.
(There are detailed data for this graph further down on the page.)




Since BAFRET V1.2 you also get efficiency values in percentage:



Total efficiency is the average of all scores in relation to the top scores. For the whole measuring period of 1.5 s.

Multitasking efficiency is the mean of the ending mean values (the last 603 milliseconds). Here the frequency has (hopefully) reached 100% and we get a value of how efficiently a program can utilize the cpu.

First 200 ms efficiency: This is a different way of measuring the responsiveness of the computer. Instead of measuring a time, we measure how much work the cpu can do over 200 ms going from idle to busy.

"My Vista + BorayPower while using the computer" is my own setup where "high perormance" 85-100 is used as the high mode in BorayPower. I simply had BAFRET running while making these graphs etc with the following programs running: IE9, Foobar2000, PSPad, Excel, Paint.Net, WS_FTP95, Windows Live Mail, ALM, Insert This, Something Is Ready, WakeUp, Boray Power, Sim Mail Online, Windows Live Messenger and Microsoft Security Essentials.



Here follows detailed data (that's the first graph is based on). NOTE: The "A" values are within parenthesis because of a bug in BAFRET V1.0 which made all "ending mean values" except for those of the first round slightly incorrect (0.5%).


vista 32 high performance 5-100

Total results after 151 rounds:
(A: Mean = 159,774834437086, Min = 3, Max = 267)
B: Mean = 158,543046357616, Min = 0, Max = 267
C: Mean = 158,543046357616, Min = 3, Max = 267
Total mean of all three types: 158,953642384106 milliseconds.


vista 32 balanced 5-100

Total results after 162 rounds:
(A: Mean = 163,604938271605, Min = 111, Max = 276)
B: Mean = 161,845679012346, Min = 111, Max = 267
C: Mean = 161,827160493827, Min = 111, Max = 267
Total mean of all three types: 162,425925925926 milliseconds.


vista 32 power save 5-100

Total results after 172 rounds:
(A: Mean = 215,529069767442, Min = 96, Max = 907)
B: Mean = 223,546511627907, Min = 111, Max = 1469
C: Mean = 200,924418604651, Min = 96, Max = 733
Total mean of all three types: 213,333333333333 milliseconds.


Windows 7 64 high performance 0-100

Total results after 155 rounds:
(A: Mean = 18,8, Min = 3, Max = 36)
B: Mean = 15,0645161290323, Min = 0, Max = 18
C: Mean = 18,3548387096774, Min = 3, Max = 30
Total mean of all three types: 17,4064516129032 milliseconds.


Windows 7 64 balanced 0-100

Total results after 128 rounds:
(A: Mean = 40,796875, Min = 3, Max = 111)
B: Mean = 40,1640625, Min = 0, Max = 111
C: Mean = 40,5625, Min = 0, Max = 111
Total mean of all three types: 40,5078125 milliseconds.


Windows 7 64 power save 0-100

NOTE: Top score was only 62% of the high performance and balanced top score meaning the cpu never reached over 62% of maximum frequency.

Total results after 107 rounds:
(A: Mean = 810,289719626168, Min = 0, Max = 1446)
B: Mean = 843,196261682243, Min = 0, Max = 1449
C: Mean = 632,710280373832, Min = 0, Max = 1413
Total mean of all three types: 762,065420560748 milliseconds.


win 8 64 high performance 5-100

Total results after 205 rounds:
(A: Mean = 41,9609756097561, Min = 0, Max = 639)
B: Mean = 36,3951219512195, Min = 0, Max = 267
C: Mean = 38,3707317073171, Min = 0, Max = 267
Total mean of all three types: 38,9089430894309 milliseconds.


win 8 64 balanced 5-100

Total results after 200 rounds:
(A: Mean = 188,39, Min = 3, Max = 1090)
B: Mean = 147,67, Min = 3, Max = 267
C: Mean = 165,73, Min = 3, Max = 573
Total mean of all three types: 167,263333333333 milliseconds.


win 8 64 power save 5-100

Total results after 251 rounds:
(A: Mean = 732,876494023904, Min = 0, Max = 1463)
B: Mean = 629,95219123506, Min = 0, Max = 1469
C: Mean = 286,581673306773, Min = 0, Max = 531
Total mean of all three types: 549,803452855246 milliseconds.


Linux Mint 13 64 on-demand (BAFRET V1.2)

Total results after 100 rounds:
A: Mean = 142,8, Min = 43, Max = 444
B: Mean = 139,59, Min = 43, Max = 441
C: Mean = 140,97, Min = 43, Max = 441
Total mean of all three types: 141,12 milliseconds.

Total efficiency (mean of mean values): 96,4221265574553 %
Multitasking efficiency (mean of ending mean values): 97,9599174821121 %
First 200 ms efficiency: 86,4419205707751 %


Open Suse 12.1 64

Total results after 176 rounds:
(A: Mean = 511,869318181818, Min = 0, Max = 1468)
B: Mean = 476,471590909091, Min = 0, Max = 1468
C: Mean = 464,613636363636, Min = 0, Max = 1465
Total mean of all three types: 484,318181818182 milliseconds.


In OpenSUSE there is no gui for changing power plan. This is from the developers' explanation of why: "For the 'performance' governor, users won't even notice the performance gain. Modern CPUs and the kernel's CPUFreq implementation are able to switch frequencies very fast." ... And 0.5 s is very fast? Right...
(To run the program on Linux you need the packages mono-core, mono-winforms and mono-basic installed. You start it with "mono BAFRET.exe")

Anyway, here is something else interesting I've discovered: Windows power plans react more quickly if you have some programs running. At least Vista and W8 does. In the tests above I run the tests on a totally idle system. In the two tests below I had some programs open: Opera displaying a facebook profile, foobar playing some mp3s, PSPad displaying a text file, the power plan settings and Microsoft live messenger.

vista 32 high performance 5-100 + some background tasks:

Total results after 151 rounds:
(A: Mean = 156,675496688742, Min = 93, Max = 471)
B: Mean = 147,456953642384, Min = 93, Max = 272
C: Mean = 140,099337748344, Min = 61, Max = 192
Total mean of all three types: 148,077262693157 milliseconds.

win 8 high performance 5-100 + background tasks

Total results after 101 rounds:
(A: Mean = 13,1485148514851, Min = 0, Max = 93)
B: Mean = 7,28712871287129, Min = 0, Max = 93
C: Mean = 11,7920792079208, Min = 0, Max = 93
Total mean of all three types: 10,7425742574257 milliseconds.


Win 7 high performance 0-100 + some other background tasks (Firefox, Win Media player).

Total results after 389 rounds:
(A: Mean = 25,6966580976864, Min = 0, Max = 111)
B: Mean = 12,5244215938303, Min = 0, Max = 24
C: Mean = 20,6143958868895, Min = 0, Max = 96
Total mean of all three types: 19,6118251928021 milliseconds.


Maybe it isn't that strange that some background programs decreases the response time. The cpu would get then get a higher load during the test and the system would increase the frequency earlier. Stranger is that Win 7's result got worse. Maybe it's a matter of balance; some background tasks makes your frequency scaling snappier while too much makes the computer slower instead. Well my guess is as good as yours.

I must say I'm pretty impressed with Windows 7's and 8's "high performance" power plan. It still doesn't take user activity checks into the equation though. I wonder why. I have the pre release of Windows 8 installed on one drive, but still I end up using Vista. When running the cpu at 100% frequency (with the use of Boray Power), Vista and Win 8 is equally fast. And Windows 8 is actually pretty messed up with the phone gui nonsense anyway.

Computer geek note: A Commodore machine was used in the development of BAFRET: one of my two Commodore SR-1800 calculators.




Boray CPU response tester

Here is the old tool to test the response of different power plans and of BorayPOWer:



Download:
Boray_CPU_Response_Tester13.exe (V1.3) (50 kB)


With the "time limited bursts" test, you set an amount of time in milliseconds, and the program then runs a test for that amount of time and then delivers a score. The score is based on how much work that was done per millisecond during the test. So for a static cpu frequency and no other load, the score should be about the same regardless of the chosen time. Here are some results from my own tests on Vista:



In this test I'm using the "1x" button and different length bursts to test different power plans:
"High Performance" is set to 100% frequency both min and max values.
HP 78-100 is High Performance but with the minimum frequency set to 78%.
HP 35-100 is High Performance but with the minimum frequency set to 35%.
Power save has the same values (35-100), but as you can see, the frequency is raised slower than with High performance even with the same min and max values.


In the following tests I also used the time limited bursts, but here I set the burst time to 10 ms and then pressed the "x 200" button. This means the 10 ms burst is done uninterruptedly 200 times, in other words for 2 seconds. The 200 results was then copied into Excel to do the graphs. This way you can see exactly how the frequency is changed during two seconds of uninterrupted cpu load:


High performance power plan with maximum and minimum processor states set to 100%. No surprises there.



High performance power plan with minimum processor states set to 35%. Here it took 0.18 s to reach 100%.



Balanced power plan with minimum processor states set to 35%. Looks the same as the high performance plan.



Power save plan with maximum set to 100 and minimum to 35. I guess it does what it's supposed to do; saving power.



This is BorayPOWer waking up from Power Save (min 35) to High Performance (min 100). It's waking up from my mouse click pressing the test button. As you can see, the switching of power plan doesn't slow it down. Rather the opposite.



High Performance with minimum state set to 85.



BorayPOWer waking up from Power save (min 35) to High Performance (min 85).



Out of curiosity I also run the program on Ubuntu to try all the power plans there. Here is the "On demand" power plan compared to "Balanced" on Windows. As you can see, Windows isn't slow in comparison. BorayPOWer just improves the responsiveness even more.


With the "Static bursts" tests, the program simply executes a specified amount of work and then says how long it took. Here are my results with these tests:



Power Save has minimum value 35,
High Performance; minimum value 100,
On Wake-up: Exactly when BorayPOWer wakes up and switches from Power Save to High Performance. The pressing of the test button (having the button active and then pressing enter) triggers the power plan switch.
HP2: is High Performance with minimum value 35.
Bal: is "Balanced" power plan with minimum value set to 35.
HP2 Wakeup: is the same as Wake-up but waking up from HP2 instead of from Power Save.


The Average button: To get good measurements, test the same thing a number of times. Then mark the output text of those tests and press the average button. An average value of the numbers in the selected text will then be shown.


Boray POWer History

V1.0 2011-07-05
Initial release

V1.1 2011-07-08
Switches back to original power plan when pressing quit button. Adaptions for higher DPI screens.

V1.2 2011-07-09
Power plan guid/name in the settings file for making the program work with Windows XP.

V1.3 2011-07-11
You can now choose your power plans in the program instead of editing the settings file manually. Bugfix: The right power plan wasn't selected at startup.

V1.3.1 2011-07-14
The settings are now always loaded from and saved to the program folder regardless of the current directory when started. (Only of importance when started from the command prompt).

V1.4 2011-07-17
Added the option to save stats to BorayPOW_stats.txt. If you turn it on, you can copy the text and paste it into a spreadsheet program to analyze your power consumption and/or your user behaviour. The data is saved when the program is terminated and does not introduce any overhead to the program's operation.

V1.4.1 2011-07-24
The program now only requires .NET 2.0 instead of .NET 3.5. The window is now always topmost (because it didn't pop up sometimes when clicking the task bar icon.)

V1.5 2011-08-12
Easier to setup the program to launch at system startup. Just check the new checkbox, save the settings and a file shortcut will be created in the Windows Startup folder. Uncheck it and it will be removed. Note that this is a completely different startup method than the one suggested to use before (the Windows Task Scheduler).

V1.5.1 2011-09-10
The window is now NOT topmost. The popup problem was fixed in another way.

V1.6 2011-10-21
The cpu load setting was added. And as if Boray Power wasn't already lightweight - it's now even more so: It now uses only 0.32 MHz on one core in high mode (1.29 MHz before) and in low mode it uses 1.17 MHz (13.5 MHz before). The previous version of Boray Power was downloaded 4685 times but nobody at all has payed yet! Boray Power is NOT FREE! So come on guys!

V1.6.1 2011-10-22
The efficiency was improved even more: It now only uses 0.25 MHz in high mode and 0.60 MHz in low mode!

V1.6.2 2013-06-17
I just updated the web address to my music.


More programs by Boray

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


ALM

Average CPU

Crazy Chat Robot

Insert This

Wake Up!



Copyright(C) 2011 by Anders Persson
Boray Software