Processor Hardware Control: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Fs4000 (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(13 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{veraltet}}
{{Unvollständig}}
Mit dem Processor Hardware Control-Patch kann man Intel- und AMD-CPUs undervolten, also mit geringerer Spannung betreiben, um Strom zu sparen.
Mit dem Processor Hardware Control-Patch kann man Intel- und AMD-CPUs undervolten, also mit geringerer Spannung betreiben, um Strom zu sparen.


Zeile 6: Zeile 9:
==Installation==
==Installation==
===Intel-CPU===
===Intel-CPU===
Es gibt ein Paket im AUR, das man sich selbst kompilieren kann: http://aur.archlinux.org/packages.php?ID=18310<br>
Für Intel Prozessoren benötigt man das Paket phc-intel aus dem [[AUR]]: http://aur.archlinux.org/packages.php?ID=24980
Testweise gibt es dieses Modul für Kernel 2.6.29: http://mwd.bplaced.net/guest/acpi-cpufreq-phc.tar.gz<br>
 
Falls nicht schon geschehen, trägt man acpi_cpufreq unter MODULES in der /etc/rc.conf ein.
Um das Modul für den laufenden Kernel zu bauen, führt man folgenden Befehl aus. Dies ist auch nach einem größeren Kernel-Update (z.B. 2.6.37 -> 2.6.38) notwendig.
<pre>MODULES=( ... acpi_cpufreq)</pre>
/etc/rc.d/phc-intel setup
Falls nicht schon geschehen, trägt man acpi-cpufreq unter MODULES in der /etc/rc.conf ein. Dies lädt phc-intel automatisch.
MODULES=( ... acpi-cpufreq)
Anschließend muss man sein System rebooten.
Anschließend muss man sein System rebooten.


===AMD-CPU===
===AMD-CPU===
Es gibt ein Paket, das man auf eigene Gefahr testen kann: http://aur.archlinux.org/packages.php?ID=22953<br>
Es gibt ein Paket, das man auf eigene Gefahr testen kann: http://aur.archlinux.org/packages.php?ID=22953
 
Falls nicht schon geschehen, trägt man powernow-k8 unter MODULES in der /etc/rc.conf ein.
Falls nicht schon geschehen, trägt man powernow-k8 unter MODULES in der /etc/rc.conf ein.
<pre>MODULES=( ... powernow-k8)</pre>
MODULES=( ... powernow-k8)
Anschließend muss man sein System rebooten.
Anschließend muss man sein System rebooten.


==Konfiguration==
==Konfiguration==
Während der Konfiguration sollte man keine weiteren Arbeiten machen, der Rechner könnte instabil werden oder sogar einfrieren. Am Besten startet man den Rechner im Single-User-Modus. Dazu hängt man ein S an die Kernel-Zeile in Grub. Wenn du mehrere einzelne (!) Prozessoren in deinem Computer hast, musst du die Konfiguration für jede CPU durchführen. Bei Dual- oder Quad-Core Prozessoren ist dies nicht notwendig.
Während der Konfiguration sollte man keine weiteren Arbeiten machen, der Rechner könnte instabil werden oder sogar einfrieren. Am Besten startet man den Rechner im Single-User-Modus. Dazu hängt man ein S an die Kernel-Zeile in Grub. Wenn Du mehrere einzelne (!) Prozessoren in deinem Computer hast, musst Du die Konfiguration für jede CPU durchführen. Bei Dual- oder Quad-Core Prozessoren ist dies nicht notwendig.


===Intel-CPU===
===Intel-CPU===
Bei Intel Prozessoren findet man das entscheidende Konfigurations-Interface unter /sys/devices/system/cpu/cpu0/cpufreq/phc_controls.
Bei Intel Prozessoren findet man das entscheidende Konfigurations-Interface unter /sys/devices/system/cpu/cpu0/cpufreq/phc_vids.
<pre>
 
# cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
# cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
12:43 10:35 8:27 6:19
43 35 27 19
</pre>
 
Dies sind die Standard-Werte der CPU (im Beispiel ein Intel Pentium Dual-Core T2330). Man sieht mehrere Wertepaare getrennt durch einen Doppelpunkt. Der erste Wert ist die Frequenz-ID, der zweite die Spannungs-ID. Die Frequenz-IDs dürfen nicht geändert werden, die Spannungs-IDs sollten schrittweise für jede Frequenz einzeln herabgesetzt werden. Die Frequenzen bekommt man mit
Dies sind die Standard-Spannungswerte der CPU (im Beispiel ein Intel Pentium Dual-Core T2330) für die verfügbaren Taktstufen. Die Spannungs-IDs sollten schrittweise für jede Frequenz einzeln herabgesetzt werden. Die Frequenzen bekommt man mit
<pre>
 
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1600000 1333000 1067000 800000
1600000 1333000 1067000 800000
</pre>
 
Um die Frequenz selbst bestimmen zu können lädt man den userspace-Governor.
Um die Frequenz selbst bestimmen zu können lädt man den userspace-Governor. Bei Mehrkern-CPUs muss dies allerdings für alle Kerne erfolgen (cpu0, cpu1)
<pre>echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</pre>
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Dann setzt man die CPU unter Vollast:
echo userspace > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
<pre>dd if=/dev/zero of=/dev/null &</pre>
Nun setzt man die CPU unter Vollast. Falls man eine CPU mit zwei oder mehreren Kernen besitzt, sollten auch zwei oder mehrere Instanzen des folgenden Befehls gestartet werden damit auch alle Kerne ausgelastet werden:
und beginnt z.B. mit der höchsten Frequenz:
dd if=/dev/zero of=/dev/null &
<pre>echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed</pre>
Jetzt beginnt man z.B. mit der höchsten Frequenz (zu beachten ist das bei Mehrkern-CPUs allen Kernen die Frequenz zugewiesen werden muss; zu sehen an cpu0, cpu1):
Nun verringert man die Spannungs-ID der höchsten Frequenz, bis der Rechner ein ungewöhliches Verhalten zeigt oder einfriert.
echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
<pre>echo 12:30 10:35 8:27 6:19 > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls</pre>
echo 1600000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed
Sollte der Rechner abstürzen, muss man erneut den userspace-Governor laden und dd starten.<br>
Nun verringert man (in 1er-Schritten) die Spannungs-ID der höchsten Frequenz, bis der Rechner ein ungewöhnliches Verhalten zeigt oder einfriert. Dabei auch wieder auf alle Kerne achten.
Hat man die passende Spannung für jede Frequenz gefunden, schreibt man diese z.B. in die /etc/rc.local:
echo "30 35 27 19" > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
<pre>echo 12:20 10:15 8:10 6:5 > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls</pre>
echo "30 35 27 19" > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids
Sollte der Rechner abstürzen, muss man erneut den userspace-Governor laden und dd starten.
 
Hat man die passende Spannung für jede Frequenz gefunden, schreibt man diese die /etc/conf.d/phc-intel:
VIDS="20 15 10 5"
Sollte der Rechner wegen unzureichender Spannung nicht mehr starten, kann man durch Anhängen des Kernel-Parameters "nophc" im Bootloader wieder mit den Standard-Spannungswerten booten.
 
===Konfiguration mittels PHCtool===
 
Wenn man sich die Arbeit etwas erleichtern möchte und eine grafische Oberfläche für die Konfiguration bevorzugt, gibt es die Möglichkeit das PHCtool zu verwenden. Mit diesem lassen sich für die Prozessorkerne die Spannungswerte der einzelnen Taktstufen spielend leicht verändern.
Hierzu installiert man die aktuellste [http://aur.archlinux.org/packages.php?ID=17059 SVN] Revision aus dem AUR.
 
Nun lässt sich das Programm mittels phctool starten. Die jeweiligen Spannungen lassen sich unter dem Reiter Voltages festlegen.
Zu beachten ist lediglich noch, dass zur Überprüfung der Spannungen mit dem PHC-Tool zuvor das Kernel-Modul msr geladen werden muss. Dies wird als root hiermit erledigt.
 
modprobe msr


===AMD-CPU===
===AMD-CPU===

Aktuelle Version vom 13. Januar 2021, 11:53 Uhr

Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.


Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!


Mit dem Processor Hardware Control-Patch kann man Intel- und AMD-CPUs undervolten, also mit geringerer Spannung betreiben, um Strom zu sparen.

Voraussetzung

Man benötigt einen Prozessor, der entweder das acpi_cpufreq-Modul oder das powernow-k8-Modul unterstützt.

Installation

Intel-CPU

Für Intel Prozessoren benötigt man das Paket phc-intel aus dem AUR: http://aur.archlinux.org/packages.php?ID=24980

Um das Modul für den laufenden Kernel zu bauen, führt man folgenden Befehl aus. Dies ist auch nach einem größeren Kernel-Update (z.B. 2.6.37 -> 2.6.38) notwendig.

/etc/rc.d/phc-intel setup

Falls nicht schon geschehen, trägt man acpi-cpufreq unter MODULES in der /etc/rc.conf ein. Dies lädt phc-intel automatisch.

MODULES=( ... acpi-cpufreq)

Anschließend muss man sein System rebooten.

AMD-CPU

Es gibt ein Paket, das man auf eigene Gefahr testen kann: http://aur.archlinux.org/packages.php?ID=22953

Falls nicht schon geschehen, trägt man powernow-k8 unter MODULES in der /etc/rc.conf ein.

MODULES=( ... powernow-k8)

Anschließend muss man sein System rebooten.

Konfiguration

Während der Konfiguration sollte man keine weiteren Arbeiten machen, der Rechner könnte instabil werden oder sogar einfrieren. Am Besten startet man den Rechner im Single-User-Modus. Dazu hängt man ein S an die Kernel-Zeile in Grub. Wenn Du mehrere einzelne (!) Prozessoren in deinem Computer hast, musst Du die Konfiguration für jede CPU durchführen. Bei Dual- oder Quad-Core Prozessoren ist dies nicht notwendig.

Intel-CPU

Bei Intel Prozessoren findet man das entscheidende Konfigurations-Interface unter /sys/devices/system/cpu/cpu0/cpufreq/phc_vids.

# cat /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
43 35 27 19

Dies sind die Standard-Spannungswerte der CPU (im Beispiel ein Intel Pentium Dual-Core T2330) für die verfügbaren Taktstufen. Die Spannungs-IDs sollten schrittweise für jede Frequenz einzeln herabgesetzt werden. Die Frequenzen bekommt man mit

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1600000 1333000 1067000 800000

Um die Frequenz selbst bestimmen zu können lädt man den userspace-Governor. Bei Mehrkern-CPUs muss dies allerdings für alle Kerne erfolgen (cpu0, cpu1)

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo userspace > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

Nun setzt man die CPU unter Vollast. Falls man eine CPU mit zwei oder mehreren Kernen besitzt, sollten auch zwei oder mehrere Instanzen des folgenden Befehls gestartet werden damit auch alle Kerne ausgelastet werden:

dd if=/dev/zero of=/dev/null &

Jetzt beginnt man z.B. mit der höchsten Frequenz (zu beachten ist das bei Mehrkern-CPUs allen Kernen die Frequenz zugewiesen werden muss; zu sehen an cpu0, cpu1):

echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
echo 1600000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed

Nun verringert man (in 1er-Schritten) die Spannungs-ID der höchsten Frequenz, bis der Rechner ein ungewöhnliches Verhalten zeigt oder einfriert. Dabei auch wieder auf alle Kerne achten.

echo "30 35 27 19" > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids
echo "30 35 27 19" > /sys/devices/system/cpu/cpu1/cpufreq/phc_vids

Sollte der Rechner abstürzen, muss man erneut den userspace-Governor laden und dd starten.

Hat man die passende Spannung für jede Frequenz gefunden, schreibt man diese die /etc/conf.d/phc-intel:

VIDS="20 15 10 5"

Sollte der Rechner wegen unzureichender Spannung nicht mehr starten, kann man durch Anhängen des Kernel-Parameters "nophc" im Bootloader wieder mit den Standard-Spannungswerten booten.

Konfiguration mittels PHCtool

Wenn man sich die Arbeit etwas erleichtern möchte und eine grafische Oberfläche für die Konfiguration bevorzugt, gibt es die Möglichkeit das PHCtool zu verwenden. Mit diesem lassen sich für die Prozessorkerne die Spannungswerte der einzelnen Taktstufen spielend leicht verändern. Hierzu installiert man die aktuellste SVN Revision aus dem AUR.

Nun lässt sich das Programm mittels phctool starten. Die jeweiligen Spannungen lassen sich unter dem Reiter Voltages festlegen. Zu beachten ist lediglich noch, dass zur Überprüfung der Spannungen mit dem PHC-Tool zuvor das Kernel-Modul msr geladen werden muss. Dies wird als root hiermit erledigt.

modprobe msr

AMD-CPU

TO DO