PowerNowd is a simple client to the CPUFreq driver that uses Linux kernel v2.5/v2.6 sysfs interface. You need a supported CPU and a kernel that supports sysfs to run this daemon.
The name is somewhat misleading, as this will work with any CPUfreq capable processor, not just processors supporting AMD's PowerNow! technology.
However, it is designed to work better on processors that support more then 2 frequency steps like those with AMD's PowerNow! or the new Pentium M processors.
This daemon has been tested on:
· AMD Mobile Duron 850MHz
· PowerPC G3 900MHz
· AMD K6-2+ 450MHz
· AMD Athlon64 3000+
I have gotten successful reports of people running this on:
· SMP Intel P4-m (speedstep, hyperthreading)
· Intel P3
· Intel Pentium-M
-h print help message
-d don't detach from terminal (default is to
detach and run in the background)
-v Increase output verbosity, can be used more than once.
-q Quiet mode, only emergency output.
-n Include 'nice'd processes in calculations
-m # Modes of operation, can be 0, 1, 2, or 3:
0 = SINE, 1 = AGGRESSIVE (default), 2 = PASSIVE, 3 = LEAPS
-s # Frequency step in kHz (default = 100000)
-p # Polling frequency in msecs (default = 1000)
-u # CPU usage upper limit percentage [0 .. 100, default 80]
-l # CPU usage lower limit percentage [0 .. 100, default 20]
A note about the -U and -L options. They're not exact, because of the way the cpufreq drivers will always round up to the next available "step". For example, my iBook supports two frequencies, 400 and 900Mhz.
If I were to set, say, the upper limit with -U to 800000 (800Mhz), then powernowd would still toggle between 400 and 900Mhz. Why? Because writing 800000 to scaling_setspeed will set the speed to the next available frequency state 800Mhz or higher, which is 900Mhz.
In short, the -U and -L options only make sense for drivers that support more than two states (powernow-k7, powernow-k8, speedstep-centrino, longhaul, longrun, acpi throttling).
Be warned that the limit you specify on the command line will be rouded up to the next highest available step in the driver.
What's New in This Release:
· Final release, as it's feature complete, been tested for a long time, and the 'ondemand' kernel governor seems to be the way moving forward.
· Minor valgrind pedantic cleanups, and the use of strtoll() instead of strtol() to handle long running guests.