cpufreq, speedstep

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

cpufreq, speedstep

Beitrag von alexatdebian » 22.07.2004 09:26:20

Hallo,

hab nen asus s5200N und würde den cpuspeed gerne über cpudyn/cpufreq dynamisch anpassen.
ich hab im 2.6.6 er kernel unter cpu frequency scaling
das /proc/cpufreq interface angewählt (mal als modul, mal direkt in den kernel)
dann unter default cpufreq governor userspace.
der kernel läuft :D , wenn ich aber dpkg--refonfigure cpufreqd mache erhalte ich folgende fehlermeldung:
CpuFreq Schnittstelle im Kernel nicht gefunden

unter /proc gibts bei mir ein acpi verzeichnis mit infos über cpu temp. battery etc.

was überseh ich?

mit kdelaptop kann ich die cpu manuell drosseln (stufenweise) das scheint zu funktionieren, da das compilieren entsprechend langsamer wird :wink:

ich würd halt gern eine dynamische drossel (cpudyn) verwenden, damit ich mich nicht selbs immer drum kümmern muss.

nochwas: im der kernelconfig steht bei /proc/cpufreq interface "deprecated" - was ist stattdessen vorgesehen?

da seh ich grad, ich hab apm deaktiviert, ich will ja auch acpi verwenden oder?

wenn ich cpdynd ausprobiere erhalte ich zusätzlich: kernel does not support acpi cpu throttling - jetzt weiss ich gar nicht mehr weiter. die /proc/acpi geschichte ist doch da :oops:

weiss jemand rat?

danke
alex

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 22.07.2004 09:39:43

Statt dem /proc-Teil wird in Kernel 2.6.x /sys/devices/system/cpu/cpu0/cpufreq verwendet - guck mal dort nach ob da n paar Dateien sind.
Ob die Cpu wirklich langsamer ist siehst du in /proc/cpuinfo.

Zum dynamischen Regeln verwende ich powernowd - läuft perfekt (auch auf Intel Prozessoren).
Auf jeden Fall würde ich aber nicht mehrere Daemons aufs mal installieren (hab da was von cpufreqd _und_ cpudyn gelesen).

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

LittleBoy
Beiträge: 718
Registriert: 30.04.2002 14:32:26

Beitrag von LittleBoy » 22.07.2004 09:42:35

/proc ist /zumindest für Steuerungen) generell erstmal deprecated - die neuen EInträge liegen meist unter /sys.

Du brauchst drei Sachen, damit es läuft:
a) den cpufreq Treiber. Den gibts entweder für den Chipsatz (z.B: cpufreq_centrino.ko) oder für ACPI (acpi.ko). Je nach PC kann man nur einen von beiden oder einen beliebigen von beiden verwenden (baer nicht beide gleichzeitig).
b) den governour - in 99,9% der Fälle ist das der userspace_governour.ko
c) den Dämon. Hier gibts drei verschiedene, cpufreqd, powernowd und noch irgendeiner. powernowd (hat übrigens nichts mit AMD zu tun) ist der simpleste: Läuft das System mit Volllast, läuft auch der Prozessor mit Volllast, gibts nix zu tun, läuft der Prozessor langsam. powernowd benötigt aber Kernel 2.6. cpufreqd soll auch mit Kenrel 24. laufen, und ähnliches wie powernowd bieten. Allerdings kenne ich niemanden, der das Teil zum laufen gekriegt hat. Als letztes gibts noch einen sehr komplexen Dämon. Der soll mit 2.4 und 2.6 laufen. Man muss das Viech aber erstmal stundenlang konfigurieren, der berücksichtigt nämlich sog. "States", d.h. man kann dem Teil sagen: Wenn der Stecker drinne ist, dann immer Vollast. Oder: Wenn kein Stecker drinne ist, ich dafür aber mplayer nutze, dann auch Volllast...

Ich für meine Teile habe ein Centrino Notebook, nutze acpi.ko, govenour_userspace.ko und powernowd und bin zufrieden, da keine Konfiguration nötig war...

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 22.07.2004 10:47:28

also:
/sys/devices/system/cpu/cpu0/ existiert, ist aber leer.
/proc/cpuinfo zeigt die infos an.

ein lsmod zeigt, dass asus_acpi läuft. cpufreq läuft nicht (lsmod | grep -i cpu -> leer)

den governor ... hhm.. ich hab im kernel angegeben, daß ichz den userspace governor verwenden will. wie stell ich nun fest ob er da ist (lsmod is ja nich, es sollte ja kein modul sein - oder?)?
Man muss das Viech aber erstmal stundenlang konfigurieren, der berücksichtigt nämlich sog. "States"
ich kann bei klaptop einiges einstellen, evtl. läuft also ein dämon der die anderen stört...

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 22.07.2004 11:12:36

ein
>locate userspace | grep -i ko
liefert im übrigen nur cpufreq_userspace.ko

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 22.07.2004 12:29:05

Bei mir ist das cpu0 verzeichnis im sys auch nach laden der module leer, auch gibts keine logs beim laden.

Ausser das centrino speedstep modul: unsupported prozi. mail /proc/cpuinfo ...

Kann mir jemand erklaeren, wieso ich mit x86info ohne ein entspr. modul geladen zu haben sehe , dass die cpufrequenz auf 115 mhz runtergeht und ennoch /proc/cpuinfo 1498 anzeigt ?
Witzigerweise sind die temps viel niedriger wenn er im akku betrieb laeuft, auch wenn nach x86info die mhz genauso gedrosselt werden - aber wie gesagt ohne dass ich ein entspr. modul geladen habe.
Urspruenglich dachte ich eigendlich, dass in cpuinfo dinge stehen die einmal beim booten geschrieben werden.

LittleBoy
Beiträge: 718
Registriert: 30.04.2002 14:32:26

Beitrag von LittleBoy » 22.07.2004 13:32:01

Ich bezihe mich jetzt mal auf den Startard-Debian-2.6er Kernel:

Ein find /lib/modules | grep cpufreq liefert:

Code: Alles auswählen

/lib/modules/2.6.7-1-k7/kernel/drivers/cpufreq
/lib/modules/2.6.7-1-k7/kernel/drivers/cpufreq/cpufreq_powersave.ko
/lib/modules/2.6.7-1-k7/kernel/drivers/cpufreq/cpufreq_userspace.ko
/lib/modules/2.6.7-1-k7/kernel/drivers/cpufreq/freq_table.ko
/lib/modules/2.6.7-1-k7/kernel/drivers/cpufreq/proc_intf.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/acpi.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/gx-suspmod.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/longhaul.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/longrun.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/p4-clockmod.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k6.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k7.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k8.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-ich.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-lib.ko
/lib/modules/2.6.7-1-k7/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko
Unter dem cpufreq-Verzeichnis liegen alle CPU-Treiber. acpi.ko regelt alles über das ACPI-BIOS (d.h. das könnte auch mit CPUs funktionieren, wo es keine speziellen Treiber für gibt), alle anderen Treiber greifen direkt auf die Hardware zu.
@lisan: Welche CPU hast du denn?

AUtomatisch wird von diesen Modulen gar nichts geladen, d.h. man muss in die /etc/modules die entsprechenden Module eintragen, z.B. so

Code: Alles auswählen

#/etc/modules

# Treiber für cpufreq über ACPI
acpi
# userspace-governour
cpufreq-userspace
@alex
Wenn du einen eigenen Kernel kompiliert hast, und ein Modul unter /lib/modules existiert, dann ist das Feature nicht einkompiliert, d.h. es müsste über lsmod auftauchen.

Die EInträge in /proc werden dynamisch erzeugt, d.h. das sind keine echten Dateien, sondern die Informationen werden immer aktuell erzeugt.

x86info berechnet die CPU-Frequenz. Wenn der Prozessor nicht 100%ig erkannt wird, geht diese Berechnung in die Hose und die Werte sind falsch. Selbiges gilt für die Temperaturen - das ist eine sehr wackelige Aussage...

Generell wage ich es einmal zu bezweifeln, dass die Geschwindikeit wirklich runtergeht - 100MHz ist arg wenig. Mein Pentium M 1,5GHz lässt sich lediglich bis 900MHz takten.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Beitrag von peschmae » 22.07.2004 13:38:17

lisan: Ich glaube das was du da erlebst ist ACPI Throttling. Das ist nicht ganz so effektiv wie richtiges runtertakten.
Afaik schickt das nur die Cpu jeweils für ein paar Taktzyklen schlafen zwischendurch - die eigentliche Frequenz bleibt hoch nur dass z.B. 9 von 10 Zyklen geschlafen wird (was aber in /proc/cpuinfo nicht angezeigt wird weil dort die Frequenz steht...)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Benutzeravatar
brechenmacher
Beiträge: 24
Registriert: 08.06.2004 09:01:00

Beitrag von brechenmacher » 22.07.2004 14:01:08

Hi, ich hab auch ein S5200N und takte über den Speedtoggle Knopf per Hand herunter.
Hab mir ein Script geschrieben dass dann immer zwichen 1.4GHz und 600MHz hin und her schaltet. Wobei ich meisstens auf 600MHz arbeite.

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 22.07.2004 14:54:36

...der speed toggle knopf geht bei mir gar nicht, hab aber noch keine spezielle software installiert.
gibts da was?
läuft dein modem?

grußalex

Benutzeravatar
brechenmacher
Beiträge: 24
Registriert: 08.06.2004 09:01:00

Beitrag von brechenmacher » 22.07.2004 15:04:20

Ich hab den acpid installiert und asus_acpi geladen. Danach bekommst du im ACPI Log
beim drücken des Buttons einen Keycode. Damit kannst du dir dann unter /etc/acpi
einen Script bauen.

Ans Modem hab ich mich noch nicht rangemacht da ich es noch nie gebraucht hab.

Bei Problemen, schick mir grad ne PN mit deiner e-mail Adresse.

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Beitrag von badera » 27.07.2004 09:05:41

Warum per EMAIL weiter diskutieren? - Interessiert wohl noch andere, wie es zur Lösung kommt!
- Adrian

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 27.07.2004 10:01:05

hallo,

wir diskutiren nicht per email weiter, wir haben nur ein paar shell scripte ausgetauscht.
sobald ich zeit habe probiere ich alles aus und melde mich dann hier wieder mit ner funktionsfähigen lösung oder weiteren fragen ;-)

zur zeit versuch ich grad nen 2.6.7 er kernel zu kompilieren, was leider nicht so richtig gut geht http://www.debianforum.de/forum/viewtopic.php?t=28787.
muss mal in den kernelcode reinschauen wenn ich zeit hab.

gruß
alex

Benutzeravatar
feltel
Webmaster
Beiträge: 10476
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 13.08.2004 13:25:30

An den Scripten wär ich interessiert, da ich mir evtl. auch ein S5200N zulegen will.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von Savar » 13.08.2004 13:46:04

hmm.. vielleicht hab ich was überlesen, aber für diejenigen, bei denen es kein /sys gibt oder dieses leer ist, das sysfs muss natürlich gemountet sein

Auszug aus meiner fstab:

Code: Alles auswählen

none      /sys     sysfs     defaults    0   0
sollte das schon allen klar sein, dann bitte ich dieses Posting einfach zu ignorieren :-)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

Benutzeravatar
lisan
Beiträge: 658
Registriert: 22.02.2003 19:05:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von lisan » 18.08.2004 06:35:32

Bei mir lags daran, dass das centrino-modul bestimmte werte der cpu-kennung erwartet, um die cpu als pentium m zu identifizieren.
Da allerdings intel staendig neue arten von pentium m's auf den markt zu werfen scheint kommt der entwickler des modules wohl nicht nach.
D.h. ich habe ein paar zeilen im modul an meine cpu angepasst und das verzeichnis war nich mehr leer.

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 05.09.2004 14:37:27

So,

inzwischen ist einige Zeit verstrichen, hab 'n bischen rumprobiert und ne lösung gefunden die für mich praktikabel ist.
ich verwende den 2.6.7er kernel und cpufreqd, hab die entsprechende configurationsdatei so angepasst, dass ich ab einer last von 90% 1600 MHz, sonst mit 600 MHz zur verfügung hab.

hier mal nen auszug aus meinen notizen:
<asus_acpi>
use this as module (otherwise i got a kernelpanic)
and then modprobe asus_acpi or add this to /etc/modules
>apt-get install acpi #displays information
>apt-get install cpufreqd
uncheck power management->cpu frequency scaling -> /proc/sys/cpu interface!
-> the cpufreqd tools are then visible in /sys/devices/system/cpu/cpu0/cpufreq
edit /etc/cpufreqd.conf for performance profiles




>apt-get install acpid
the srcipts are in /etc/acpi (restart acpid after changing an eventhandler)

ich benutze den dämon zum auswerten der div. tastatur-events.
ich hab das problem, dass das eventhandling nur funktioniert, wenn ich den acpid nach dem booten von hand starte.

ich hab diie skripte, von denen weiter oben schon gesprochen wurde unter
http://www.pt.tu-clausthal.de/~alexp/asus/
zur verfügung gestellt. ich verwende derzeit nur einen button und lasse mir über xmessage die frequenz, akkulaufzeit und cputemp. anzeigen:
#############
cpu_speed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq`
text=`acpi -t`
xmessage -center -timeout 3 "$cpu_speed $text"
#######################

mit dem cdrom/dvd hatte ich einige probleme,
deshalb hab ich auf die alte art der scsi-emulierung zurückgestellt.

soweit mal

gruß
alex


meine /etc/cpufreq.conf:
Bitte beachten: die reihenfolge der einträge spielt ne wichtige rolle (s. manpage)
###############################################
# this is a comment
#
# you need: 1 [General] section,
# 1 or more [Profile] sections
# 1 or more [Rule] sections
#
# a section ends at the first blank line
#
# [Rule] sample:
# [Rule]
# name=sample_rule
# ac=on # (on/off)
# battery_interval=0-10
# cpu_interval=30-60
# programs=xine,mplayer
# profile=sample_profile
#
# [Profile] sample:
# [Profile]
# name=sample_profile
# minfreq=10%
# maxfreq=100%
# policy=performance
#
# see CPUFREQD.CONF(5) manpage for a complete reference



[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=3
pm_type=acpi #(acpi, apm or pmu)
# Uncomment the following line to enable ACPI workaround (see cpufreqd.conf(5))
acpi_workaround=1
verbosity=4 #(if you want a minimal logging set to 5)

[Profile]
name=psave
minfreq=600000
maxfreq=600000
policy=powersafe

[Profile]
name=power
minfreq=1600000
maxfreq=1600000
policy=performance


[Rule]
name=high_cpu_boost
ac=off # (on/off)
battery_interval=0-100
cpu_interval=50-100
profile=power

[Rule]
name=lo_cpu_boost
ac=off # (on/off)
battery_interval=0-100
cpu_interval=0-90
profile=psave
###############################
#ende /etc/cpufreq.conf:

Antworten