Cpupower: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K (Kategorie Energieverwaltung)
K (Link zu ähnlicher Seite)
 
(46 dazwischenliegende Versionen von 25 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Was ist Cpufrequtils?=
{{SEITENTITEL:cpupower}}{{righttoc}}
Bei cpupower (ehemals cpufrequtils) handelt es sich um eine Sammlung kleiner, nützlicher Werkzeuge welche die Skalierung von Frequenz und Spannung moderner Prozessoren möglich macht, um so eine geringere Abwärme und einen geringeren Stromverbrauch hervorzurufen. Dahinter steht ein Prinzip, welches die Frequenz des Prozessors abhängig von der momentan benötigten Leistung entweder erhöht oder absenkt. Diese Technik ist insbesondere für Notebookbesitzer interessant, um so eine längere und gleichzeitig schonendere Akkunutzung zu gewährleisten.


Bei Cpufrequtils handelt es sich um eine Sammlung kleiner, nützlicher Werkzeuge welche die Skalierung von Frequenz und Spannung moderner Prozessoren möglich macht, um so eine geringere Abwärme und einen geringeren Stromverbrauch hervorzurufen. Dahinter steht ein Prinzip, welches die Frequenz des Prozessors abhängig von der momentan benötigten Leistung entweder erhöht oder absenkt. Diese Technik ist insbesondere für Notebookbesitzer interessant, um so eine längere und gleichzeitig schonendere Akkunutzung zu gewährleisten.
{{Installation|repo=community|paket=cpupower}}


=Installation=
== Konfiguration ==
{{Hinweis|Alle Werte sind als Beispiel anzusehen und können nicht zwangsläufig auf das eigene System übernommen werden.}}


Das gesamte Paket kann aus dem Extra-Repositorium heraus mittels des folgenden Befehls installiert werden.
=== Kernelmodule ===
<pre>pacman -Sy cpufrequtils</pre>
Die Grundlage für ''cpupower'' bilden Kernelmodule, die Informationen über die möglichen Frequenzen bereitstellen und den Prozessor bei bedarf herunter- oder hochtakten.


=Konfiguration=
Zuerst muss das Modul ''acpi-cpufreq'' geladen werden, dass die Informationen über den Prozessor bereitstellt. Für ältere Intel Prozessoren werden noch zusätzlich die Module ''p4-clockmod'' oder ''speedstep-centrino'', für AMD Prozessoren die Module ''powernow-k6'', ''powernow-k7'' oder ''powernow-k8'' benötigt.
{{Hinweis|Das Modul ''powernow-k8'' unterstützt auch die neueren AMD Prozessoren, wie Phenom usw..}}


Nun können wir uns an die eigentliche Konfiguration heranwagen. Beachten Sie bitte, dass ich diese exemplarisch anhand meines Prozessors aufzeigen werde und die getroffenen Einstellungen nicht 1:1 auf Ihr System übertragen werden können. Für etwaige Folgeschäden übernehme ich daher keine Haftung.
Nun müssen die nötigen Module geladen werden, bei Intel/VIA beispielsweise:


==Analyse der zulässigen Frequenzen==
modprobe acpi-cpufreq


Bevor überhaupt erst korrekte Einstellungen möglich sind, muss zuerst ermittelt werden, welche Frequenzen für Ihren Prozessor zulässig sind. Dies funktioniert bei modernen Prozessoren in der Regel mit dem acpi-cpufreq Treiber tadellos. Laden wir nun den Treiber entweder manuell als Superuser mit dem Befehl
Bei VIA C7
<pre>modprobe acpi-cpufreq</pre>
oder lassen ihn beim Start automatisch durch Hinzufügen des Befehls acpi-cpufreq zur Modulreihe der rc.conf mitstarten.
<pre>Hinzufügen zur /etc/rc.conf


MODULES=([...] snd-timer snd snd-hda-intel soundcore acpi-cpufreq)</pre>
modprobe e_powersaver
 
Bei einem AMD Prozessor wird alternativ ''powernow-k8'' geladen:
 
modprobe powernow-k8
 
Damit die Module beim Systemstart automatisch geladen werden, müssen Dateien in {{ic|/etc/modules-load.d/}} angelegt werden:
 
{{hc|vim /etc/modules-load.d/acpi-cpufreq.conf|
acpi-cpufreq}}
 
Alternativ auch wieder für einen AMD Prozessor:
 
{{hc|vim /etc/modules-load.d/powernow-k8.conf|
powernow-k8}}
 
Nun lassen sich mit folgendem Befehl detaillierte Informationen, darunter auch die zulässigen Frequenzen, zum eigenen Prozessor abrufen:
cpupower frequency-info


Nun lassen sich mit folgendem Befehl detailierte Informationen, darunter auch die zulässigen Frequenzen, zum eigenen Prozessor abrufen:
<pre>cpufreq-info</pre>
Diese sieht beispielsweise für einen Core 2 Duo T7250 derart aus:
Diese sieht beispielsweise für einen Core 2 Duo T7250 derart aus:
<pre>
cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
Bitte melden Sie Fehler an cpufreq@lists.linux.org.uk.
Bitte melden Sie Fehler an cpufreq@lists.linux.org.uk.
analysiere CPU 0:
analysiere CPU 0:
  Treiber: acpi-cpufreq
  Treiber: acpi-cpufreq
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Regler: performance
  mögliche Regler: performance
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
                    liegen. Der Regler "performance" kann frei entscheiden,
                    liegen. Der Regler "performance" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 1:
analysiere CPU 1:
  Treiber: acpi-cpufreq
  Treiber: acpi-cpufreq
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Regler: performance
  mögliche Regler: performance
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
                    liegen. Der Regler "performance" kann frei entscheiden,
                    liegen. Der Regler "performance" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).
</pre>


== Einrichtung von cpufreq auf AMD-Systemen ==
=== Prozessor Governors ===
''Nachtrag von igprolin''<br /><br />
Governors können als vordefinierte Schemas angesehen werden, unter welchen Umständen der Prozessor herunter- und hochgetaktet wird. Sie sind Kernelmodule, die, wenn gewünscht, auch alle geladen werden können. Die Governors <code>cpufreq_ondemand</code> und <code>cpufreq_performance</code> sind bereits in den Kernel eingebaut und brauchen deshalb nicht extra als Module geladen zu werden.
'''Bei Sockel AM2/AM2+ Mainboards darf "AM2 Boost" im BIOS nicht aktiviert sein, sonst funktioniert C&Q nicht richtig'''<br /><br />
Bei AMD-basierenden Systemen ist cpufreq einfach einzurichten. Folgende Module werden dann nach erfolgter Einrichtung geladen: powernow-k8, cpufreq-ondemand
<pre>modprobe powernow-k8</pre>
<pre>modprobe cpufreq-ondemand</pre>
Danach diese beiden Module in die rc.conf im MODULES-Array eintragen:
<pre>MODULES=(... powernow-k8 cpufreq-ondemand)</pre>
Nun muss mittels cpufreq-info heraus gefunden werden, welche Taktraten der Prozessor minimum und maximum haben kann. Beispiel für einen AMD ATHLON64 X2 4000+
<pre>
christian@doppelherz $ cpufreq-info
cpufrequtils 005: cpufreq-info (C) Dominik Brodowski 2004-2006
Bitte melden Sie Fehler an cpufreq@vger.kernel.org.
analysiere CPU 0:
  Treiber: powernow-k8
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 1000 MHz - 2.10 GHz
  mögliche Taktfrequenzen: 2.10 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
  mögliche Regler: ondemand, performance
  momentane Taktik: die Frequenz soll innerhalb 1000 MHz und 2.10 GHz.
                    liegen. Der Regler "ondemand" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1000 MHz.
analysiere CPU 1:
  Treiber: powernow-k8
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 1000 MHz - 2.10 GHz
  mögliche Taktfrequenzen: 2.10 GHz, 2.00 GHz, 1.80 GHz, 1000 MHz
  mögliche Regler: ondemand, performance
  momentane Taktik: die Frequenz soll innerhalb 1000 MHz und 2.10 GHz.
                    liegen. Der Regler "ondemand" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 1000 MHz.
</pre>


Nun muss die /etc/conf.d/cpufreq entsprechend angepasst werden. Anhand des oben genannten AMD-Prozessor sieht diese wie folgt aus:
Folgende Governors sind verfügbar:
<pre>
{|border="2"
#configuration for cpufreq control
| performance (Voreinstellung) || fest in den Kernel einkompiliert und stellt den Prozessor auf die höchste Frequenz.
|-
| cpufreq_ondemand (empfohlen) || taktet den Prozessor je nach Systemlast herauf und herunter, ist bereits in den Kernel kompiliert.
|-
| cpufreq_conservative || ähnlich wie ondemand, aber Änderungen der Taktrate sind seltener
|-
| cpufreq_powersave || stellt den Prozessor auf die niedrigste Frequenz
|}


# valid governors:
Nun müssen die gewünschten Kernelmodule geladen werden:
# ondemand, performance, powersave,
  modprobe cpufreq_conservative
#  conservative, userspace
governor="ondemand"


# valid suffixes: Hz, kHz (default), MHz, GHz, THz
Damit sie auch beim Systemstart geladen werden, müssen auch für sie Dateien in {{ic|/etc/modules-load.d}} angelegt werden:
min_freq="1.0GHz"
{{hc|vim /etc/modules-load.d/cpufreq_conservative.conf|
max_freq="2.1GHz"
cpufreq_conservative}}
</pre>
Das wars mit der Einrichtung. Nun cpufreq in das DAEMONS-Array oder in die /etc/rc.local eintragen und zum Beispiel per ...
<pre>cat /proc/cpuinfo</pre>
...die Taktung überprüfen.


'''ACHTUNG! Dieser Wikieintrag ist noch nicht komplett vollendet und wird weiterhin um Inhalt erweitert.'''
Welcher ''Governor'' dann die Kontrolle übernimmt, kann mit
cpupower frequency-set -g conservative
eingestellt werden. Diese Einstellung geht nach einem Neustart verloren, daher kann sie mit dem cpufreq Daemon beim Systemstart gesetzt werden.
 
=== cpupower Daemon ===
Nun muss die /etc/default/cpupower angepasst werden. Darin können der ''Governor'' und die minimale und höchste Prozessorfrequenz eingestellt werden.
{{Hinweis|Die Angaben zu den Frequenzen können auskommentiert werden, da sie automatisch erkannt werden sollten.}}
 
#configuration for cpufreq control
# valid governors:
#  ondemand, performance, powersave,
#  conservative, userspace
governor="conservative"
# valid suffixes: Hz, kHz (default), MHz, GHz, THz
#min_freq="1.0GHz"
#max_freq="2.1GHz"
 
Nun kann der Daemon gestartet werden:
systemctl start cpupower
 
Damit der Daemon beim Systemstart geladen wird, muss dies Systemd mitgeteilt werden:
systemctl enable cpupower
 
Anschließend kann die Prozessorfrequenz mit
cat /proc/cpuinfo
oder
cpupower frequency-info
bzw. in Echtzeit mit
watch grep \"cpu MHz\" /proc/cpuinfo
 
überprüft werden.
 
== Bekannte Probleme ==
'''Eventuell hier noch bekannte Probleme mit eintragen:'''
 
Einige AM2/AM2+ Boards:
* Deaktivierung des AM2-Boost.
* C&Q muss im BIOS aktiviert sein.
 
Intel Pentium Prozessoren:
*Bugs im BIOS verhindern Speedstep-Funktionalität
 
VMWare Server 2.0:
* Falsche Angabe des Taktes ( Bsp.: 500 GHz )
* Träges Verhalten bei aktiven C&Q
 
== Weblinks ==
* [http://www.kernel.org/pub/linux/utils/kernel/cpufreq/ cpufrequtils Website] {{sprache|en}}


[[Kategorie:Unvollständig]]
[[Kategorie:Energieverwaltung]]
[[Kategorie:Energieverwaltung]]
[[en:CPU_frequency_scaling#cpupower]]

Aktuelle Version vom 13. Oktober 2020, 19:06 Uhr

Bei cpupower (ehemals cpufrequtils) handelt es sich um eine Sammlung kleiner, nützlicher Werkzeuge welche die Skalierung von Frequenz und Spannung moderner Prozessoren möglich macht, um so eine geringere Abwärme und einen geringeren Stromverbrauch hervorzurufen. Dahinter steht ein Prinzip, welches die Frequenz des Prozessors abhängig von der momentan benötigten Leistung entweder erhöht oder absenkt. Diese Technik ist insbesondere für Notebookbesitzer interessant, um so eine längere und gleichzeitig schonendere Akkunutzung zu gewährleisten.

Installation

Das Programm ist als cpupower in community verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S cpupower

Konfiguration

Hinweis: Alle Werte sind als Beispiel anzusehen und können nicht zwangsläufig auf das eigene System übernommen werden.

Kernelmodule

Die Grundlage für cpupower bilden Kernelmodule, die Informationen über die möglichen Frequenzen bereitstellen und den Prozessor bei bedarf herunter- oder hochtakten.

Zuerst muss das Modul acpi-cpufreq geladen werden, dass die Informationen über den Prozessor bereitstellt. Für ältere Intel Prozessoren werden noch zusätzlich die Module p4-clockmod oder speedstep-centrino, für AMD Prozessoren die Module powernow-k6, powernow-k7 oder powernow-k8 benötigt.

Hinweis: Das Modul powernow-k8 unterstützt auch die neueren AMD Prozessoren, wie Phenom usw..

Nun müssen die nötigen Module geladen werden, bei Intel/VIA beispielsweise:

modprobe acpi-cpufreq

Bei VIA C7

modprobe e_powersaver

Bei einem AMD Prozessor wird alternativ powernow-k8 geladen:

modprobe powernow-k8

Damit die Module beim Systemstart automatisch geladen werden, müssen Dateien in /etc/modules-load.d/ angelegt werden:

vim /etc/modules-load.d/acpi-cpufreq.conf
acpi-cpufreq

Alternativ auch wieder für einen AMD Prozessor:

vim /etc/modules-load.d/powernow-k8.conf
powernow-k8

Nun lassen sich mit folgendem Befehl detaillierte Informationen, darunter auch die zulässigen Frequenzen, zum eigenen Prozessor abrufen:

cpupower frequency-info

Diese sieht beispielsweise für einen Core 2 Duo T7250 derart aus:

cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
Bitte melden Sie Fehler an cpufreq@lists.linux.org.uk.
analysiere CPU 0:
  Treiber: acpi-cpufreq
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Regler: performance
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
                    liegen. Der Regler "performance" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).
analysiere CPU 1:
  Treiber: acpi-cpufreq
  Folgende CPUs können nur gleichzeitig ihre Frequenz variieren: 0 1
  Hardwarebedingte Grenzen der Taktfrequenz: 800 MHz - 2.00 GHz
  mögliche Taktfrequenzen: 2.00 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
  mögliche Regler: performance
  momentane Taktik: die Frequenz soll innerhalb 800 MHz und 2.00 GHz.
                    liegen. Der Regler "performance" kann frei entscheiden,
                    welche Taktfrequenz innerhalb dieser Grenze verwendet wird.
  momentane Taktfrequenz ist 2.00 GHz  (verifiziert durch Nachfrage bei der Hardware).

Prozessor Governors

Governors können als vordefinierte Schemas angesehen werden, unter welchen Umständen der Prozessor herunter- und hochgetaktet wird. Sie sind Kernelmodule, die, wenn gewünscht, auch alle geladen werden können. Die Governors cpufreq_ondemand und cpufreq_performance sind bereits in den Kernel eingebaut und brauchen deshalb nicht extra als Module geladen zu werden.

Folgende Governors sind verfügbar:

performance (Voreinstellung) fest in den Kernel einkompiliert und stellt den Prozessor auf die höchste Frequenz.
cpufreq_ondemand (empfohlen) taktet den Prozessor je nach Systemlast herauf und herunter, ist bereits in den Kernel kompiliert.
cpufreq_conservative ähnlich wie ondemand, aber Änderungen der Taktrate sind seltener
cpufreq_powersave stellt den Prozessor auf die niedrigste Frequenz

Nun müssen die gewünschten Kernelmodule geladen werden:

modprobe cpufreq_conservative

Damit sie auch beim Systemstart geladen werden, müssen auch für sie Dateien in /etc/modules-load.d angelegt werden:

vim /etc/modules-load.d/cpufreq_conservative.conf
cpufreq_conservative

Welcher Governor dann die Kontrolle übernimmt, kann mit

cpupower frequency-set -g conservative

eingestellt werden. Diese Einstellung geht nach einem Neustart verloren, daher kann sie mit dem cpufreq Daemon beim Systemstart gesetzt werden.

cpupower Daemon

Nun muss die /etc/default/cpupower angepasst werden. Darin können der Governor und die minimale und höchste Prozessorfrequenz eingestellt werden.

Hinweis: Die Angaben zu den Frequenzen können auskommentiert werden, da sie automatisch erkannt werden sollten.

#configuration for cpufreq control

# valid governors:
#  ondemand, performance, powersave,
#  conservative, userspace
governor="conservative"

# valid suffixes: Hz, kHz (default), MHz, GHz, THz
#min_freq="1.0GHz"
#max_freq="2.1GHz"

Nun kann der Daemon gestartet werden:

systemctl start cpupower

Damit der Daemon beim Systemstart geladen wird, muss dies Systemd mitgeteilt werden:

systemctl enable cpupower

Anschließend kann die Prozessorfrequenz mit

cat /proc/cpuinfo

oder

cpupower frequency-info

bzw. in Echtzeit mit

watch grep \"cpu MHz\" /proc/cpuinfo

überprüft werden.

Bekannte Probleme

Eventuell hier noch bekannte Probleme mit eintragen:

Einige AM2/AM2+ Boards:

  • Deaktivierung des AM2-Boost.
  • C&Q muss im BIOS aktiviert sein.

Intel Pentium Prozessoren:

  • Bugs im BIOS verhindern Speedstep-Funktionalität

VMWare Server 2.0:

  • Falsche Angabe des Taktes ( Bsp.: 500 GHz )
  • Träges Verhalten bei aktiven C&Q

Weblinks