mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-21 19:42:24 +01:00
system/powernowd: Updated for version 1.00
This commit is contained in:
parent
6d9a73d91b
commit
d2c236cc65
7 changed files with 85 additions and 222 deletions
|
@ -1,12 +1,57 @@
|
||||||
|
Overview:
|
||||||
This is a very simple program that will adjust the speed of your CPU
|
This is a very simple program that will adjust the speed of your CPU
|
||||||
depending on system load. It works as a client of the CPUFreq driver.
|
depending on system load. It works as a client of the CPUFreq driver.
|
||||||
It is designed for use with CPU's supporting AMD's PowerNow power
|
It is designed for use with CPU's supporting AMD's PowerNow power management
|
||||||
management scheme, as it's algorithm works better if there are more
|
scheme, as it's algorithm works better if there are more then two CPU
|
||||||
than two CPU speeds available. (aka, ARM, AMD K6/K7, Via C3, and
|
speeds available. (aka, ARM, AMD K6/K7, Via C3, and Crusoe as opposed to
|
||||||
Crusoe as opposed to traditional Intel and Ultrasparc).
|
traditional Intel and Ultrasparc).
|
||||||
|
|
||||||
Powernowd uses the userspace governor, which is included in the Slackware
|
This program is essentially a simple client to the CPUFreq sysfs interface.
|
||||||
kernel images.
|
This means that you -need- to be running Linux v2.5 or later that includes
|
||||||
|
the sysfs interface. This daemon will -not- work with the CPUFreq driver
|
||||||
|
interface included in Linux v2.4. Feel free to write your own daemon
|
||||||
|
to support that if you like; you can even use this as a starting point.
|
||||||
|
If there's enough clamoring for it, then maybe I'll whip up something.
|
||||||
|
You also need a CPU that supports frequency scaling and supports the CPUFreq
|
||||||
|
interface. This code has been tested on various AMD and PPC processors
|
||||||
|
|
||||||
It is not wise to run two concurrent cpu frequency adjusting programs,
|
I have been running this daemon on my AMD laptop for over 2 years with no
|
||||||
for example, cpufreqd and powernowd simultaneously.
|
problems to report, and it's nice that my laptop remains cool unless I'm
|
||||||
|
really doing something intensive, like watching DivX movies, without me
|
||||||
|
having to manually intervene and set the speed. I just recently bought an
|
||||||
|
Apple iBook G3, and powernowd-0.80 worked flawlessly on it right out of
|
||||||
|
the box.
|
||||||
|
|
||||||
|
|
||||||
|
Features:
|
||||||
|
|
||||||
|
This daemon's goal is simplicity and speed. It doesn't try and make
|
||||||
|
too many decisions for you. That's its beauty, but it may not be what
|
||||||
|
everyone's looking for. Some of the features this daemon has:
|
||||||
|
|
||||||
|
One, simple heuristic to determine CPU load: "user + sys" time.
|
||||||
|
Ignore "niced" programs (setiathome, itself, etc). In my mind this is
|
||||||
|
consistent with what is meant when someone 'nice's a program to begin
|
||||||
|
with. (configurable in v0.85+) Designed for CPU's that support more
|
||||||
|
then two speed states, but works well with anything. Very fast, low
|
||||||
|
overhead /proc/stat gathering (method stolen from procps). Supports SMP
|
||||||
|
Will automatically switch to 'userspace' governor. Care taken to make
|
||||||
|
the code non-root exploitable (but please audit for yourself first!)
|
||||||
|
Frequency step size is configurable (default to 100MHz/step) 4 different
|
||||||
|
behavioral modes to choose from (SINE, AGGRESSIVE, PASSIVE, LEAPS),
|
||||||
|
which determine the behavior when the load changes. Configurable from the
|
||||||
|
command line. Written in C for speed and simplicity. Logging to stdout
|
||||||
|
or syslog Configurable Polling frequency in milliseconds (defaults to 1s)
|
||||||
|
Configurable highwater/lowwater marks for CPU usage. (defaults 80/20%)
|
||||||
|
|
||||||
|
Many similar daemons use other methods to determine what speed to use,
|
||||||
|
such as battery status, AC status, temperature, fan status, etc. They all
|
||||||
|
have their place. I however feel that in the grand scheme of things none
|
||||||
|
of the above matters. When I'm not using my CPU, I don't care if it's
|
||||||
|
running at a slower speed. When I -am- using my CPU, I only need it to
|
||||||
|
be fast enough to handle the task at hand without hiccuping. And when I'm
|
||||||
|
taxing my CPU, I want it running full speed. That's all this daemon does,
|
||||||
|
monitor CPU load and adjust the speed accordingly. Since in all reality
|
||||||
|
my CPU is idle 99% of the time (or playing mp3's which it can easily do
|
||||||
|
at it's lowest speed rating), this by definition leads to low power usage,
|
||||||
|
low temperatures, low speed fans, and better battery life.
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
config() {
|
|
||||||
NEW="$1"
|
|
||||||
OLD="$(dirname $NEW)/$(basename $NEW .new)"
|
|
||||||
# If there's no config file by that name, mv it over:
|
|
||||||
if [ ! -r $OLD ]; then
|
|
||||||
mv $NEW $OLD
|
|
||||||
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
|
|
||||||
# toss the redundant copy
|
|
||||||
rm $NEW
|
|
||||||
fi
|
|
||||||
# Otherwise, we leave the .new copy for the admin to consider...
|
|
||||||
}
|
|
||||||
|
|
||||||
# Keep same perms on rc.powernowd.new:
|
|
||||||
if [ -e etc/rc.d/rc.powernowd ]; then
|
|
||||||
cp -a etc/rc.d/rc.powernowd etc/rc.d/rc.powernowd.new.incoming
|
|
||||||
cat etc/rc.d/rc.powernowd.new > etc/rc.d/rc.powernowd.new.incoming
|
|
||||||
mv etc/rc.d/rc.powernowd.new.incoming etc/rc.d/rc.powernowd.new
|
|
||||||
fi
|
|
||||||
|
|
||||||
config etc/rc.d/rc.powernowd.new
|
|
||||||
|
|
|
@ -1,108 +0,0 @@
|
||||||
.\" 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).
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Slackware build script for powernowd
|
# Slackware build script for powernowd
|
||||||
|
|
||||||
# Written by Daniel LEVAI leva@ecentrum.hu
|
# Written by David Woodfall info@davidwoodfall.co.uk
|
||||||
|
|
||||||
PRGNAM=powernowd
|
PRGNAM=powernowd
|
||||||
VERSION=${VERSION:-1.00}
|
VERSION=${VERSION:-1.00}
|
||||||
|
@ -17,16 +17,19 @@ OUTPUT=${OUTPUT:-/tmp}
|
||||||
|
|
||||||
if [ "$ARCH" = "i486" ]; then
|
if [ "$ARCH" = "i486" ]; then
|
||||||
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
|
||||||
|
LIBDIRSUFFIX=""
|
||||||
elif [ "$ARCH" = "i686" ]; then
|
elif [ "$ARCH" = "i686" ]; then
|
||||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||||
|
LIBDIRSUFFIX=""
|
||||||
elif [ "$ARCH" = "x86_64" ]; then
|
elif [ "$ARCH" = "x86_64" ]; then
|
||||||
SLKCFLAGS="-O2 -fPIC"
|
SLKCFLAGS="-O2 -fPIC"
|
||||||
|
LIBDIRSUFFIX="64"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set -e # Exit on most errors
|
set -e
|
||||||
|
|
||||||
rm -rf $PKG
|
rm -rf $PKG
|
||||||
mkdir -p $TMP $PKG $OUTPUT
|
mkdir -p $TMP $OUTPUT $PKG/usr/sbin
|
||||||
cd $TMP
|
cd $TMP
|
||||||
rm -rf $PRGNAM-$VERSION
|
rm -rf $PRGNAM-$VERSION
|
||||||
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
|
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
|
||||||
|
@ -38,28 +41,25 @@ find . \
|
||||||
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
|
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
|
||||||
-exec chmod 644 {} \;
|
-exec chmod 644 {} \;
|
||||||
|
|
||||||
# We'll do all of this manually
|
make
|
||||||
gcc $SLKCFLAGS -Wall -o powernowd powernowd.c
|
install -m 755 powernowd $PKG/usr/sbin
|
||||||
|
|
||||||
mkdir -p $PKG/usr/sbin
|
( cd $PKG
|
||||||
strip --strip-unneeded powernowd
|
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
|
||||||
install -m 755 powernowd $PKG/usr/sbin/
|
xargs strip --strip-unneeded 2> /dev/null || true
|
||||||
|
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
|
||||||
mkdir -p $PKG/etc/rc.d/
|
xargs strip --strip-unneeded 2> /dev/null || true
|
||||||
cat $CWD/rc.powernowd.new > $PKG/etc/rc.d/rc.powernowd.new
|
)
|
||||||
|
|
||||||
mkdir -p $PKG/usr/man/man1
|
|
||||||
gzip -9c $CWD/powernowd.1 > $PKG/usr/man/man1/powernowd.1.gz
|
|
||||||
|
|
||||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||||
cp -a \
|
cp -a \
|
||||||
README \
|
powernowd.init \
|
||||||
$PKG/usr/doc/$PRGNAM-$VERSION
|
$PKG/usr/doc/$PRGNAM-$VERSION
|
||||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||||
|
|
||||||
mkdir -p $PKG/install
|
mkdir -p $PKG/install
|
||||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
|
||||||
|
|
||||||
cd $PKG
|
cd $PKG
|
||||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
|
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
PRGNAM="powernowd"
|
PRGNAM="powernowd"
|
||||||
VERSION="1.00"
|
VERSION="1.00"
|
||||||
HOMEPAGE="http://deater.net/john/powernowd.html"
|
HOMEPAGE="http://www.deater.net/john/powernowd.html"
|
||||||
DOWNLOAD="http://deater.net/john/powernowd-1.00.tar.gz"
|
DOWNLOAD="http://www.deater.net/john/powernowd-1.00.tar.gz"
|
||||||
MD5SUM="abc48b690d104e9e71a85400ba19d799"
|
MD5SUM="abc48b690d104e9e71a85400ba19d799"
|
||||||
MAINTAINER="Daniel LEVAI"
|
DOWNLOAD_x86_64=""
|
||||||
EMAIL="leva@ecentrum.hu"
|
MD5SUM_x86_64=""
|
||||||
APPROVED="rworkman"
|
MAINTAINER="David Woodfall"
|
||||||
|
EMAIL="info@davidwoodfall.co.uk"
|
||||||
|
APPROVED="dsomero"
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Written by Daniel LEVAI for the Slackware package
|
|
||||||
# Modified by Robby Workman <rworkman@slackbuilds.org>
|
|
||||||
|
|
||||||
# For the options, see the README of the man page
|
|
||||||
#OPTS='-q'
|
|
||||||
|
|
||||||
powernowd_start() {
|
|
||||||
local PID=$(pgrep -x powernowd);
|
|
||||||
if [ $PID ];then
|
|
||||||
echo "powernowd is already running ($PID)"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
/usr/sbin/powernowd $OPTS
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
powernowd_stop() {
|
|
||||||
local PID=$(pgrep -x powernowd);
|
|
||||||
if [ -z $PID ];then
|
|
||||||
echo "powernowd is not running"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
local i=1
|
|
||||||
while pgrep -x powernowd > /dev/null;do
|
|
||||||
if [ $i -gt 3 ];then
|
|
||||||
echo "Couldn't stop powernowd..."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
pkill -x powernowd
|
|
||||||
i=$(( $i + 1 ));
|
|
||||||
sleep 1;
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
powernowd_start
|
|
||||||
;;
|
|
||||||
stop)
|
|
||||||
powernowd_stop
|
|
||||||
;;
|
|
||||||
restart)
|
|
||||||
powernowd_stop
|
|
||||||
sleep 1
|
|
||||||
powernowd_start
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "$0 <start|stop|restart>"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
|
@ -5,15 +5,15 @@
|
||||||
# make exactly 11 lines for the formatting to be correct. It's also
|
# make exactly 11 lines for the formatting to be correct. It's also
|
||||||
# customary to leave one space after the ':'.
|
# customary to leave one space after the ':'.
|
||||||
|
|
||||||
|-----handy-ruler-------------------------------------------------------|
|
|-----handy-ruler------------------------------------------------------|
|
||||||
powernowd: This is a very simple program that will adjust the speed of your CPU
|
powernowd: powernowd (a cpu frequency daemon)
|
||||||
|
powernowd:
|
||||||
|
powernowd: This is a very simple program that will adjust the speed of your CPU
|
||||||
powernowd: depending on system load. It works as a client of the CPUFreq driver.
|
powernowd: depending on system load. It works as a client of the CPUFreq driver.
|
||||||
powernowd: It is designed for use with CPU's supporting AMD's PowerNow power
|
powernowd: It is designed for use with CPU's supporting AMD's PowerNow power
|
||||||
powernowd: management scheme, as it's algorithm works better if there are more
|
powernowd: management scheme, as it's algorithm works better if there are more
|
||||||
powernowd: then two CPU speeds available. (aka, ARM, AMD K6/K7, Via C3, and
|
powernowd: then two CPU speeds available. (aka, ARM, AMD K6/K7, Via C3, and
|
||||||
powernowd: Crusoe as opposed to traditional Intel and Ultrasparc).
|
powernowd: Crusoe as opposed to traditional Intel and Ultrasparc).
|
||||||
powernowd:
|
powernowd:
|
||||||
powernowd: http://deater.net/john/powernowd.html
|
|
||||||
powernowd:
|
|
||||||
powernowd:
|
powernowd:
|
||||||
powernowd:
|
powernowd:
|
||||||
|
|
Loading…
Reference in a new issue