Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[POWERNOW-K7] utilisation optimale sous kernel 2.6 HOWTO
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
rk187
Tux's lil' helper
Tux's lil' helper


Joined: 14 Apr 2003
Posts: 136
Location: France - Paris

PostPosted: Thu Dec 04, 2003 3:49 pm    Post subject: [POWERNOW-K7] utilisation optimale sous kernel 2.6 HOWTO Reply with quote

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.:wink:
sinon mon super record de consomation est de 27 minutes (cpu à 1400 + lecture DVD).:lol:






[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.

8)


Last edited by rk187 on Sun Aug 29, 2004 9:18 am; edited 2 times in total
Back to top
View user's profile Send private message
Zidge
Tux's lil' helper
Tux's lil' helper


Joined: 20 Aug 2003
Posts: 86

PostPosted: Thu Dec 04, 2003 4:57 pm    Post subject: Reply with quote

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
View user's profile Send private message
rk187
Tux's lil' helper
Tux's lil' helper


Joined: 14 Apr 2003
Posts: 136
Location: France - Paris

PostPosted: Thu Dec 04, 2003 5:19 pm    Post subject: Reply with quote

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
View user's profile Send private message
Zidge
Tux's lil' helper
Tux's lil' helper


Joined: 20 Aug 2003
Posts: 86

PostPosted: Fri Dec 05, 2003 12:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
rk187
Tux's lil' helper
Tux's lil' helper


Joined: 14 Apr 2003
Posts: 136
Location: France - Paris

PostPosted: Fri Dec 05, 2003 5:02 pm    Post subject: Reply with quote

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... :roll:
Back to top
View user's profile Send private message
rk187
Tux's lil' helper
Tux's lil' helper


Joined: 14 Apr 2003
Posts: 136
Location: France - Paris

PostPosted: Fri Dec 05, 2003 5:15 pm    Post subject: Reply with quote

bon bah mon tuto concerne tout de suite moins de monde... voici la reponse tirée du site d'AMD :
Quote:
AMD PowerNow!™ technology is an innovative solution available on all AMD mobile processor-based notebooks


http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_1276_807%5E964,00.html
Back to top
View user's profile Send private message
SnowBear
l33t
l33t


Joined: 03 Sep 2005
Posts: 773
Location: France - Bordeaux

PostPosted: Sun Nov 27, 2005 2:27 pm    Post subject: Reply with quote

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
View user's profile Send private message
chipsterjulien
Guru
Guru


Joined: 08 Jun 2004
Posts: 350
Location: Lille France

PostPosted: Thu Feb 16, 2006 12:09 pm    Post subject: Reply with quote

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
View user's profile Send private message
Zanfib
Tux's lil' helper
Tux's lil' helper


Joined: 03 Jun 2004
Posts: 87
Location: France - Blotzheim

PostPosted: Thu Feb 16, 2006 12:33 pm    Post subject: Reply with quote

Pour info l'AMD64 dispose du powernow, donc ce howto marche très bien avec les pc basés sur ce processeur. :idea:
Back to top
View user's profile Send private message
TGL
Bodhisattva
Bodhisattva


Joined: 02 Jun 2002
Posts: 1978
Location: Rennes, France

PostPosted: Thu Feb 16, 2006 3:46 pm    Post subject: Reply with quote

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
View user's profile Send private message
chipsterjulien
Guru
Guru


Joined: 08 Jun 2004
Posts: 350
Location: Lille France

PostPosted: Sat Feb 18, 2006 11:47 am    Post subject: Reply with quote

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
View user's profile Send private message
TGL
Bodhisattva
Bodhisattva


Joined: 02 Jun 2002
Posts: 1978
Location: Rennes, France

PostPosted: Sat Feb 18, 2006 12:16 pm    Post subject: Reply with quote

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
View user's profile Send private message
chipsterjulien
Guru
Guru


Joined: 08 Jun 2004
Posts: 350
Location: Lille France

PostPosted: Sun Feb 19, 2006 12:28 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum