# cpufreqd [Gelöst]

## Philosoph

Ich habe auf meinem System cpufreqd aktiviert und habe nun folgendes Problem: Wenn ich  cpufreq-info ausfuehre, bekommen ich folgende Ausgabe:

```
$ cpufreq-info

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

Bitte melden Sie Fehler an linux@brodo.de.

analysiere CPU 0:

  Treiber: nforce2

  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0

  Hardwarebedingte Grenzen der Taktfrequenz: 872 MHz - 1.40 GHz

  mögliche Regler: conservative, ondemand, powersave, userspace, performance

  momentane Taktik: die Frequenz soll innerhalb 1.40 GHz und 1.40 GHz.

                    liegen. Der Regler "powersave" kann frei entscheiden,

                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.

  momentane Taktfrequenz ist 1.40 GHz
```

Dem Governor Powersave wird also gesagt er kann eine beliebige Taktrate zwischen 1,4 GHz und 1,4 GHz nutzen, was natuerlich Schwachsinn ist. Ich habe daraufhin den Wert in /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq entsprechend geaendert, so dass ich bequem die Taktrate nun von den angegebenen 872 MHz bis 1,4GHz ändern konnte. So weit so gut.

Als ich dann als Governor ondemand mit einem Ausgangstakt von 900MHz eingestellt habe, ging die Leistung als sie angefordert wurde auch auch tatsaechlich hoch bis auf 1,4 Ghz, wo sie allerdings stehen blieb und sich auch nicht wieder runterregeln ließ. Daraufhin habe ich nochmal in scaling_min_freq reingeschaut und stellte fest, dass dort wieder der max. Wert stand. Wo muss ich also an den entsprechenden Schrauben drehen, damit cpufreq korrekt funktioniert?Last edited by Philosoph on Tue Jul 31, 2007 10:43 pm; edited 1 time in total

----------

## aleph-muc

Wie sieht denn Deine Kernelkonfiguration aus?

Gruß

aleph

----------

## Philosoph

Die Kernel-Konfiguration sollte meine Erachtens soweit ok sein... CPU_FREQ ist aktiviert und SMP deaktiviert:

```
$ grep -i cpu /usr/src/linux/.config

CONFIG_X86_CPUID=y

CONFIG_SPLIT_PTLOCK_CPUS=4

# CONFIG_APM_CPU_IDLE is not set

# CPU Frequency scaling

CONFIG_CPU_FREQ=y

CONFIG_CPU_FREQ_TABLE=y

# CONFIG_CPU_FREQ_DEBUG is not set

CONFIG_CPU_FREQ_STAT=m

# CONFIG_CPU_FREQ_STAT_DETAILS is not set

# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set

CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y

CONFIG_CPU_FREQ_GOV_PERFORMANCE=y

CONFIG_CPU_FREQ_GOV_POWERSAVE=y

CONFIG_CPU_FREQ_GOV_USERSPACE=y

CONFIG_CPU_FREQ_GOV_ONDEMAND=y

CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

# CPUFreq processor drivers

CONFIG_X86_ACPI_CPUFREQ=m

CONFIG_X86_CPUFREQ_NFORCE2=m

# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set

```

```
$ grep -i cpu /usr/src/linux/.config

CONFIG_X86_CPUID=y

CONFIG_SPLIT_PTLOCK_CPUS=4

# CONFIG_APM_CPU_IDLE is not set

# CPU Frequency scaling

CONFIG_CPU_FREQ=y

CONFIG_CPU_FREQ_TABLE=y

# CONFIG_CPU_FREQ_DEBUG is not set

CONFIG_CPU_FREQ_STAT=m

# CONFIG_CPU_FREQ_STAT_DETAILS is not set

# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set

CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y

CONFIG_CPU_FREQ_GOV_PERFORMANCE=y

CONFIG_CPU_FREQ_GOV_POWERSAVE=y

CONFIG_CPU_FREQ_GOV_USERSPACE=y

CONFIG_CPU_FREQ_GOV_ONDEMAND=y

CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

# CPUFreq processor drivers

CONFIG_X86_ACPI_CPUFREQ=m

CONFIG_X86_CPUFREQ_NFORCE2=m

# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set

```

----------

## UTgamer

Ohne Angabe deiner CPU hilft es wenig, du sagst ohne SMP, also wird es keine DUAL oder QuadCore sein.  :Wink: 

32 oder 64 Bit ist evtl. vorteilhaft zu wissen.

Jetzt frage ich mich auch ob du unstable verwendest und damit Kernel 2.6.22, der könnte nämlich für diesen Zweck Müll sein, da cpufreqd wahrscheinlich auch nicht auf das neue System abgeglichen ist.

2.6.22 ist auf keinen Fall als stable zu bezeichen.

Die Frage oben von aleph-muc kam nicht umsonst, du brauchst auch nur den relevanten Teil posten bis zu diesem Punkt:

```
#

# Bus options (PCI etc.)

#
```

Dann kann man auch Aussagen treffen ohne zu erraten welches System du verwendest.  :Wink: 

----------

## Philosoph

Sorry, hier die weiteren Infos:

CPU: Athlon XP 1600+

2.6.20-gentoo-r8

Chipsatz nForce2

Die Kernelconfig:

```

#  Processor type and features 

#

  │ │    [ ] Symmetric multi-processing support                           

  │ │        Subarchitecture Type (PC-compatible)  --->                    

  │ │    [ ] Paravirtualization support (EXPERIMENTAL)                     

  │ │        Processor family (Athlon/Duron/K7)  --->                       

  │ │    [ ] Generic x86 support

  │ │    [ ] HPET Timer Support

  │ │        Preemption Model (Voluntary Kernel Preemption (Desktop))  --->

  │ │    [*] Local APIC support on uniprocessors                          

  │ │    [ ]   IO-APIC support on uniprocessors                             

  │ │    [*] Machine Check Exception                                        

  │ │    <M>   Check for non-fatal errors on AMD Athlon/Duron / Intel Pent

  │ │    [ ]   check for P4 thermal throttling interrupt.                 

  │ │    [*] Enable VM86 support  

  │ │    <M> Toshiba Laptop support  

  │ │    <M> Dell laptop support      

  │ │    [*] Enable X86 board specific fixups for reboot                  

  │ │    <M> /dev/cpu/microcode - Intel IA32 CPU microcode support  

  │ │    <M> /dev/cpu/*/msr - Model-specific register support             

  │ │    <*> /dev/cpu/*/cpuid - CPU information support                    

  │ │        Firmware Drivers  --->                                       

  │ │        High Memory Support (4GB)  --->                         

  │ │        Memory split (3G/1G user/kernel split)  --->          

  │ │        Memory model (Flat Memory)  --->                     

  │ │    [ ] 64 bit Memory and IO resources (EXPERIMENTAL)

  │ │    [ ] Allocate 3rd-level pagetables from highmem        

  │ │    [ ] Math emulation 

  │ │    [*] MTRR (Memory Type Range Register) support                    

  │ │    [*] Boot from EFI support                                       

  │ │    [*] Enable seccomp to safely compute untrusted bytecode          

  │ │        Timer frequency (100 HZ)  --->                               

  │ │    [ ] kexec system call                                            

  │ │    [ ] kernel crash dumps (EXPERIMENTAL)                            

  │ │    (0x100000) Physical address where the kernel is loaded           

  │ │    [ ] Build a relocatable kernel(EXPERIMENTAL)                     

  │ │    (0x100000) Alignment value to which kernel should be aligned    

  │ │    [*] Compat VDSO support    

```

```

# Power management options (ACPI, APM)

#

  │ │    [*] Power Management support                              

  │ │    [*]   Legacy Power Management API (DEPRECATED)

  │ │    [ ]   Power Management Debug Support                  

  │ │    [ ]   Driver model /sys/devices/.../power/state files (DEPRECATED

  │ │    [ ]   Software Suspend                                           

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

  │ │        APM (Advanced Power Management) BIOS Support  --->             

  │ │        CPU Frequency scaling  --->    

```

```

#  CPU Frequency scaling

#

  │ │    [*] CPU Frequency scaling                                        

  │ │    [ ]   Enable CPUfreq debugging                               

  │ │    <M>   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!                

  │ │    <M>   AMD Opteron/Athlon64 PowerNow!                   

  │ │    < >   Cyrix MediaGX/NatSemi Geode Suspend Modulation  

  │ │    <M>   Intel Enhanced SpeedStep                                 

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

  │ │    [ ]     Built-in tables for Banias CPUs                        

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

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

  │ │    < >   Intel Pentium 4 clock modulation                        

  │ │    <M>   nVidia nForce2 FSB changing                            

  │ │    < >   Transmeta LongRun                                       

  │ │    < >   VIA Cyrix III Longhaul                                

  │ │    ---   shared options                                          

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

  │ │    [ ]   Relaxed speedstep capability checks    

```

```

# Bus options (PCI, PCMCIA, EISA, MCA, ISA)

#

  │ │    [*] PCI support                 

  │ │          PCI access mode (Any)  --->                          

  │ │    [*]   PCI Express support                                     

  │ │    [*]     Root Port Advanced Error Reporting support 

  │ │    [ ]   PCI Debugging                                            

  │ │    [*] ISA support                                                  

  │ │    [*]   EISA support                                              

  │ │    [*]     Vesa Local Bus priming                             

  │ │    [*]     Generic PCI/EISA bridge                           

  │ │    [*]     EISA virtual root device                            

  │ │    [ ]     EISA device name database                      

  │ │    [ ] MCA support                                                

  │ │    < > NatSemi SCx200 support                                 

  │ │        PCCARD (PCMCIA/CardBus) support  --->          

  │ │        PCI Hotplug Support  --->                                                          

```

----------

## UTgamer

Hatte ich gestern vergessen, ich kenne 2 gute Anleitungen:

http://www.gentoo.org/doc/de/power-management-guide.xml#doc_chap3

http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling

in denen du zum Thema gut schmökern kannst.

 *Philosoph wrote:*   

> ...
> 
> Dem Governor Powersave wird also gesagt er kann eine beliebige Taktrate zwischen 1,4 GHz und 1,4 GHz nutzen, was natuerlich Schwachsinn ist. Ich habe daraufhin den Wert in /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq entsprechend geaendert, so dass ich bequem die Taktrate nun von den angegebenen 872 MHz bis 1,4GHz ändern konnte. So weit so gut.
> 
> Als ich dann als Governor ondemand mit einem Ausgangstakt von 900MHz eingestellt habe, ging die Leistung als sie angefordert wurde auch auch tatsaechlich hoch bis auf 1,4 Ghz, wo sie allerdings stehen blieb und sich auch nicht wieder runterregeln ließ. Daraufhin habe ich nochmal in scaling_min_freq reingeschaut und stellte fest, dass dort wieder der max. Wert stand. Wo muss ich also an den entsprechenden Schrauben drehen, damit cpufreq korrekt funktioniert?

 

Deuted darauf hin das du in der /etc/cpufreqd.conf unter [Profile] die minfreq= nicht gesetzt hast.

Auf 0% mußt du sie auf einem Desktop auch garnicht setzen, das erlauben nur Laptops.

Apropo Laptop, du hast in deiner Kernelkonfig Laptops mit definiert, ich denke aber nicht das du einen Laptop nutzt.

Dann sind hier direkt noch ein paar Verbesserungen für dich in der Kernelkonfig.

[*] Generic x86 support

[ ] Toshiba Laptop support 

[ ] Dell laptop support

[ ]  /dev/cpu/microcode - Intel IA32 CPU microcode support 

     Timer frequency (250 HZ)  --->

<M>   CPU frequency translation statistics

Hast du das Modul in deiner /etc/modules.autoload.d/kernel-2.6 Datei eingetragen damit es automatisch geladen wird? 

Ansonsten mach daraus doch:

[*]   CPU frequency translation statistics

Das gleiche gilt für:

[*]    ACPI Processor P-States driver

und diesen Eintrag weiter unten:

[*]   nVidia nForce2 FSB changing

Diese HW hast du garnicht, einfach rausschmeißen und Platz sparen.  :Smile: 

[ ]   AMD Opteron/Athlon64 PowerNow!

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

[ ]   PCI Express support                                     

[ ]     Root Port Advanced Error Reporting support 

[ ]   EISA support                                             

[ ]     Vesa Local Bus priming

Bis auf das 3 ACPI-Module evtl. überhaupt nicht geladen worden sind, sieht deine Kernelkonfig soweit ok aus.

Dein Fehler liegt in der /etc/cpufreqd.conf.

Hast du dir diesen Thread einmal angesehen?

Da findest du sicher deine Werte auch ohne engl. zu können.  :Wink: 

Howto: Dynamic CPU speed with Athlon XP and nForce2 boards

Gruß

----------

## Philosoph

Sooo, der aktuelle Zwischenstand, nachdem ich auch schon mit dem neuen Kernel 2.6.21-r4 experimentiert habe (allerdings ohne Erfolg):

1) Der Prozessor taktet sich selbststaendig rauf und runter im Bereich 1.14GHz bis 1.4GHz

2) "On Demand" und "Conservative" kann ich nicht auswählen, obwohl meine Hardware dazu eigentlich faehig sein muesste

3) Die /etc/cpufreq.conf habe ichhin und her editiert, allerdings ohne das gewuenschte Ergebnis

Zu 1) Seltsamerweise habe ich den Eindruck, der Prozessor taktet sich azyklisch, d.h. unter Last geht er runter und wenn er nix zu tun hat bleibt er bei bei "Performance"

Zu 3) Ich poste mal meine cpufreqd.conf wie sie im Original vom System erstellt wurde:

```

# this is a comment

# see CPUFREQD.CONF(5) manpage for a complete reference

[General]

pidfile=/var/run/cpufreqd.pid

poll_interval=2

verbosity=4

#enable_remote=1

#remote_group=root

[/General]

#[acpi]

#acpid_socket=/var/run/acpid.socket

#[/acpi]

#[nforce2_atxp1]

#vcore_path=/some/path

#vcore_default=1500

#[/nforce2_atxp1]

#[sensors_plugin]

#sensors_conf=/some/file

#[/sensors_plugin]

[Profile]

name=On Demand High

minfreq=40%

maxfreq=100%

policy=ondemand

[/Profile]

[Profile]

name=On Demand Low

minfreq=20%

maxfreq=80%

policy=ondemand

[/Profile]

[Profile]

name=Performance High

minfreq=100%

maxfreq=100%

policy=performance

#exec_post=echo 8 > /proc/acpi/sony/brightness

[/Profile]

[Profile]

name=Performance Low

minfreq=80%

maxfreq=80%

policy=performance

[/Profile]

[Profile]

name=Powersave High

minfreq=1.1GHZ

maxfreq=1.1GHz

policy=powersave

[/Profile]

[Profile]

name=Powersave Low

minfreq=30%

maxfreq=30%

policy=powersave

[/Profile]

[Profile]

name=Conservative High

minfreq=33%

maxfreq=100%

policy=conservative

[/Profile]

[Profile]

name=Conservative Low

minfreq=0%

maxfreq=66%

policy=conservative

[/Profile]

##

# Basic states

##

# when AC use performance mode

[Rule]

name=AC Rule

ac=on                    # (on/off)

profile=Powersave Low

[/Rule]

 

# conservative mode when not AC

[Rule]

name=AC Off - Low Battery

ac=off                   # (on/off)

battery_interval=0-30

#exec_post=echo 5 > /proc/acpi/sony/brightness

profile=Powersave Low

[/Rule]

# conservative mode when not AC

[Rule]

name=AC Off - Medium Battery

ac=off                   # (on/off)

battery_interval=30-70

#exec_post=echo 5 > /proc/acpi/sony/brightness

profile=On Demand Low

[/Rule]

# stay in performance mode for the first minutes

[Rule]

name=AC Off - High Power

ac=off                   # (on/off)

battery_interval=70-100

#exec_post=echo 5 > /proc/acpi/sony/brightness

profile=On Demand High

[/Rule]

##

# Special Rules

##

# CPU Too hot!

[Rule]

name=CPU Too Hot

acpi_temperature=55-100

cpu_interval=50-100

profile=Performance Low

[/Rule]

# use performance mode if I'm watching a movie

# I don't care for batteries! 

# But don't heat too much.

[Rule]

name=Movie Watcher

programs=xine,mplayer,gmplayer

battery_interval=0-100

acpi_temperature=0-60

cpu_interval=0-100

profile=Performance High

[/Rule]

```

----------

## UTgamer

In Punkt 3, hast du auf einen Sony Laptop verwiesen? Hättest du eher sagen können das es sich um einen Laptop handelt.

 *Philosoph wrote:*   

> ...
> 
> Zu 1) Seltsamerweise habe ich den Eindruck, der Prozessor taktet sich azyklisch, d.h. unter Last geht er runter und wenn er nix zu tun hat bleibt er bei bei "Performance"

 

Es gibt ganz sicher im BIOS einige Einstellungen die für deine Konfig essentiel sind (erst recht auf Laptops).

Zudem haben einige BIOS Taktrateneinstellungen die z.B. ein agressives CPU-Übertakten anbieten. In meinem Desktop BIOS kann ich ebenfalls die Parameter "performance", "on demand" und "powersave" definieren, sowie sogar ein performance Übertakten auf request. Nicht das dein BIOS den cpufreqd.conf Einstellungen entgegen läuft.  :Wink: 

Denn dann wirst du das nie richtig zu arbeiten bekommen. 

Bei den Laptops gibt es weit mehr Möglichkeiten etwas einzustellen als auf den Desktops, und mit deinem Modell kenne ich mich sicher nicht aus (habe noch nie einen Sony in Händen gehabt).

----------

## Philosoph

Nein, ist kein Sony oder irgendein anderer Laptop, sondern ein ganz normaler Desktop PC. Keine Ahnung, warum in der cpufreqd.conf Sony auftaucht, aber die Einträge sind ja auch auskommentiert. Ich hatte dort auch schon die ganzen Punkte wie 'Low Battery' etc. auskommentiert und allgemein so einiges  ausprobiert, aber irgendwann wieder alles verworfen und die Sicherung der Original-conf wieder übernommen.

Ich habe im BIOS nachgeschaut, aber da sehen die entscheidenden Einträge alle ok aus:

```
CPU Host Frequency    [AUTO]

FSB Spread Spectrum   [AUTO]

...

VCore                 [AUTO]
```

----------

## UTgamer

 *Philosoph wrote:*   

> Zu 3) Ich poste mal meine cpufreqd.conf wie sie im Original vom System erstellt wurde:
> 
> ```
> 
> # this is a comment
> ...

 

Ich hätte da eine Vermutung, du hast in jedem Profilenamen ein Leerzeichen.

In meinem älteren script stehen solche Profilenamen:

name=hi_boost

name=medium_boost

name=lo_boost

name=lo_power

name=conservative

name=lo_cpu_boost

name=hi_cpu_boost

In der Gentoo-Doku stehen diese Namen:

name=ondemand

name=conservative

name=powersave

name=performance

name=ac

Es wäre eben möglich das deine Benamung mit Leerzeichen deinen Fehler auslöst.

----------

## Philosoph

 *Quote:*   

> Es wäre eben möglich das deine Benamung mit Leerzeichen deinen Fehler auslöst.

 

JAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!!!! Das war`s   :Laughing:  Zwar funktionieren die beiden Governors On Demand und Conservative noch nicht, aber immerhin kann ich jetzt schon mal zwischen Performance und Powersave umschalten, und den Rest krieg ich auch schon noch hin.

Vielen Dank für Deine Hilfe und Geduld!!!

----------

## UTgamer

Freut mich für dich das ich richtig gelegen habe. Ich nutze zwar selbst cpufreqd nicht mehr, aber meine alten Daten von früher die mal funktioniert haben habe ich noch alle. Dann habe ich einfach alles verglichen und es blieb eben nur ein Schluß zu.

Setz du den Thread dann bitte auf [gelöst] oder [solved]?

----------

