CPU..
What is this?
This is a simple CPU speed adjust app to use with ACPI 2.0 driver for eCS.
I have been using AMD 64 on windows for a while and was in love with cool & quite feature. When there is no activity, CPU speed is dropped to minimum, and when there was work to be done, instantly it pushes the processor to it's best. This let the processor run very quietly by not heating up the processor thus letting the system turn down the CPU cooler fan. 

ACPI 2.0 for eCS gave a few ways to control certain CPU features, such as up time, or throttling via ACPI APIs. THe ACPI toolkit distro had a sample utility to control the CPU speed manually. It was quite nice, but I had to run the app manually with arguments everytime I wanted to change my processor's speed. That's not convenient. 

So, I created this to automatically control my machine's processor speed in my way. 

VERSION
1.3 20060107 Added command line argument to specify min and max value for CPU speed
1.2 20051229 Added CPU detection code to use first CPU detected instead of fixed value of CPU0 for throttling. Some systems seems report their processor number from CPU1, not from CPU0. (Thanks to Peter Weilbacher for pointing this out and help for the fix)
1.1 20051228 Fixed the code to be more flexible
1.0 20051223 Initial Release

Installation.....
Unzip the file, place the EXE file in any directory, and execute the app, minimize and forget about it.

Usage.....
For normal use, just run CPU.exe.
If you want to limit the min/max range of throttling, run CPU.exe with min and max (option) value.
ex 1) cpu.exe 50
Above specifies to run cpu.exe with 50% minimum speed for throttling. Thus, your CPU speed will vary between 50% and 100%.
ex 2) cpu.exe 50 80
Above specifies to run cpu.exe with 50% for minimum speed and 80% for maximum speed. In this case, your CPU speed will vary between 50% and 80%.
ex 2) cpu.exe 50 50
Above specifies to run cpu.exe with 50% for minimum speed and 50% for maximum speed. In this case, your CPU speed will be locked to 50%.
And if the min and max value given is out of range, CPU.exe will use default values. 

Requirements.....
- eCS 1.2 with ACPI 2.0 installed
- CPU supporting throttling feature, such as intel Pentium 4 revision E and above. 

Added Features
- Detects all available throttling steps supported for your CPU and uses all steps.
- Modified boost value.
- When shift occurs, it tends to shift down slower than before. 
- Should work with any CPU with throttling features. 

Restrictions.....
- Tested on only intel Pentium 4 2.8E processors. (One with 1MB L2, known as Prescot)
- No UI.

How it works.....
- App gathers current CPU usage via DosPerfSysCall() every 200ms, and when it reaches certain threshold, shifts up or down the working speed to next or previous step. 
- Tries to not switch CPU speed too often, by using simple average CPU usage value comparision. 
- When CPU speed is shifted, it waits additional 100ms to avoide reshifting too often. (like going back and forth 50%->75%->50%)
- When there is sudden demand for CPU power, speed is shifted more than 2 steps to give instant boost in performance. 

Known Issues.....
- As the app checks for CPU usage every 200ms, you will notice some performance lag before app can actually shift up/down the machine speed. 
- Though you can specify what ever the value you like for min and max value, CPU.exe will determine the steps to be used, since not all CPU can adjust their speed in 1% increment. Thus, in my case, I can use 15% for min value, but it will be translated into 12.5% internally for the CPU and resulting speed will be 12.5%. (That's 1/8 th of the full speed) But when I specify 27% for min speed, I will see 25% as actual min speed. (That's 2/8 th of the full speed.) So if you want to specify a higher min value, watch the startup output of CPU.exe, and use the values displayed. 

To Do List.....
- UI? Maybe..but my idea was to make a small shoot and forget application for controlling the CPU. :)
- Speed sampling resolution modifier? Maybe..This can be useful. 
- More helpful output. Well, I try to make this as small as possible..:)
- Straighten out the text output.
- Make the EXE more smaller..:)

Contact:
calmssea (at) gmail (dot) com
2005 12 23 Korea