# [Risolto] Ma powernowd, funziona correttamente?

## fbcyborg

Ciao a tutti, 

da un bel po' di tempo utilizzo powernowd sul mio portatile. All'inizio sembrava funzionare alla grande ma da un po' secondo me presenta qualche problema.

Ho un Intel(R) Core(TM)2 CPU  T7200  @ 2.00GHz e queste sono le frequenze a cui può lavorare: 2000000 1667000 1333000 1000000.

Tramite un plugin di superkaramba vedevo cambiare la frequenza della cpu di tanto in tanto, secondo i valori appena citati, ma da qualche tempo vedo che si piazza a 1000 e non schioda di li.

La modalità che ho impostato è la 1=AGGRESSIVE. Ho notato che stoppando powernowd la frequenza schizza subito a 2000, quindi vedo che alla fine powernowd, tiene la cpu sotto controllo, ma non come dovrebbe (almeno secondo il mio modesto parere), visto che non scala nelle due frequenze di mezzo.

Ciò che mi incuriosisce è il fatto che mentre io sto compilando il mondo... (emerge -uDN world) la frequenza rimanga a 1000, invece di arrivare a 2000 e sfruttare tutta la potenza della cpu. Questo mi fa anche abbastanza piacere visto che così la temperatura della cpu non si alza tanto e la ventola gira più piano, ma ciò è normale?

Come posso fare per ottenere di nuovo un frequency scaling?

----------

## MeMyselfAndI

Hai provato a vedere se con il solo governor ondemand o conservative la situazione e' la medesima ?

----------

## fbcyborg

Dunque, queste sono le impostazioni sul mio kernel:

```
CPU Frequency scaling  --->

          [*] CPU Frequency scaling                 

           [ ]   Enable CPUfreq debugging            

          <*>   CPU frequency translation statistics     

          [ ]     CPU frequency translation statistics details 

          Default CPUFreq governor (userspace)  --->       

           <*>   'performance' governor   

           <*>   'powersave' governor         

           ---   'userspace' governor for userspace frequency scaling  

           <*>   'ondemand' cpufreq policy governor   

           <*>   'conservative' cpufreq governor       

            ---   CPUFreq processor drivers       

           <*>   ACPI Processor P-States driver 

              <*>   Intel Enhanced SpeedStep        

            [*]     Use ACPI tables to decode valid frequency/voltage pairs 

            [ ]     Built-in tables for Banias CPUs             

           <*>   Intel Speedstep on ICH-M chipsets (ioport interface) 

           <M>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
```

Ora non so esattamente come verificare quale governor io stia usando, causa inesperienza.

Quello che posso dirti è che ho sempre lasciato attivo powernowd, e quello che so è che posso impostare il governor tramite cpufreq-set (avevo già emerso cpufreq-utils.

Riporto un cpufreq-info:

```
# cpufreq-info | grep governor

  available cpufreq governors: conservative, ondemand, powersave, userspace, performance

                  The governor "userspace" may decide which speed to use

  available cpufreq governors: conservative, ondemand, powersave, userspace, performance

                  The governor "userspace" may decide which speed to use

```

----------

## MeMyselfAndI

e usando semplicemente il governor senza powernod cambia qualcosa ?

----------

## fbcyborg

Come dicevo, non so come determinare che governor io stia utilizzando al momento, se lo stia effettivamente utilizzando, e che disabilitando powernowd la frequenza mi va a 2000. Se riattivo powernowd mi ritorna a mille passando per 1667.

----------

## noice

 *fbcyborg wrote:*   

> Come dicevo, non so come determinare che governor io stia utilizzando al momento, se lo stia effettivamente utilizzando, e che disabilitando powernowd la frequenza mi va a 2000. Se riattivo powernowd mi ritorna a mille passando per 1667.

 

```
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
```

per vedere che governor stai usando

----------

## fbcyborg

Ok, grazie infinite, sto usando "userspace". Ergo?

EDIT: ho appena settato "performance". Suppongo che sia definitivo come settaggio....   :Question: 

----------

## MeMyselfAndI

allora per sapere il governo che stai usando usi cpufreq-info...

prova a settare il governor su ondemand e vedere se scala correttamente la frequenza (performance manda il processore al massimo SEMPRE)

----------

## fbcyborg

Sì con ondemand si comporta come vorrei io.. 

Come lo rendo il governor di default?

----------

## Cazzantonio

Installi il pacchetto cpufrequtils e in /etc/conf.d/cpufrequtils scrivi:

```
GOVERNOR="ondemand"
```

 e lo aggiungi al runlevel che vuoi (io l'ho aggiunto a boot direttamente).

Non ho mai configurato ne' usato powernowd ma uso correntemente cpufreqd per cambiare dinamicamente tipo di governor in base alle mie esigenze...

Per esempio ho creato questo file di configurazione per cpufreqd (/etc/cpufreqd.conf) per tenere la cpu al minimo in caso di surriscaldamento del processore (capita se compili... di solito significa che la cpu va al minimo per qualche secondo, la ventola raffredda la cpu e la frequenza si rialza).

Te lo posto magari ti fosse utile:

```
[General]

pidfile=/var/run/cpufreqd.pid

poll_interval=3

#enable_plugins= programs,acpi_ac,cpu,acpi_battery,acpi_temperature,nforce2,sensors,nvclock,apm,pmu

enable_plugins=acpi_ac,acpi_battery,acpi_temperature

enable_remote=1

remote_group=wheel

verbosity=5

[/General]

[Profile]

name=ondemand

minfreq=0%

maxfreq=100%

policy=ondemand

[/Profile]

[Profile]

name=ondemand_lo

minfreq=0%

maxfreq=20%

policy=ondemand

[/Profile]

[Profile]

name=conservative

minfreq=0%

maxfreq=100%

policy=conservative

[/Profile]

[Profile]

name=powersave

minfreq=0%

maxfreq=100%

policy=powersave

[/Profile]

[Profile]

name=powersave_lo

minfreq=0%

maxfreq=20%

policy=powersave

[/Profile]

[Profile]

name=performance

minfreq=0%

maxfreq=100%

policy=performance

[/Profile]

##

# Basic states

##

[Rule]

name=ac

ac=on

cpu_interval=0-100

acpi_temperature=THZN:0-84

acpi_temperature=THZV:0-84

battery_interval=11-100

profile=ondemand

[/Rule]

[Rule]

name=battery

ac=off

acpi_temperature=THZN:0-84

acpi_temperature=THZV:0-84

cpu_interval=0-100

battery_interval=11-100

profile=conservative

[/Rule]

[Rule]

name=battery_low

ac=off

acpi_temperature=THZN:0-84

acpi_temperature=THZV:0-84

cpu_interval=0-100

battery_interval=0-10

profile=powersave

[/Rule]

[Rule]

name=overheat_cpu

acpi_temperature=THZN:85-100

acpi_temperature=THZV:0-84

cpu_interval=0-100

battery_interval=11-100

profile=ondemand_lo

[/Rule]

[Rule]

name=overheat_mb

acpi_temperature=THZN:0-84

acpi_temperature=THZV:85-100

cpu_interval=0-100

battery_interval=11-100

profile=ondemand_lo

[/Rule]

[Rule]

name=overheat_all

acpi_temperature=THZN:85-100

acpi_temperature=THZV:85-100

cpu_interval=0-100

battery_interval=11-100

profile=powersave_lo

[/Rule]

#[Rule]

#name=Movie Watcher

#programs=xine,mplayer,gmplayer

#acpi_temperature=THZN:0-90

#acpi_temperature=THZV:0-90

#cpu_interval=0-100

#battery_interval=11-100

#acpi_temperature=0-60

#profile=Performance High

#[/Rule]
```

----------

## bandreabis

io usavo /etc/conf.d/local.start

 *Quote:*   

> cat /etc/conf.d/local.start
> 
> # /etc/conf.d/local.start
> 
> # This is a good place to load any misc programs
> ...

 

per settare il tutto, ma ora mi sono accorto che non funziona più...

cpufrequtils in runlevel serve in ogni caso?

----------

## MeMyselfAndI

Cosa vuol dire "in ogni caso" ?

----------

## fbcyborg

 *Cazzantonio wrote:*   

> Installi il pacchetto cpufrequtils e in /etc/conf.d/cpufrequtils scrivi:
> 
> ```
> GOVERNOR="ondemand"
> ```
> ...

 

OK, penso che sia ciò che stavo cercando...

ondemand era già impostato.

Ho messo cpufrequtils al runlevel di default e battery. Di solito non veniva mai avviato. Forse era questo il problema.

Ma mi resta un grosso dilemma: a che serve allora powernowd?

----------

## bandreabis

 *MeMyselfAndI wrote:*   

> Cosa vuol dire "in ogni caso" ?

 

Mi è parso di capire che cpufrequtils è un demone "in più" per controllare la frequenza del processore....

----------

## fbcyborg

 *fbcyborg wrote:*   

> Resta un grosso dilemma per me: a che serve allora powernowd?

 

Qualcuno mi illumina???

----------

## Cazzantonio

 *bandreabis wrote:*   

> Mi è parso di capire che cpufrequtils è un demone "in più" per controllare la frequenza del processore....

 

No, cpufrequtils non è un demone.

E' solo un banale script di init che si limita ad impostare il governor di default.

E' per questo che uso cpufreqd per cambiarlo a seconda delle esigenze.

Non so che faccia di preciso powernowd ma penso funzioni tipo cpufreqd.

----------

## fbcyborg

A quanto ho capito io (probabilmente potrei non aver interpretato bene), powernowd è qualcosa che sceglie, secondo le sue politiche impostate da utente, che governor utilizzare.

Ora, a seconda di quanto visto, questo lavoro non lo fa bene. Powernowd ha una sua politica di gestire i governor (ma secondo me non va ad agire proprio su di essi) ovvero secondo queste modalità di lavoro:

```
Modes of operation, can be 0, 1, 2, or 3:

0 = SINE, 1 = AGGRESSIVE (default), 2 = PASSIVE, 3 = LEAPS

0: SINE : increments the frequency by one step each time the CPU becomes busier than the 80%, and decrements of the same value when the CPU load become 20%

1: AGGRESSIVE : increases to the maximum frequency when the CPU load surpasses 80%, and decreases by one step when the load becomes less than 20%

2: PASSIVE : the opposite of Aggressive. Jump to the minimum when the load becomes less than 20% and increases by one step when it surpasses 80%

3: LEAPS : go to the maximum beyond 80%, and to the minimum under 20%
```

In teoria settando una di queste opzioni dovrei poter impostare il governor che più mi soddisfa, ma non funziona benissimo secondo me....

----------

## MeMyselfAndI

a prima vista direi invece che powernowd usa solamente ondemand : quello che varia sono i valori soglia al cui cambiare frequenza (lo puoi fare a mano anche tu andando a modificare i valori in /sys/devices/system/cpu/cpu0/cpufreq/ondemand )

----------

## fbcyborg

 *MeMyselfAndI wrote:*   

> a prima vista direi invece che powernowd usa solamente ondemand : quello che varia sono i valori soglia al cui cambiare frequenza (lo puoi fare a mano anche tu andando a modificare i valori in /sys/devices/system/cpu/cpu0/cpufreq/ondemand )

 

Mmh...   :Confused: 

C'è qualcosa di strano... io mi trovo sempre il governor su userspace. Come mai succede questo anche se ho aggiunto cpufrequtils al runlevel di default, impostando come governor ondemand??? Ora non so se mi si è impallato qualcosa ma questo powernowd comincia a farmi venire la voglia di disinstallarlo.

----------

## Kernel78

o uno o l'altro, non ha molto senso tenere due programmi che fanno (o cercano di fare) la stessa cosa  :Wink: 

----------

## fbcyborg

 *Kernel78 wrote:*   

> o uno o l'altro, non ha molto senso tenere due programmi che fanno (o cercano di fare) la stessa cosa 

 

Perfetto!

```
emerge -C powernowd
```

  :Exclamation:   :Exclamation:   :Exclamation: 

viaaaa dalla mia gentoo!!!    :Twisted Evil: 

----------

## Kernel78

 *fbcyborg wrote:*   

>  *Kernel78 wrote:*   o uno o l'altro, non ha molto senso tenere due programmi che fanno (o cercano di fare) la stessa cosa  
> 
> Perfetto!
> 
> ```
> ...

 

io per amore di pulizia darei anche 

```
emerge -a --depclean --with-bdeps n
```

----------

## fbcyborg

 *Kernel78 wrote:*   

> io per amore di pulizia darei anche 
> 
> ```
> emerge -a --depclean --with-bdeps n
> ```
> ...

 

Giusto per essere sicuro di aver capito bene cosa dovrei fare...

E' la prima volta che vedo questa opzione --with-bdeps e per curiosità mi sono andato a leggere il man.

Quello che leggo è che serve a far entrare le dipendenze "del tempo di compilazione" (inteso come data/ora in cui è stato effettuato il build completo) non strettamente necessarie. Mettiamo 'n' visto che nel depclean il default è 'y'. 

Onestamente non capisco molto bene cosa significhi e a cosa si riferisca... Sicuro non ho tradotto bene... 

Puoi chiarirmi il concetto per favore?

----------

## Tigerwalk

Salve,

ho un  i686 Genuine Intel(R) CPU T2300 @ 1.66GHz GenuineIntel ed un kernel 2.6.22-gentoo-r5.

Ho attivato tutti i moduli richiesti dalla doc su "Guida alla Gestione Energetica", ho la stessa config. di fbcyborg riguardo alla CPU Frequency scaling, ma quando do

```
cpufreq-info

cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006

Per favore, comunicare errori e malfunzionamenti a linux@brodo.de.

analisi della CPU 0:

  nessun modulo o modulo cpufreq sconosciuto per questa CPU

analisi della CPU 1:
```

oppure

```
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

cat: /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor: No such file or directory
```

avendo già aggiunto cpufrequtils al runlevel battery e default.

Ho notato anche che all'avvio di Gentoo, mi compare questo messaggio nella sequenza di boot:

```
* Enabling ondemand cpufreq governor on CPU0...

[!!]ata, sconosciuta o non gestita?

* Enabling ondemand cpufreq governor on CPU1...

[!!]ata, sconosciuta o non gestita?
```

Credo di aver toppato qualcosa nella compilazione del kernel, ma cosa.....?

Potete aiutarmi a capire e correggere l'errore?

----------

## fbcyborg

Domanda: è possibile che la tua CPU non supporti il frequency scaling???

----------

## Tigerwalk

 *fbcyborg wrote:*   

> Domanda: è possibile che la tua CPU non supporti il frequency scaling???

 

Grazie per la risposta, sai come faccio a verificare se la Frequency scaling è supportata dalla mia CPU?

(anche se penso che essendo una CPU abbastanza recente dovrebbe)

----------

## fbcyborg

 *Tigerwalk wrote:*   

>  *fbcyborg wrote:*   Domanda: è possibile che la tua CPU non supporti il frequency scaling??? 
> 
> Grazie per la risposta, sai come faccio a verificare se la Frequency scaling è supportata dalla mia CPU?
> 
> (anche se penso che essendo una CPU abbastanza recente dovrebbe)

 

Figurati... stavo proprio cercando di capire come determinare se una cpu supporta il frequency scaling o no, perché ora come ora non ne ho la più pallida idea.

Sempre lavorando per ipotesi, fino a intervento di qualcuno più esperto di me, non è che la tua cpu è montata su un pc desktop e forse, le cpu "non mobile" non hanno il frequency scaling?

Nel frattempo dai un'occhiata quì.

----------

## Tigerwalk

 *fbcyborg wrote:*   

> 
> 
> Figurati... stavo proprio cercando di capire come determinare se una cpu supporta il frequency scaling o no, perché ora come ora non ne ho la più pallida idea.
> 
> Sempre lavorando per ipotesi, fino a intervento di qualcuno più esperto di me, non è che la tua cpu è montata su un pc desktop e forse, le cpu "non mobile" non hanno il frequency scaling?
> ...

 

adesso guardo il link!

Comunque il computer è un portatile, Centrino Duo....

----------

## MeMyselfAndI

Dovresti postare la parte relativa allo scaling delle frequenze del tuo kernel : sicuro di non aver compilato qualcosa come modulo e di non averlo caricato all'avvio ?

----------

## Tigerwalk

 *MeMyselfAndI wrote:*   

> Dovresti postare la parte relativa allo scaling delle frequenze del tuo kernel : sicuro di non aver compilato qualcosa come modulo e di non averlo caricato all'avvio ?

 

CPU Frequency scaling--->

```
   [*] CPU Frequency scaling                                                                          │ │

  │ │                            [ ]   Enable CPUfreq debugging                                                                     │ │

  │ │                            <*>   CPU frequency translation statistics                                                         │ │

  │ │                            [ ]     CPU frequency translation statistics details                                               │ │

  │ │                                  Default CPUFreq governor (userspace)  --->                                                   │ │

  │ │                            <*>   'performance' governor                                                                       │ │

  │ │                            <*>   'powersave' governor                                                                         │ │

  │ │                            ---   'userspace' governor for userspace frequency scaling                                         │ │

  │ │                            <*>   'ondemand' cpufreq policy governor                                                           │ │

  │ │                            <*>   'conservative' cpufreq governor                                                              │ │

  │ │                            ---   CPUFreq processor drivers                                                                    │ │

  │ │                            <M>   ACPI Processor P-States driver                                                               │ │

  │ │                            < >   AMD Mobile K6-2/K6-3 PowerNow!                                                               │ │

  │ │                            < >   AMD Mobile Athlon/Duron PowerNow!                                                            │ │

  │ │                            < >   AMD Opteron/Athlon64 PowerNow!                                                               │ │

  │ │                            < >   Cyrix MediaGX/NatSemi Geode Suspend Modulation                                               │ │

  │ │                            <M>   Intel Enhanced SpeedStep                                                                     │ │

  │ │                            [*]     Use ACPI tables to decode valid frequency/voltage (deprecated)                             │ │

  │ │                            [ ]     Built-in tables for Banias CPUs                                                            │ │

  │ │                            <*>   Intel Speedstep on ICH-M chipsets (ioport interface)                                         │ │

  │ │                            <M>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)                                      │ │

  │ │                            < >   Intel Pentium 4 clock modulation

                                   < >   nVidia nForce2 FSB changing                                                                  │ │

  │ │                            <M>   Transmeta LongRun                                                                            │ │

  │ │                            < >   VIA Cyrix III Longhaul                                                                       │ │

  │ │                            < >   VIA C7 Enhanced PowerSaver (EXPERIMENTAL)                                                    │ │

  │ │                            ---   shared options                                                                               │ │

  │ │                            [ ]   /proc/acpi/processor/../performance interface (deprecated)                                   │ │

  │ │                            [ ]   Relaxed speedstep capability checks  
```

```
ACPI (Advanced Configuration and Power Interface) Support  --->

   [*] ACPI Support                                                                                   │ │

  │ │                            [*]   Sleep States                                                                                 │ │

  │ │                            [ ]     /proc/acpi/sleep (deprecated)                                                              │ │

  │ │                            [ ]   Procfs interface (deprecated)                                                                │ │

  │ │                            <*>   AC Adapter                                                                                   │ │

  │ │                            <*>   Battery                                                                                      │ │

  │ │                            <M>   Button                                                                                       │ │

  │ │                            <M>   Video                                                                                        │ │

  │ │                            <M>   Fan                                                                                          │ │

  │ │                            <M>   Dock                                                                                         │ │

  │ │                            < >     Removable Drive Bay (EXPERIMENTAL)                                                         │ │

  │ │                            <M>   Processor                                                                                    │ │

  │ │                            <M>     Thermal Zone                                                                               │ │

  │ │                            < >   ASUS/Medion Laptop Extras                                                                    │ │

  │ │                            <*>   Toshiba Laptop Extras                                                                        │ │

  │ │                            (0)   Disable ACPI for systems before Jan 1st this year                                            │ │

  │ │                            [ ]   Debug Statements                                                                             │ │

  │ │                            [*]   Power Management Timer Support                                                               │ │

  │ │                            <M>   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)                                 │ │

  │ │                            < >   Smart Battery System (EXPERIMENTAL) 
```

----------

## micio

 *fbcyborg wrote:*   

> 
> 
> Figurati... stavo proprio cercando di capire come determinare se una cpu supporta il frequency scaling o no, perché ora come ora non ne ho la più pallida idea.
> 
> Sempre lavorando per ipotesi, fino a intervento di qualcuno più esperto di me, non è che la tua cpu è montata su un pc desktop e forse, le cpu "non mobile" non hanno il frequency scaling?
> ...

 

Ti assicuro che non deve per forza essere montata su un portatile.. io ho un desktop con procio AMD Opteron e va ke è una bellezza... devo solo migliorare qualcosina perché mi cambia solo dal minimo al massimo valore di frequenza... Anzi qualcuno sa dirmi se valori intermedi si possono aggiungere a mano (diciamo prendendoli da rmclock da winz) e come si fa o se è solo pura utopia?

Comunque tornando al tuo discorso, non tutte le cpu hanno questa funzionalità ma non saprei dirti quali sono i modelli che non la hanno... ma di certo non è una distinzione tra "mobile" e "non-mobile" come dici tu  :Smile: 

Micio!

----------

## fbcyborg

 *micio wrote:*   

>  *fbcyborg wrote:*   
> 
> Figurati... stavo proprio cercando di capire come determinare se una cpu supporta il frequency scaling o no, perché ora come ora non ne ho la più pallida idea.
> 
> Sempre lavorando per ipotesi, fino a intervento di qualcuno più esperto di me, non è che la tua cpu è montata su un pc desktop e forse, le cpu "non mobile" non hanno il frequency scaling?
> ...

 

Ok, grazie della correzione. Ora ho imparato una cosa nuova e che la distinzione non è fra mobile e non-mobile.

Comunque a quanto ne so io non penso sia possibile "inventarsi" le frequenze intermedie di clock. Mi pare che ogni processore che supporti lo scaling abbia delle sue definite frequenze per le quali deve passare nello scaling. Bisognerebbe vedere sul manuale di quella specifica cpu. Penso sia la cosa migliore, sperando che sia esauriente.

----------

## Tigerwalk

nessun suggerimento per me?

----------

## fbcyborg

Guarda, io ho seguito alla lettera questi passi per impostare il frequency scaling. Accertati che tutto sia più o meno uguale (certo non per il tipo di cpu).

----------

## Tigerwalk

 *fbcyborg wrote:*   

> Guarda, io ho seguito alla lettera questi passi per impostare il frequency scaling. Accertati che tutto sia più o meno uguale (certo non per il tipo di cpu).

 

grazie, ho seguito alla lettera ed ora funziona!

----------

## fbcyborg

 *Tigerwalk wrote:*   

>  *fbcyborg wrote:*   Guarda, io ho seguito alla lettera questi passi per impostare il frequency scaling. Accertati che tutto sia più o meno uguale (certo non per il tipo di cpu). 
> 
> grazie, ho seguito alla lettera ed ora funziona!

 

Miiticoo! Mi fa piacere!  :Wink: 

----------

