Ubuntu 12.04 Precise Pangolin
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
K10ctl ist ein Kommandozeilenprogramm, welches einem die Änderung der Spannung und der Taktfrequenz von AMD K10 CPUs erlaubt. Dazu zählen Modelle aus den Reihen Opteron, Phenom, Phenom II, Athlon X2 und Sempron (mit AM3-Architektur).
Die Änderung der Spannung und Taktfrequenz kann zu Schäden an der Hardware oder zu einem instabilen System führen.
Über SourceForge steht eine Archivdatei k10ctl.tar.bz2 zum Herunterladen bereit. Nachdem man diese herunter geladen und entpackt[1] hat, wechselt man in das Verzeichnis, in das das Archiv entpackt wurde. Das Programm ist bereits für 32-bit-Systeme vorkompiliert und benötigt keine externen Bibliotheken. Anschließend wird die ausführbare Datei mit Root-Rechten nach /usr/local/sbin kopiert bzw. verschoben.
Nun muss noch das Kernelmodul[5] msr
geladen werden:
sudo modprobe msr
Um msr
dauerhaft zu laden, muss es mit einem Editor[6] mit Root-Rechten[3] in /etc/modules am Dateiende eingetragen werden.
Beispiel:
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. loop lp rtc msr
Nun ist es möglich, k10ctl über das Terminal[4] zu starten. Der Befehl:
sudo k10ctl 0-3
fragt die aktuellen Spannung ab, wobei 0-3
für die CPU-Kerne steht, also in diesem Fall eine Vierkern-CPU. Möchte man die Spannung anpassen, verwendet man den folgenden Befehl:
sudo k10ctl 0-3 3 -cv 64 -nv 38
Die Spannung der CPU wird mit der Option -cv
angepasst. Dabei ist zu beachten: Je höher der Wert, desto niedriger die Spannung. Für die die Northbridge wird der Zusatz -nv
verwendet. Die Zahl hinter 0-3
, in diesem Fall die 3
, bezeichnet den P-State für welchen die Änderung vorgenommen werden soll. Es gibt 4 P-States, wobei P-State 3 für die niedrigste Frequenz steht (800Mhz) und P-State 0 für die höchste Frequenz (abhängig vom CPU-Modell). CPUs mit 4 oder mehr Kernen haben 5 P-States. Der P-State 0 ist dann der sogenannte Turbo-Modus: Ein oder zwei Kerne werden quasi übertaktet, während die anderen heruntertakten.
Beim Ändern der Spannung für -cv
sollten die jeweiligen Obergrenzen der Lastspannung beachtet werden, um Schäden zu vermeiden. Bei manchen Kombinationen aus Mainboard und CPU sind Untergrenzen fest eingebaut. Die maximale Spannung für die Northbridge beträgt je nach CPU-Modell 1,1V bis 1,3V.
Nach unten hin ist die Stabilität des Systems die Grenze. Dies sollte auch vorher ausgiebig mit Prime getestet werden.
Undervolting bezeichnet das systematische Absenken der CPU-Spannung (evtl. auch der Northbridge), um den Leistungsverbrauch des Systems zu senken. Nebeneffekt ist eine geringere Temparatur. Nach dem absenken der Spannung um einen Schritt wird mit Prime die Stabilität getestet. Wenn das System einfriert oder Fehler anzeigt, ist die Untergrenze erreicht.
Zuerst braucht man die aktuellen Werte aller P-States. Da die Werte aller Kerne gleich sind, reichen die des ersten Kerns.
sudo k10ctl 0
VID interface mode: serial CPU0 Current P-State: 3 Fastest P-State: 1 NbVid NbDid CpuVid CpuDid CpuFid UNb CpuMult UCpu PCore P-State 0: 34 0 14 0 17 1125.0mV 16.50000 1375.0mV 21725mW P-State 1: 34 0 26 0 12 1125.0mV 14.00000 1225.0mV 18375mW P-State 2: 34 0 28 0 6 1125.0mV 11.00000 1200.0mV 13920mW P-State 3: 34 0 30 1 14 1125.0mV 7.50000 1175.0mV 9988mW P-State 4: 34 0 34 1 0 1125.0mV 4.00000 1125.0mV 6188mW
In diesem Fall handelt es sich um einen Sechskernprozessor, die interessanten P-States sind 1-4.
Für den P-State 1 liegt der Wert von CpuVid bei 26. Die daraus resultierende Spannung wird danach berechnet, ob das Mainboard im "parallel VID interface mode" oder "serial VID interface mode" arbeitet. Zitat von der (ehemaligen) Projektseite:
"In parallel VID interface mode the conversion formula is
if vid>=64 then U=375 mV
else if vid>=32 then U=1162.5mV - vid=12.5 mV
else U=1550mV - vid*25 mV.
In serial VID interface mode it is
if vid>=124 then U=0 mV
else U=1550mV - vid*12.5 mV."
So kann man gezielt Spannungen ansteuern. Der aktuelle Wert ist in der Ausgabe unter "UCpu" abzulesen. Eine Absenkung um eine Stufe bedeutet in diesem Fall eine Reduzierung um 0,0125 Volt.
sudo k10ctl 0-5 1 -cv 27 ## Senkung für alle Kerne im P-State 1 um eine Stufe
Die Senkung der Spannung sollte pro Schritt nicht größer sein als 0,025 Volt.
Die Einstellung sind über /etc/rc.local zu laden [6], damit sie automatisch bei jedem Neustart zur Verfügung stehen. Beispiel:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /usr/local/sbin/k10ctl 0-3 3 -cv 64 -nv 40 /usr/local/sbin/k10ctl 0-3 2 -cv 48 -nv 38 /usr/local/sbin/k10ctl 0-3 1 -cv 42 -nv 37 /usr/local/sbin/k10ctl 0-3 0 -cv 36 -nv 36 exit 0
Die Stabilität der gewählten Spannung kann mit dem Benchmark mprime (mprimeVERSION.tar.gz oder mprimeVERSION-linux64.tar.gz ) getestet werden. Die Archivdatei kann in ein beliebiges Verzeichnis entpackt[1] werden. Sobald mprime entpackt wurde und man mittels Terminal[4] in das Verzeichnis, in dem sich mprime befindet gewechselt hat, kann mprime nun gestartet[7] werden.
./mprime
In einem zweiten Terminalfenster sollte mit top kontrollieren, ob mprime auch auf allen Kernen läuft (100% bei einem Kern, 200% bei zwei usw.).
Diese Revision wurde am 3. August 2015 20:07 von aasche erstellt.