Well, sorry for the late update, I've been busy for a few days.
The claims about the superiority of Waterfall and Rain over CPUIdle , which were the initial reasons to put up this page can now only be fond in the Waterfall /RAIN FAQ . Also the comparison chart on the Waterfall (and formerly Rain) home page has been reduced to something I can mostly agree with.
So, just in case you really want to know why this page is here, look at the archive copy of this page.
You will notice that this page is quite a bit out of date. Currently, my multimeter is broken, so no current meassuring for now. The other thing is that the last time I booted windows was for upgrading my CD recorder's firmware, and that was months ago - So I don't really need to have my CPU cooled in Windows for the simple reason that I just don't use it anymore. Anyway, I think it's time to get myself a new Multimeter for two reasons: 1) I can't really live without a multimeter. 2) I've seen a dialog of CPUIdle, saying something to the effect of "best in CPU cooling". Oh well, we will see. There's also the great salesbabble on www.yihong.com: "Only our product can help notebooks become cooler and have a better performance." and "Our program has no equivalent competitor, and is far more advanced than programs that perform only some of the tasks found in our product. YiHong's unique memory architecture can help your system become more stable and helps us to create a zero-error program." Cool! Nontrivial zero error programs. I need one of these.
Hey, wouldn't the best solution to CPU cooling under Windows be to hack the windows kernel and include a simple, single HLT at the right place? Anybody care to find the right place?
I may have to update some of the links to Waterfall etc, as they have moved...
The initial test I made (and the reason for the type of test was somewhere back when Waterfall 1.22 was said to be better than CPUIdle, because it would not have to "issue hundreds of VxD calls per millisecond", and thus would run cooler) just counted some instructions. Well the results have gotten pretty useless in the meantime, as Rain and CPUIdle are very close when it comes to the number of instructions executed per second, and Waterfall is not too far off. You may want to have a look at the Instruction counting test.
So now that Counting instructions doesn't really help that much, I put an Ampèmeter between the four +5V lines from the power supply to the mainboard. It's quite obvious that power consumption should be a good measure for the expected temperature, with the big advantage that it can be measured instantaneously and does not depend as much on such conditions as room temperature, as the temperature of the CPU does.
The table shows the power drawn on the 5V lines of my mainboard, a Asus P552T4.
The processor is a P55C at 3.5*75MHz, there are 4 16MB ECC simms installed, plus loads of ISA and PCI cards, so don't expect to reproduce the exact numbers, but the tendency should be there. The voltage was quite stable at 5.05V.
| running | I [A] | P [W] |
| Idle (just Win95) | 6.37 | 32.2 |
| CPUIdle 2.53 | 3.50 | 17.7 |
| CPUIdle 2.53 -loadonly | 3.48 | 17.6 |
| CPUIdle 3.0 standalone | 3.47 | 17.5 |
| CPUIdle 3.0 cpanel | 3.45 | 17.4 |
| Waterfall 1.22 | 3.53 | 17.8 |
| Waterfall 1.22 (off) | 6.54 | 33.0 |
| Waterfall 1.23 | 3.52 | 17.8 |
| Rain 1.0 | 3.49 | 17.6 |
Everyone can see that the winner here is CPUIdle 3.0, running as a Controlpanel Applet, followed by the tray bar version, but CPUIdle 2.53, Waterfall 1.23 and, even more so Rain 1.0 are pretty close.
One more thing on measuring power consumption: It really depends a lot more on environment temperature than I thought, thus I dumped all the old numbers, and now have brand new ones, which are all slightly higher. Yes, summer is coming.
This table shows current drawn against processor configuration and program run. The environment temperature was slightly different from that in the previous test. All values given in [A].
| LowPower | Autohalt | Rain 1.0 | CPUIdle 3.0 | Dos Prompt | Power.exe /ADV:MAX | Waterfall | Waterfall 1.22(disabled) | Linux (idle) | Win95 |
| Off | Off | 5.39 | 5.37 | 6.29 | 5.28 | 5.42 | 6.48 | 5.28 | 6.32 |
| On | Off | 5.38 | 5.37 | 6.29 | 5.28 | 5.42 | 6.49 | 5.27 | 6.31 |
| Off | On | 3.65 | 3.63 | 6.30 | 3.52 | 3.69 | 6.50 | 3.36 | 6.32 |
| On | On | 3.38 | 3.35 | 6.31 | 3.25 | 3.42 | 6.48 | 3.07 | 6.32 |
Just to say something about the famous performance issues brought about by hundreds of users, I dug out some old benchmarks from the good old Win 3.11 times, that would somehow magically spit out performance numbers. The first one is the probably totally unknown Winsock (Version 2.something), the other thing is TI's wintach, version 1.2.
I also found a Norton SI from the Norton utilities for Windows 95, but the numbers this program spits out vary so much from one run to another (just clicking the button multiple times), that it is totally useless. And, no, I wasn't running any relevant other task during that. I don't have any of those 'modern' benchmarks like BAPCo, Winbench, Mediabench or others flying around here. Anyone with a spare CD?
| Wintach | Winsock CPU | Winsock graphics | Winsock disk | Winsock Memory | |
| Waterfall | 561.25 | 3257 | 2916 | 3894 | 657 |
| CPUIdle 2.53 | 561.25 | 3257 | 2919 | 3880 | 657 |
| Rain 1.0 | 561.25 | 3257 | 2916 | 3890 | 657 |
| Nothing | 561.56 | 3257 | 2912 | 3901 | 655 |
As you can see, this table is quite simple to interpret: there's no real difference at all. It just doesn't matter which of the programs you run, the performance difference as measured by the benchmarks is so low that it will never be realized by a user, but more or less is just a statistical errors of the benchmark itself.
Did I mention, that this was CPUIdle -loadonly as always?
There may be one 'performance' issue with all these programs: I have been told that Waterfall (and thus most probably CPUIdle and Rain as well) may stop Windows from flushing it's caches/write buffers to disk, which sounds very plausible to me, as this usually is done when there is nothing to do. With any of these programs running, there's always something to do. This may add another risk to overclocking: You data may not even be written to disk when your system crashes. OTOH, this may be an advantage: having overclocked, how do you know the data to be written is still valid?
The other thing is that all these programs use some memory - CPUIdle in standalone mode eats by far the most, followed by Rain and Waterfall, with the minimum being CPUIdle -loadonly or the controlpanel applet. The exact numbers depend on what program one believes in. WinTop, 'Memory used' and for example Norton SI show so widely different numbers, that i really won't publish anything here. Find yourself a tool that displays memory consumption, and then make up your own numbers.
If you haven't seen for yourself, Rain and Waterfall are nearly identical, the changes are just around the idle task (which is the most important function after all), the RING0 technology, and most other stuff is still the same.
While HLT has always been a part of the x86 architecture, there are reasons why neither Intel nor Cyrix have AutoHalt or SuspendOnHalt enabled by default: When the CPU is suspended, the current drawn by the CPU will drop in a few nanoseconds from some Ampères to nearly nothing. This may be very difficult for the powersupply on the mainboard that is to convert 5V to 2.8 or whatever your CPU runs with, and may even be a problem for the system's power supply.
If your mainboard isn't that well designed (probably the VX chipset boards mentioned in the CPUIdle faq (remember VX=cheap, including everything else on the board)), your system may even crash when HLTed once too often, as the voltage will have some really ugly spikes on it.
There are some other things that may happen, but which are not that bad: Your soundcard may hiss and generate some audible noise, notably when you just move your mouse. Then, the graphics card may not be stabilized enough, and the picture on your screen may drift from left to right or even have some wavy distortions.
Worse yet, and that may get you in trouble, your PC may emit much more radio frequency noise, that may be audible in a radio nearby, or even disturb your neighbors TV or radio. Here in Germany, if your PC is not certified to be CE compliant, you may really get into trouble with this. (if it's certified to be CE compliant, it will be easier to shift responsibility to someone else) I never heard of anyone who getting into trouble for this, but just don't say I didn't warn you!
It seems that stability is an issue to some people (and it should be). So how can CPUIdle or Waterfall or Rain affect affect system stability, except via Voltage spikes? Well, CPUIdle is just a normal application that comes with it's own VXDs to execute some code in ring 0 (which is something referred to as a "Callback on idle", a mechanism provided by Windows itsself). So now the application is as vulnerable as any other application (that is: it is protected from any other program), and the VXDs are even more so, but running in RING 0, the
On the other hand we have Waterfall/Rain, both using that mysterious RING0 technology (that makes the programs so wonderful, as TIM said). Well, whatever it is (I found some texts about it some time ago, but they seem to have gotten lost, it does involve ReadProcessMemory and WriteProcessMemory, afaik, to 'steal' some other process' priority), the code of Waterfall is protected as much as the code of CPUIdle, by mechanisms inside WIN95, which do not allow other applications writing to memory not owned by themselves.
So, what I wanted to say here: stability is a non-issue in this case.
A small correction is due: As stated an Tim Whatshisname's Why? (which is gone by now) page, CPUIdle's idle thread will be killed by the system monitor that comes with Windows. It is, as I have now learned not a thread, and doesn't get killed: The callback function used gets replaced by the system monitor, and thus, the idle function of CPUIdle just never gets called again. This is a well documented bug of CPUIdle (or a bug of Windows, if you ask me), and, inherent to the way CPUIdle implements the idle routine.
All those Programs will not help you if you had your computer crash on you without them when overclocked. Their respective authors keep claiming that they were designed for or would help overclockers, but what if you have some tasks running and working all day? Then none of the programs will issue even a single HLT, and your CPU will be as hot as ever before. And it will crash, as it would have done before. What's the point of overclocking if you still have time for HLTs? Take, for example Quake, which makes use of the whole CPU, including the FPU all the time, and thus really draws some current - there's no time for HLTing in a multi-hour fragfest, and it believe me, sucks if it segfaults right when you've made it to the top of the list.
The baseline is: If you want to overclock, you should check how far you can go with maximum CPU load. For me, the maximum I could get was (running Linux, which is what I'm using >90% of the time) either compiling kernels and X11 concurrently while running a low priority squake in a timedemo loop, or just bunzip2 on a really huge file.
If that runs stable at high environment temperatures for hours, then your system may be safe, but if it crashes, forget about overclocking that far - HLTing won't give you much. It'll just conceal the risk until you have some work for the CPU, and that's when crashing gets awfully nasty.
If you want your system to run really cool, try fishtanks or fridges. There's a warning to all those with peltier coolers on the CPUIdle page, because those can really freeze your CPU, and can damage it. It's probably better to have the Peltier thermally controlled so that it just kicks in when the CPU is, for example warmer than 30°C.
Well, all the programs work fine (for me) in the short time I took for testing. I was not able to actually measure a difference in temperature of my CPU with any of those programs, as my thermometer just displays full centigrades - no fractions. And, I don't care about Win95 performance differences in terms of those little synthetic benchmarks, and I don't feel the performance difference. So who cares?
My personal recommendation would be using CPUIdle as a controlpanel applet. Then you get minimum memory usage and minimum power consumption. The only drawback would be that you can not click some little colored systray icon, and have a useless splash screen on startup.
The second best choice would probably be Rain or 'normal' CPUIdle 3.0, followed by anything else. Having CPUIdle 3.0 I'd not recommend 2.52 with -loadonly, as you risk killing it with the system monitor that comes with Windows 95. If you believe that splash screens suck, you'll have to go with Waterfall or better Rain.
The right thing to do would be using a real OS of some kind, which does not only come with built-in HLT, but doesn't leave you with stability and performance issues.
All that anti-waterfall stuff is now on the I'm stupid page. Did I mention that Waterfall's documentation is nearly inexistent, as opposed to the info supplied with CPUIdle? If you decide not to use CPUIdle, you should still get it to read the docs, as there is much general information in there.
Concerning the documentation, things have improved a lot with Rain. The documentation may not be as precise and technical as the one accompanying CPUIdle, but it does get the thing done.
There's also a discussion of that RING0 technique used by Waterfall in comp.os.ms-windows.programmer.vxd ("ring0 code without a VxD?"), and the risks associated with it. You may find it at dejanews. There are some other things about CPUidle/Waterfall and problems associated with them or HLTing in general on Dejanews as well. See for yourself.
There's another CPUIdle/Waterfall/Rain comparison page, which has some interesting tests. You definitively should have a look at it.
<OFFTOPIC>Linux not only comes along with a real Idle task of it's own, but also runs faster when not idle anyway.</OFFTOPIC>
Rain... has obviously been taken off the net by the author. You can still find it in various places like at www.processor.org. I consider Rain the best choice of HLTing software for Windows currently available, because non-commercial Versions of CPUIdle like 2.5x have timed out by now, and Waterfall went commercial as well with the arrival of WF Pro. (This information is brought to you free and without advertisements!!!). Oh well. processor.org is down now as well, so you may download rain from a link to on http://www.benchtest.com/rain.html. It points smewhere to zdnet.com, so this one will hopefully stay there for a longer time...
If you have any comments or new information about CPUIdle, Waterfall, DOSIdle, Rain, Power or similar stuff, send Mail!
If you're interested in this topic, you may whish to look at one of my projects, a rom that turns on AutoHalt/LowPower or SuspendOnHalt respectively. It can be found here . There are some links at the bottom of that page that you may find of interest (or most probably already know about...)