aboutsummaryrefslogtreecommitdiff
path: root/system/powernowd/powernowd.1
blob: 232c990f8dfd8f078f3ba62e3fad8356a250a418 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
.\"                                      Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH POWERNOWD 1 "November  3, 2003"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh        disable hyphenation
.\" .hy        enable hyphenation
.\" .ad l      left justify
.\" .ad b      justify to both left and right margins
.\" .nf        disable filling
.\" .fi        enable filling
.\" .br        insert line break
.\" .sp <n>    insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
powernowd \- control the speed and voltage of cpus
.SH SYNOPSIS
.B powernowd
.RI [ options ] 
.SH DESCRIPTION
This is a simple client to the cpufreq driver, and uses the sysfs interface
in Linux kernel version 2.6.  You need a supported cpu, and a 
kernel that supports sysfs to run this daemon.  

The name is somewhat misleading, as any processor supported by the kernel
cpufreq driver will work, not just processors supporting AMD's 
PowerNow! technology.  This daemon works best with processors that support 
more then 2 frequency steps, like those with AMD's PowerNow!, and Intel's
Pentium M family.
.SH OPTIONS
.TP
.B \-h
Prints a help message.
.TP
.B \-d
Don't detach from terminal (default is to detach and run in the background)
.TP
.B \-v
Increase output verbosity, can be used more than once.
.TP
.B \-q
Quiet mode, only emergency output.
.TP
.B \-n
Include nice'd processes in calculations.
.TP
.B \-m 
Modes of operation, 0 = SINE, 1 = AGGRESSIVE (default), 2 = PASSIVE, 3 = LEAPS
.TP
.B \-s
Frequency step in kHz (default = 100000)
.TP
.B \-p
Polling frequency in msecs (default = 1000)
.TP
.B \-u
CPU usage upper limit percentage [0 .. 100, default 80]
.TP
.B \-l
CPU usage lower limit percentage [0 .. 100, default 20]
.SH MODES
There are 4 modes supported by this client:

Mode 0, SINE, changes the frequency as a sine wave function, raising the 
frequency by "step" Hz every time the CPU usage goes over 80%,
and decreases it by "step" Hz when the CPU usage falls under 20%.

Mode 1, AGGRESSIVE, changes frequency by a sawtooth function.	
Immediately jumps to the highest frequency whenever CPU usage goes 
over 80%, and decreases by "step" Hz as usage drops below
20%.  This is the default behavior.

Mode 2, PASSIVE, is the inverse of AGGRESSIVE. 
Immediately jump to lowest frequency when usage drops below 20%. 
Raise by "step" Hz if it goes above 80%.

Mode 3, LEAPS, immediately jumps to the highest frequency if usage is above 
80%, and immediately jumps to the lowest frequency if usage is below 20%.
.SH PHILOSOPHY
Why another CPUFreq client daemon?  

Some other daemons are better suited for two speed states, and 
toggle between two states based upon load.  This daemon does a better job
handling intermediate steps.

Other daemons are written in Perl, Python, or C++.  This is a simple C 
program.

Some other daemons rely on APM or ACPI.
The sysfs interface to the 2.6
kernel is simple, completely sufficient, and completely portable to all
architectures that support the CPUfreq support in the kernel.

Some other daemons change thier behavior based upon battery status, AC 
status, temperature, etc.  What good is having a nice powerful laptop if 
you can't use it at full speed, even for a few seconds, while on battery 
power?  This daemon just measures CPU load, and bases decisions solely 
upon that.  

SMP systems are supported, making this daemon useful for servers, too!
.SH AUTHOR
The powernowd program was written by John Clemens <clemej@alum.rpi.edu>

This manual page was written by Bdale Garbee <bdale@gag.com>,
for the Debian project (but may be used by others).