View previous topic :: View next topic |
Author |
Message |
rk187 Tux's lil' helper
Joined: 14 Apr 2003 Posts: 136 Location: France - Paris
|
Posted: Thu Dec 04, 2003 3:49 pm Post subject: [POWERNOW-K7] utilisation optimale sous kernel 2.6 HOWTO |
|
|
Mise à Jour du How-To sur la gestion du PowerNow! 29/08/2004
la config à changé depuis, désormais on utilisera la nouvelle interface du repertoire /sys
Première chose, vous devez avoir un Mobile Athlon pour utiliser ce driver.
pour vérifier faites un grep name /proc/cpuinfo
Code: |
model name : mobile AMD Athlon(tm) XP 1600+
|
-Config du noyau :
Quote: |
[*] CPU Frequency scaling
< > /proc/cpufreq interface (deprecated)
│ Default CPUFreq governor (performance) --->
--- 'performance' governor
<M> 'powersave' governor
<M> 'userspace' governor for userspace frequency scaling
[ ] /proc/sys/cpu/ interface (2.4. / OLD)
<M> CPU frequency table helpers
--- CPUFreq processor drivers
< > ACPI Processor P-States driver
< > AMD Mobile K6-2/K6-3 PowerNow!
<M> AMD Mobile Athlon/Duron PowerNow!
< > AMD Opteron/Athlon64 PowerNow!
< > Cyrix MediaGX/NatSemi Geode Suspend Modulation
< > Intel Enhanced SpeedStep
< > Intel Speedstep on ICH-M chipsets (ioport interface)
< > Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
< > Intel Pentium 4 clock modulation
< > Transmeta LongRun
< > VIA Cyrix III Longhaul
|
-Config des modules :
ajouter dans /etc/modules.autoload.d/kernel-2.6
Quote: |
powernow-k7
cpufreq_powersave
|
-Rebootez
-Verification de l'état du driver
cherchez la sortie du driver powernow dans dmesg, voici le mien:
Quote: |
powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
powernow: FSB: 100.046 MHz
powernow: Found PSB header at c00e5100
powernow: Table version: 0x12
powernow: Flags: 0x0 (Mobile voltage regulator)
powernow: Settling Time: 100 microseconds.
powernow: Has 1 PST tables. (Only dumping ones relevant to this CPU).
powernow: PST:0 (@c00e5110)
powernow: cpuid: 0x780 fsb: 100 maxFID: 0x16 startvid: 0xb
powernow: FID: 0x4 (5.0x [500MHz]) VID: 0x13 (1.200V)
powernow: FID: 0x8 (7.0x [700MHz]) VID: 0x13 (1.200V)
powernow: FID: 0xe (10.0x [1000MHz]) VID: 0x11 (1.250V)
powernow: FID: 0x2 (12.0x [1200MHz]) VID: 0xd (1.350V)
powernow: FID: 0x16 (14.0x [1400MHz]) VID: 0xb (1.450V)
powernow: SGTC: 10000
powernow: Minimum speed 500 MHz. Maximum speed 1400 MHz.
|
-Maintenant jetez un coup d'oeil dans ce repertoire : /sys/devices/system/cpu/cpu0/cpufreq/
les noms de chaques éléments sont assez explicites, par exemple un cat cpuinfo_cur_freq vous donnera la fréquence actuelle du processeur.
-Gestion logicielle
emerge cpudyn #ce soft basculera de min a max suivant la charge cpu, simple d'utilisation aucune config à faire.
emerge cpufreqd #plus complet et paramètrable avec un fichier de config.
Je vous laisse consulter les man car leur config n'est pas le sujet de ce How-To.
-Gestion Manuelle
3 fichiers sont à considerer:
scaling_governor
scaling_max_freq
scaling_min_freq
par défaut pour mon proc min=500 et max=1400
pour basculer à min : echo powersave > scaling_governor
pour basculer à max : echo performance > scaling_governor
Vous pouvez modifier les fichiers scaling_max_freq et scaling_min_freq
par exemple :
echo 701000 > scaling_min_freq
echo 1001000 > scaling_max_freq
à present min=700 et max=1000
(vous remarquerez que je mets 701000 et non 700000, car la fréquence n'est jamais de 700 tout rond donc en mettant 700000 vous obtiendrez 500MHz)
en général on laisse min à 500 car le but de powersave est de consommer le moins.
Pour mieux comprendre voici ma config d'alias:
Code: |
alias performance = 'echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'
alias powersave = 'echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'
alias 700 = 'echo 701000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'
alias 1000 = 'echo 1001000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'
alias 1200 = 'echo 1201000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'
alias 1400 = 'echo 1401000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq'
|
en mode performance le fait de taper 1000 changera dynamiquement la fréquence, en mode powersave le cpu restera toujours à 500.
J'ai utilisé cpudyn et cpufreqd mais a la longue je préfere gérer moi meme la fréquence.
voici quelques exemples d'utilisation:
utilisation im/chat/etc : 500
utilisation bureautique : 700
utilisation multimedia : 1000
compilation emerge : 1400
sur batterie le fait de rester toujours en powersave me donne environ 2h d'autonomie.
sinon mon super record de consomation est de 27 minutes (cpu à 1400 + lecture DVD).
[howto obsolète]
Voici la methode pour utiliser la technologie Powernow de façon "Power-On-Demand"
tout d'abord la config du kernel 2.6
Dans power management activer CPU Frequency scaling
activer en module
- /proc/cpufreq interface
- 'powersave' governor
- CPU frequency table helper
- AMD Mobile Athlon/Duron PowerNow!
ensuite dans /etc/module.autoload/kernel-2.6
ajouter:
powernow-k7
proc_intf
cpufreq_powersave
et pour terminer emergez le package cpudyn
lancez le par Code: | /etc/init.d/cpudyn start | et mettez le au demarrage : Code: | rc-update add cpudyn default |
Vous pouvez tester en lancant un film ou une compil par exemple, tapez cat /proc/cpuinfo et regardez la ligne "cpu MHz" ensuite virer le film et reconsulter la frequence elle sera au minimum.
dans mon cas j'ai un XP1600+ au minimum il tourne à 500MHz et 1400MHz au maximum, si l'application ne demande pas de puissance il reste à 500, exemple pendant la lecture d'un mp3 avec xmms.
voila j'espere que ça pourra vous servir, j'utilisais depuis longtemps le powernow mais je ne connaissais pas le programme "cpudyn" il doit etre recent.
Last edited by rk187 on Sun Aug 29, 2004 9:18 am; edited 2 times in total |
|
Back to top |
|
|
Zidge Tux's lil' helper
Joined: 20 Aug 2003 Posts: 86
|
Posted: Thu Dec 04, 2003 4:57 pm Post subject: |
|
|
bon, voila, fallait bien commencer par qqn ...
donc voila, moi j'ai un pb ...
j'ai bien suivi ton tutos
jusqu'au point: inserer dans votre modules.autoload ...
la, j'ai plutot tente de lancer les modules a la main
un petit modprobe ... et vlan, lors du
modprobe powernow-k7
FATAL: Error inserting powernow_k7 (/lib/modules/2.6.0-test11-gentoo-r1/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k7.ko): No such device
va comprendre charles, pourtant j'ai bien mis en module athlon/duron
d'ailleurs il y a bien un fichier powernow-k7.ko dans le rep en question ...
any idea ? |
|
Back to top |
|
|
rk187 Tux's lil' helper
Joined: 14 Apr 2003 Posts: 136 Location: France - Paris
|
Posted: Thu Dec 04, 2003 5:19 pm Post subject: |
|
|
heu oui c un peu bizarre, peux tu poster le resultat de ton cat /proc/cpuinfo
j'utilises les dev-sources mais je ne penses pas que ca vienne de tes gentoo-sources. tu as quand meme rebooté j'espere car le CPU freq scaling est compilé en dur. |
|
Back to top |
|
|
Zidge Tux's lil' helper
Joined: 20 Aug 2003 Posts: 86
|
Posted: Fri Dec 05, 2003 12:42 pm Post subject: |
|
|
Quote: | processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 6
model name : AMD Athlon(tm) XP 1800+
stepping : 2
cpu MHz : 1533.716
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow
bogomips : 3014.65
|
vi vi j'avais bien reboote pas de souci la dessus :p |
|
Back to top |
|
|
rk187 Tux's lil' helper
Joined: 14 Apr 2003 Posts: 136 Location: France - Paris
|
Posted: Fri Dec 05, 2003 5:02 pm Post subject: |
|
|
voici le mien: Quote: | processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : mobile AMD Athlon(tm) XP 1600+
stepping : 0
cpu MHz : 500.232
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow
bogomips : 985.96
|
il faut croire que ça ne fonctionne pas sur un Athlon XP non-mobile. pourtant il porte la marque Powernow aussi il me semble ?
si quelqu'un d'autre a une idée... |
|
Back to top |
|
|
rk187 Tux's lil' helper
Joined: 14 Apr 2003 Posts: 136 Location: France - Paris
|
|
Back to top |
|
|
SnowBear l33t
Joined: 03 Sep 2005 Posts: 773 Location: France - Bordeaux
|
Posted: Sun Nov 27, 2005 2:27 pm Post subject: |
|
|
Salut,
j'ai un XP mobile monté sur un pc de bureau.
J'ai voulu suivre cette how-to et j'en ai conclu la chose suivante : ça ne fonctionne que sur les portables, je m'en doutais un peu mais bon...
mon dmesg
Code: | powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
powernow: Trying ACPI perflib
powernow: ACPI perflib can not be used in this platform
powernow: ACPI and legacy methods failed
powernow: See http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml |
Un cat /proc/cpuinfo
Code: | processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 10
model name : AMD Athlon XP-M
stepping : 0
cpu MHz : 3537.138
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mp mmxext 3dnowext 3dnow
bogomips : 7083.37 |
Au passage la fréquence est les bogomips ont buggé... en vérité c'est 1800 mHz et dans les 3/4000 bogomips |
|
Back to top |
|
|
chipsterjulien Guru
Joined: 08 Jun 2004 Posts: 350 Location: Lille France
|
Posted: Thu Feb 16, 2006 12:09 pm Post subject: |
|
|
A un moment tu mets :
Quote: | │ Default CPUFreq governor (performance) --->
--- 'performance' governor |
Personnellement si tu veux avoir des bonnes performances sur un pc sur une batterie il faut mettre userspace et utiliser par exemple powernowd. Ceci permet d'éviter d'avoir le ventilateur qui tourne sans arrêt. Cependant sur un pc non portable il vaut mieux mettre performance car la réactivité de userspace est légèrement moins bonne |
|
Back to top |
|
|
Zanfib Tux's lil' helper
Joined: 03 Jun 2004 Posts: 87 Location: France - Blotzheim
|
Posted: Thu Feb 16, 2006 12:33 pm Post subject: |
|
|
Pour info l'AMD64 dispose du powernow, donc ce howto marche très bien avec les pc basés sur ce processeur. |
|
Back to top |
|
|
TGL Bodhisattva
Joined: 02 Jun 2002 Posts: 1978 Location: Rennes, France
|
Posted: Thu Feb 16, 2006 3:46 pm Post subject: |
|
|
chipsterjulien wrote: | Personnellement si tu veux avoir des bonnes performances sur un pc sur une batterie il faut mettre userspace et utiliser par exemple powernowd. Ceci permet d'éviter d'avoir le ventilateur qui tourne sans arrêt. Cependant sur un pc non portable il vaut mieux mettre performance car la réactivité de userspace est légèrement moins bonne |
Quant à moi, j'ai arrêté d'utiliser "userspace + démon qui va qui bien" depuis un certain temps, et je suis passé au governor "ondemand", qui fait en gros la même chose mais dans le noyau. Niveau réactivité, je ne fais vraiment pas la différence avec "performance" : quand il n'y a rien d'autre à faire que de rafraichir une GUI, une basse fréquence suffit bien, et quand il y a du boulot derrière en plus, bah la fréquence monte, donc bref pour moi ça marche nickel. Je reste comme ça y compris quand je suis sur secteur du coup. Par contre il faut bien penser à activer l'option pour qu'il prenne en compte les processus nicés, parceque sinon ça se met évidemment à ramer dès que je fais un emerge par exemple.
Bon maintenant, je ne suis pas sur AMD mais sur Pentium M, je ne sais pas si ça change qqch à l'affaire. |
|
Back to top |
|
|
chipsterjulien Guru
Joined: 08 Jun 2004 Posts: 350 Location: Lille France
|
Posted: Sat Feb 18, 2006 11:47 am Post subject: |
|
|
TGL wrote: | chipsterjulien wrote: | Personnellement si tu veux avoir des bonnes performances sur un pc sur une batterie il faut mettre userspace et utiliser par exemple powernowd. Ceci permet d'éviter d'avoir le ventilateur qui tourne sans arrêt. Cependant sur un pc non portable il vaut mieux mettre performance car la réactivité de userspace est légèrement moins bonne |
Quant à moi, j'ai arrêté d'utiliser "userspace + démon qui va qui bien" depuis un certain temps, et je suis passé au governor "ondemand", qui fait en gros la même chose mais dans le noyau. Niveau réactivité, je ne fais vraiment pas la différence avec "performance" : quand il n'y a rien d'autre à faire que de rafraichir une GUI, une basse fréquence suffit bien, et quand il y a du boulot derrière en plus, bah la fréquence monte, donc bref pour moi ça marche nickel. Je reste comme ça y compris quand je suis sur secteur du coup. Par contre il faut bien penser à activer l'option pour qu'il prenne en compte les processus nicés, parceque sinon ça se met évidemment à ramer dès que je fais un emerge par exemple.
Bon maintenant, je ne suis pas sur AMD mais sur Pentium M, je ne sais pas si ça change qqch à l'affaire. |
Personnellement, j'ai mis ondemand et les autres en modules mais je ne les ai pas charger car je n'ai ai pas vu l'utilité comme ce que j'avais fait fonctionnait bien. Il faut simplement virer le script et charger le(s) module(s) je parie (je pense que ca doit etre qu'un seul en fonction de ce que l'on veut) et le tour est joué |
|
Back to top |
|
|
TGL Bodhisattva
Joined: 02 Jun 2002 Posts: 1978 Location: Rennes, France
|
Posted: Sat Feb 18, 2006 12:16 pm Post subject: |
|
|
chipsterjulien wrote: | Il faut simplement virer le script et charger le(s) module(s) je parie (je pense que ca doit etre qu'un seul en fonction de ce que l'on veut) |
Tu peux avoir autant de gouverneurs que tu veux de chargés en modules ou de compilés en dur. Après, la sélection se fait via le fichier /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor. Évidemment, comme c'est un chemin un peu long, il y a des petits utilitaires qui permettent de simplifier ça :
Code: | * sys-power/cpufrequtils
Available versions: 0.3-r1 0.4
Installed: none
Homepage: http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils.html
Description: Userspace utilities for the Linux kernel cpufreq subsystem | Code: | % cpufreq-selector --help
Usage:
cpufreq-selector [OPTION...] - CPUFreq Selector
Help Options:
-?, --help Show help options
Application Options:
-c, --cpu CPU Number
-g, --governor Governor
-f, --frequency Frequency in KHz |
Enfin en fait, perso ce cpufreq-selector je ne l'utilise pas, parceque je m'étais déjà fait un petit bout de Bash avant de découvrir son existence. Code: | % alias cpufreq
alias cpufreq='sudo /usr/local/sbin/cpufreq' | Code: | % cat /usr/local/sbin/cpufreq
#!/bin/bash
CONF_FILE="/etc/cpufreq.conf"
die() { echo "${*}" >&2 ; exit 1 ; }
[[ $UID -eq 0 ]] || die "Must be root."
[[ -n "${1}" ]] || die "Usage: cpufreq <governor>"
for cpu in /sys/devices/system/cpu/cpu[0-9] ; do
avail_gov=" $(<${cpu}/cpufreq/scaling_available_governors) "
[[ ${avail_gov} == *" ${1} "* ]] \
|| die "Governor ${1} is not valid for ${cpu##*/}."
echo "${1}" > ${cpu}/cpufreq/scaling_governor
[[ -f "${CONF_FILE}" ]] || continue
sleep 1 # not sure this is needed
sed -n '/^[ \t]*[a-zA-Z_/]\+[ \t]\+\w\+[ \t]*$/p' "${CONF_FILE}" \
| while read opt_name opt_value ; do
opt_file=${cpu}/cpufreq/${opt_name}
[[ -f "${opt_file}" ]] \
&& echo "${opt_value}" > ${opt_file}
done
done | Code: | % cat /etc/bash_completion.d/cpufreq
# Completion function for /usr/local/sbin/cpufreq
_cpufreq_governor()
{
local avail_gov="$(</sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)"
cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $( compgen -W "$avail_gov" -- $cur ) )
return 0
}
complete -F _cpufreq_governor cpufreq | Code: | % cat /etc/cpufreq.conf
# Include niced jobs (kernel <=2.6.15: weird semantics)
ondemand/ignore_nice 1
# Include niced jobs (kernel >=2.6.16: new name and semantics)
ondemand/ignore_nice_load 0 |
Avec ça, je peux faire "cpufreq performance" pour passer en mode performance, refaire "cpufreq ondemand" pour repasser en mode régulé (en plaçant au passage l'option qui va bien pour prendre en compte les jobs nicés), etc. Et j'ai aussi un "/usr/local/sbin/cpufreq ondemand" dans mon /etc/conf.d/local.start pour régler ça une première fois au boot.
Quote: | je n'ai ai pas vu l'utilité comme ce que j'avais fait fonctionnait bien. |
C'est clair qu'il y a plusieurs solutions. Perso je trouve ondemand plus simple (parceque pas de démon à configurer et lancer), mais c'est vraiment une affaire de goût.
EDIT : le cpufreq-selector ci dessus, c'est de gnome-base/gnome-applets qu'il vient en fait. Quant à sys-power/cpufrequtils, il installe bien un utilitaire très similaire, mais qui s'appelle lui cpufreq-set. |
|
Back to top |
|
|
chipsterjulien Guru
Joined: 08 Jun 2004 Posts: 350 Location: Lille France
|
Posted: Sun Feb 19, 2006 12:28 pm Post subject: |
|
|
Oui, il y a plusieurs solutions mais merci pour les informations supplémentaires, elles peuvent être d'une grande aide pour une personne ne souhaitant pas mettre de daemon en fond et que ca soit plutôt géré par le kernel lui même |
|
Back to top |
|
|
|