automagic68
|
2010-05-15
, 16:12
|
|
Posts: 415 |
Thanked: 161 times |
Joined on Apr 2010
@ San Francisco, CA
|
#161
|
|
2010-05-15
, 18:33
|
|
Posts: 20 |
Thanked: 37 times |
Joined on May 2010
@ Estonia
|
#162
|
What are your guys thoughs on skipping frequencies? I've read about skipping 550mhz being tossed around. I was also thinking of skipping 805 since my max is set at 850? Doesn't 850 seem way more effiecent since they both use close to the same voltage?
The Following User Says Thank You to tonism For This Useful Post: | ||
|
2010-05-15
, 18:49
|
Posts: 284 |
Thanked: 320 times |
Joined on May 2010
@ Peterborough, UK
|
#163
|
|
2010-05-15
, 20:11
|
Posts: 24 |
Thanked: 4 times |
Joined on Mar 2010
|
#164
|
The powersave_bias setting (mentioned here and here) seems to have vastly improved my battery life - I thought I would flag them up in this thread as they got rather lost in the noise of the overclocking thread. I do however use samping_rate of 25 rather than 20 and up_threshold of 350000.
It needs changes to the kernel-config script itself to enable, however these are not complex, I can post them if anyone is interested?
Many thanks to bigswed for all of this as it was he who really alerted me to the setting; I also think the full range of frequencies (such as 550, 805 etc) are useful, even required, when using powersave as the ondemand governor switches between frequencies to average out at the required % reduction.
|
2010-05-15
, 21:11
|
Posts: 284 |
Thanked: 320 times |
Joined on May 2010
@ Peterborough, UK
|
#165
|
Can you also explain what changing the sampling_rate and up_threshold does?
#!/bin/sh # kernel configuration script for power user kernel # (c) Copyright 2010 by Thomas Tanner <maemo@tannerlab.com> # licensed under GPLv3 # version 0.2 (7. May 2010) if test $# -eq 0; then echo "$0 command [options]" echo "commands:" echo " show - show current settings" echo " load <file> - load settings from file" echo " save <file> - save settings to file (abs. path or filename in /home/user/.kernel)" echo " default [<file>] - set file or the current settings as default settings" echo " limits min max - set the frequency limits ('-' keeps the current setting)" echo " lock freq [volt] [dsp] - lock CPU at frequency with specific settings" echo " unlock - unlock CPU frequency" echo "filenames: absolute path or filename in search path or none=defaults" echo "search path: .,/home/user/.kernel,/usr/share/kernel-power-settings/" exit 1 fi if test "`id -u`" -ne 0; then sudo $0 $* # run as root exit $? fi cfr=/sys/devices/system/cpu/cpu0/cpufreq cfd=$cfr/ondemand pwr=/sys/power echo ondemand > $cfr/scaling_governor if test -f $cfd/avoid_frequencies -a -f $pwr/vdd1_opps_vsel -a -f $pwr/dsp_opps_rate; then : else echo This kernel version `uname -r` is not supported echo Please make sure that kernel-power is installed and running. echo If you have just installed the kernel, you need to shutdown and boot to activate it. echo To reinstall the power user kernel run: echo \'apt-get install --reinstall kernel-power kernel-power-flasher\' exit 1 fi allfreq= for f in `cat $cfr/scaling_available_frequencies`; do allfreq="$f $allfreq" done vsel=`cat $pwr/vdd1_opps_vsel` rate=`cat $pwr/dsp_opps_rate` cmd=$1 test "$cmd" = setdefault && cmd=default # old name case " show load save default limits lock unlock " in *" $cmd "*) ;; *) echo "invalid command $cmd"; exit 1 ;; esac arg= shift if test "$cmd" = unlock; then echo 'unlocking frequency. reset to defaults' cmd=loaddef fi if test "$cmd" = default && test $# -eq 0; then echo 'saving current settings as defaults' arg=/etc/default/kernel-power cmd=savedef fi popvsel() { curvsel=$1; shift; vsel="$*"; } poprate() { currate=$1; shift; rate="$*"; } case $cmd in show|save|savedef) minfreq=$((`cat $cfr/scaling_min_freq`/1000)) maxfreq=$((`cat $cfr/scaling_max_freq`/1000)) test $maxfreq = 599 && maxfreq=600 avoid=`cat $cfd/avoid_frequencies` freqs= for f in 0 $allfreq; do popvsel $vsel poprate $rate case " $avoid " in *" $f "*) ;; *) freqs="$freqs$((f/1000)):$curvsel,$currate " ;; esac done if test $cmd = show; then echo "current kernel configuration:" echo "current frequency:" $((`cat $cfr/scaling_cur_freq`/1000)) echo -n "supported frequencies: " for f in $allfreq; do echo -n "$((f/1000)) "; done echo echo "min. frequency:" $minfreq echo "max. frequency:" $maxfreq echo -n "avoid frequencies: " for f in $avoid; do echo -n "$((f/1000)) "; done echo echo "active frequencies: $freqs" echo "SmartReflex" "VDD1=`cat $pwr/sr_vdd1_autocomp`, VDD2=`cat $pwr/sr_vdd2_autocomp`" echo -n "ondemand: ignore nice load=" `cat $cfd/ignore_nice_load` echo -n ", powersave bias=" `cat $cfd/powersave_bias` echo -n ", up threshold=" `cat $cfd/up_threshold` echo ", sampling rate=" `cat $cfd/sampling_rate` else test $cmd = save && arg=$1 if test -z "$arg"; then echo "filename argument is mssing" exit 1 fi if test `basename $arg` = $arg; then u=/home/user/.kernel arg=$u/$arg if test ! -d $u; then mkdir -p $u chown user.users $u fi touch $arg chown user.users $arg fi rm -f $arg echo "saving to $arg" echo "# kernel configuration file generated by $0" > $arg echo "MINFREQ=$minfreq" >> $arg echo "MAXFREQ=$maxfreq" >> $arg echo "FREQS=\"$freqs\"" >> $arg echo "SMARTREFLEX_VDD1=`cat $pwr/sr_vdd1_autocomp`" >> $arg echo "SMARTREFLEX_VDD2=`cat $pwr/sr_vdd2_autocomp`" >> $arg echo "IGNORE_NICE_LOAD=`cat $cfd/ignore_nice_load`" >> $arg echo "POWERSAVE_BIAS=`cat $cfd/powersave_bias`" >> $arg echo "UP_THRESHOLD=`cat $cfd/up_threshold`" >> $arg echo "SAMPLING_RATE=`cat $cfd/sampling_rate`" >> $arg fi ;; load|loaddef) test $cmd = loaddef || arg=$1 if test -z "$arg"; then arg=/etc/default/kernel-power test -f $arg || arg=/usr/share/kernel-power-settings/default fi if test `basename $arg` = $arg; then # not absolute for p in . /home/user/.kernel /usr/share/kernel-power-settings; do test -f $p/$arg && arg=$p/$arg && break done fi if test ! -f "$arg"; then echo "file not found $arg" exit 1 fi echo "loading $arg" source $arg if test -n "$VDD1_OPPS_VSEL" -o -n "$DSP_OPPS_RATE"; then echo "warning: old configuration format detected. please save in the new format." if test -n "$MAX_FREQ"; then test $MAX_FREQ = 600000 && MAX_FREQ=599000 echo $MAX_FREQ > $cfr/scaling_max_freq fi test -n "$MIN_FREQ" && echo $MIN_FREQ > $cfr/scaling_min_freq test -n "$MAX_FREQ" && echo $MAX_FREQ > $cfr/scaling_max_freq test -n "$VDD1_OPPS_VSEL" && echo $VDD1_OPPS_VSEL > $pwr/vdd1_opps_vsel test -n "$DSP_OPPS_RATE" && echo $DSP_OPPS_RATE > $pwr/dsp_opps_rate test -n "$SMARTREFLEX_VDD1" && echo $SMARTREFLEX_VDD1 > $pwr/sr_vdd1_autocomp test -n "$SMARTREFLEX_VDD2" && echo $SMARTREFLEX_VDD2 > $pwr/sr_vdd2_autocomp test -n "$IGNORE_NICE_LOAD" && echo $IGNORE_NICE_LOAD > $cfd/ignore_nice_load test -n "$POWERSAVE_BIAS" && echo $POWERSAVE_BIAS > $cfd/powersave_bias test -n "$UP_THRESHOLD" && echo $UP_THRESHOLD > $cfd/up_threshold test -n "$SAMPLING_RATE" && echo $SAMPLING_RATE > $cfd/sampling_rate exit 1 fi active= minfreq= maxfreq= for f in $FREQS; do freq=`echo $f | cut -d: -f1` f=`echo $f | cut -d: -f2` volt=`echo $f | cut -d, -f1` dsp=`echo $f | cut -d, -f2` if test ! $freq = 0; then test -z "$minfreq" -o "$freq" -lt "$minfreq" && minfreq=$freq test -z "$maxfreq" -o "$freq" -gt "$maxfreq" && maxfreq=$freq freq=$((freq*1000)) case " $allfreq " in *" $freq "*) ;; *) echo warning: $freq not supported; continue ;; esac active="$active $freq" fi test -z "$volt" && test -z "$dsp" && continue tvsel= trate= for fr in 0 $allfreq; do if test $fr = $freq; then popvsel $vsel poprate $rate test -z "$volt" && volt=$curvsel test -z "$dsp" && dsp=$currate tvsel="$tvsel $volt $vsel" trate="$trate $dsp $rate" break fi popvsel $vsel tvsel="$tvsel $curvsel" poprate $rate trate="$trate $currate" done vsel=$tvsel rate=$trate done test -n "$MINFREQ" && minfreq=$MINFREQ test -n "$MAXFREQ" && maxfreq=$MAXFREQ test "$minfreq" -gt 100000 && minfreq=$((minfreq/1000)) test "$maxfreq" -gt 100000 && maxfreq=$((maxfreq/1000)) avoid= for f in $allfreq; do if test "$f" -lt $((minfreq*1000)); then avoid="$avoid $f" continue fi case " $active " in *" $f "*) ;; *) avoid="$avoid $f" ;; esac done echo $avoid > $cfd/avoid_frequencies echo $vsel > $pwr/vdd1_opps_vsel echo $rate > $pwr/dsp_opps_rate test $maxfreq = 600 && maxfreq=599 echo $((maxfreq*1000)) > $cfr/scaling_max_freq echo $((minfreq*1000)) > $cfr/scaling_min_freq echo $((maxfreq*1000)) > $cfr/scaling_max_freq test -n "$SMARTREFLEX_VDD1" && echo $SMARTREFLEX_VDD1 > $pwr/sr_vdd1_autocomp test -n "$SMARTREFLEX_VDD2" && echo $SMARTREFLEX_VDD2 > $pwr/sr_vdd2_autocomp test -n "$IGNORE_NICE_LOAD" && echo $IGNORE_NICE_LOAD > $cfd/ignore_nice_load test -n "$POWERSAVE_BIAS" && echo $POWERSAVE_BIAS > $cfd/powersave_bias test -n "$UP_THRESHOLD" && echo $UP_THRESHOLD > $cfd/up_threshold test -n "$SAMPLING_RATE" && echo $SAMPLING_RATE > $cfd/sampling_rate echo "successfully loaded." ;; default) arg=$1 if test -z "$arg"; then echo "filename missing" exit 1 fi if test `basename $arg` = $arg; then # not absolute for p in . /home/user/.kernel /usr/share/kernel-power-settings; do test -f $p/$arg && arg=$p/$arg && break done fi def=/etc/default/kernel-power rm -f $def case $arg in /usr/share/kernel-power-settings/*) ln -s $arg $def ;; *) cp $arg $def ;; esac echo "defaults set to $arg" ;; limits) minfreq=$1 maxfreq=$2 if test "x$minfreq" = x -o "x$maxfreq" = x; then echo "frequency limit arguments missing" exit 1 fi test "x$minfreq" = "x-" && minfreq=$((`cat $cfr/scaling_min_freq`/1000)) test "x$maxfreq" = "x-" && maxfreq=$((`cat $cfr/scaling_max_freq`/1000)) limits="$minfreq,$maxfreq" minfreq=$((minfreq*1000)) maxfreq=$((maxfreq*1000)) case " $allfreq " in *" $minfreq "*) ;; *) echo "invalid lower limit $1"; exit 1; ;; esac case " $allfreq " in *" $maxfreq "*) ;; *) echo "invalid upper limit $2"; exit 1; ;; esac if test $minfreq -gt $maxfreq; then echo "minimum must not be greater than maximum: $limits" exit 1 fi test $maxfreq = 600000 && maxfreq=599000 echo $maxfreq > $cfr/scaling_max_freq echo $minfreq > $cfr/scaling_min_freq echo $maxfreq > $cfr/scaling_max_freq echo "the limits were set to [$limits]" ;; lock) arg=$1 altfreq= for f in $allfreq; do test "$f" = "$arg" && continue altfreq=$f break done vsel= dsp= freq=$((arg*1000)) ifreq= i=1 avoid= for f in $allfreq; do i=$((i+1)) if test $f = $freq; then ifreq=$i break fi avoid="$avoid $f" done if test -z "ifreq"; then echo invalid frequency $freq exit 1 fi echo userspace > $cfr/scaling_governor echo $altfreq > $cfr/scaling_setspeed # temporarily set alternative frequencies volt=$2 if test -n "$volt"; then i=0 vsel= for v in `cat $pwr/vdd1_opps_vsel`; do i=$((i+1)) test $i = $ifreq && v=$volt vsel="$vsel $v" done echo $vsel > $pwr/vdd1_opps_vsel fi dsp=$3 if test -n "$dsp"; then i=0 dsp= for r in `cat $pwr/dsp_opps_rate`; do i=$((i+1)) test $i = $ifreq && r=$dsp dsp="$dsp $r" done echo $dsp > $pwr/dsp_opps_rate fi echo locking frequency $freq echo ondemand > $cfr/scaling_governor echo $avoid > $cfd/avoid_frequencies # avoid all other freqs maxfreq=$freq test $maxfreq = 600000 && maxfreq=599000 # min after max? kernel docs are wrong? echo $maxfreq > $cfr/scaling_max_freq echo $freq > $cfr/scaling_min_freq echo $maxfreq > $cfr/scaling_max_freq ;; esac exit 0
# tonism starving undervolt configuration for titan kernel # minimum frequency to use MINFREQ=125 # maximum frequency to use MAXFREQ=1000 # list of frequency configurations: each "frequency:volt,dsprate" FREQS="0:18,90 125:22,90 250:28,180 500:29,360 550:32,400 600:34,430 700:41,430 750:42,430 805:45,430 850:46,500 900:49,500 950:52,500 1000:55,500 1100:63,520 1150:69,520" UP_THRESHOLD=95 SAMPLING_RATE=350000 SMARTREFLEX_VDD1=0 SMARTREFLEX_VDD2=0 IGNORE_NICE_LOAD=1 POWERSAVE_BIAS=25
|
2010-05-16
, 02:08
|
Posts: 6 |
Thanked: 0 times |
Joined on Nov 2009
|
#166
|
|
2010-05-17
, 12:40
|
Posts: 53 |
Thanked: 8 times |
Joined on Apr 2010
@ Switzerland
|
#167
|
default ULV XLV ideal starving deprived drained
0 0,9750 0,9125 0,8500 0,8750 0,8500 -
125 0,9750 0,9125 0,8500 0,8750 0,8500 -
250 1,0750 0,9125 0,9750 0,9500 0,9000 0,8750
500 1,2000 1,0125 1,0125 0,9750 0,9625 0,9500 0,9375
550 1,2750 1,0750 1,0750 1,0125 1,0000 0,9875 -
600 1,3500 1,0750 1,0750 1,0750 1,0250 1,0125 0,9750
700 1,3500 1,1625 1,1625 1,1625 1,1125 1,0750 1,0500
750 1,3500 1,1625 1,1625 1,1625 1,1250 1,1000 1,0875
805 1,3500 1,2000 1,2000 1,2000 1,1625 1,1375 1,1250
850 1,3500 1,2000 1,2000 1,2000 1,1750 1,1750 1,1625
900 1,3500 1,2750 1,2750 1,2750 1,2125 1,2000 1,2000
950 1,3500 1,2750 1,2750 1,2750 1,2375 1,2375 1,2375
1000 1,3500 1,3500 1,3500 1,3500 1,2875 1,2750 1,2750
1100 1,5000 1,5000 1,5000 1,5000 1,3875 - -
1150 1,5000 1,5000 1,5000 1,5000 1,4625 - -
The Following User Says Thank You to Jokah For This Useful Post: | ||
|
2010-05-17
, 14:06
|
Posts: 209 |
Thanked: 44 times |
Joined on Jan 2010
@ Austria
|
#168
|
|
2010-05-17
, 15:05
|
Posts: 53 |
Thanked: 8 times |
Joined on Apr 2010
@ Switzerland
|
#169
|
Jokah, can you please post the code (config) for your drained settings so that I can copy/paste it in a file. Thanks.
The Following User Says Thank You to Jokah For This Useful Post: | ||
|
2010-05-17
, 15:15
|
Posts: 5,795 |
Thanked: 3,151 times |
Joined on Feb 2007
@ Agoura Hills Calif
|
#170
|