Ich versuche hier mal ne Anleitung zum herabsetzen der CPU Spannung mit dem Tool k10ctl niederzuschreiben.
Falls ein Programm läuft das die CPU taktet am besten erst mal ausschalten.
Bei Easyvdr geht es unter System, Einstellung, CPU_Powersafe: „CPU-Freq“ auf nein stellen und Rechner neu starten.
Benötigt wird das Kernelmodul msr (modprobe msr).
Das Programm findet ihr hier:
http://www.ztex.de/misc/k10ctl.e.html
Entpackt es und geht in den Ordner k10ctl.
Zusätzlich habe ich noch das Programm mprime http://www.mersenne.org/freesoft/ heruntergeladen und in den Ordner k10ctl entpackt.
Eins vorweg der grundsätzliche Befehl ist k10ctl, als erste Option muss man die Anzahl der Kerne angeben.
Also mit
1 Kern k10ctl 0 (bei meinen Sempron)
2 Kern k10ctl 0-1
3 Kern k10ctl 0-2
4 Kern k10ctl 0-3
Mit dem Befehl ./k10ctl 0 (bei 2 Kernen k10ctl 0-1…) last ihr euch die wichtigsten Informationen anzeigen.
easyVDR:/k10ctl# ./k10ctl 0
VID interface mode: serial
CPU0
Current P-State: 0 Fastest P-State: 0
NbVid NbDid CpuVid CpuDid CpuFid UNb CpuMult UCpu PCore
P-State 0: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV 39750mW
P-State 1: 30 0 26 0 3 1175.0mV 9.50000 1225.0mV 30258mW
P-State 2: 30 0 34 1 14 1175.0mV 7.50000 1125.0mV 26438mW
P-State 3: 30 0 40 1 0 1175.0mV 4.00000 1050.0mV 14175mW
Low Limit: 124 1 124 0.0mV 0.50000 0.0mV
High Limit: 18 1 18 1325.0mV 13.50000 1325.0mV
Target: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Current: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Alles anzeigen
Wichtig sind hier die:
- P-State das sind die 4 Geschwindigkeitsstufen die meine CPU unterstüzt.
- CpuVid das ist der Wert mit dem ich die Spannung verändern kann bei mir geht es von 18 bis 124. Je höher der Wert desto niedriger die CPU-Spannung.
- UCpu ist die Voltangabe mit der die CPU in diesen P-State angesprochen wird.
Jetzt geht’s los
Ich ändere erst die Werte für P-State 3 ab:
./k10ctl 0
Startwert:
easyVDR:/k10ctl# ./k10ctl 0
VID interface mode: serial
CPU0
Current P-State: 0 Fastest P-State: 0
NbVid NbDid CpuVid CpuDid CpuFid UNb CpuMult UCpu PCore
P-State 0: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV 39750mW
P-State 1: 30 0 26 0 3 1175.0mV 9.50000 1225.0mV 30258mW
P-State 2: 30 0 34 1 14 1175.0mV 7.50000 1125.0mV 26438mW
P-State 3: 30 0 40 1 0 1175.0mV 4.00000 1050.0mV 14175mW
Low Limit: 124 1 124 0.0mV 0.50000 0.0mV
High Limit: 18 1 18 1325.0mV 13.50000 1325.0mV
Target: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Current: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Alles anzeigen
Jetzt erhöhe ich den CpuVid Wert auf 48:
./k10ctl 0 3 -cv 48 (Die 3 Bedeutet das ich den P-State 3 anspreche.)
Jetzt kontrolliere ich die Werte
./k10ctl 0
easyVDR:~# /k10ctl/k10ctl 0
VID interface mode: serial
CPU0
Current P-State: 3 Fastest P-State: 0
NbVid NbDid CpuVid CpuDid CpuFid UNb CpuMult UCpu PCore
P-State 0: 30 0 38 0 11 1175.0mV 13.50000 1075.0mV 32250mW
P-State 1: 30 0 48 0 3 1175.0mV 9.50000 950.0mV 23465mW
P-State 2: 30 0 52 1 14 1175.0mV 7.50000 900.0mV 21150mW
P-State 3: 30 0 48 1 0 1175.0mV 4.00000 950.0mV 12825mW
Low Limit: 124 1 124 0.0mV 0.50000 0.0mV
High Limit: 18 1 18 1325.0mV 13.50000 1325.0mV
Target: 30 0 60 1 0 1175.0mV 4.00000 800.0mV
Current: 30 0 60 1 0 1175.0mV 4.00000 800.0mV
Alles anzeigen
Wenn die Werte OK sind aktiviere ich den P-State 3 mit:
./k10ctl 0 3
Jetzt teste ich 3 Minuten mit mprime ob der Prozessor stabil läuft.
./mprime –t
Wenn es keine Fehler gibt oder der Rechner nicht einfriert kann ich den -cv Wert weiter erhöhen. Wichtig ist aber das ich nach jeder Änderung am -cv Wert den P-State wieder mit ./k10ctl 0 3 aktiviere, sonst erkennt er die Veränderung nicht.
Das Spiel kann ich solange fortsetzen bis mprime Berechnungsfehler hat, oder der Rechner einfriert. Bei mir war es der Wert 64.
Ich habe dann den Wert sicherheitshalber um 4 Punkte reduziert, aktiviert und mprime nochmal 15 Minuten laufen lassen.
Wenn es keine Fehler gibt hat man den Wert für P-State 3 und kann so auch für die anderen drei P-State vorgehen.
Hier mal meine Werte:
CPU0
Current P-State: 0 Fastest P-State: 0
NbVid NbDid CpuVid CpuDid CpuFid UNb CpuMult UCpu PCore
P-State 0: 30 0 38 0 11 1175.0mV 13.50000 1075.0mV 32250mW
P-State 1: 30 0 48 0 3 1175.0mV 9.50000 950.0mV 23465mW
P-State 2: 30 0 52 1 14 1175.0mV 7.50000 900.0mV 21150mW
P-State 3: 30 0 60 1 0 1175.0mV 4.00000 800.0mV 10800mW
Low Limit: 124 1 124 0.0mV 0.50000 0.0mV
High Limit: 18 1 18 1325.0mV 13.50000 1325.0mV
Target: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Current: 30 0 18 0 11 1175.0mV 13.50000 1325.0mV
Alles anzeigen
Jetzt habe ich die 4 Werte die ich benötige um die Spannung beim Rechnerstart anzupassen.
Ich sorge dafür das beim Start des Rechners das Kernelmodul msr automatisch gestartet wird(Bei Easyvdr in /etc/modules den Wert msr unten einfügen).
Diese Befehle müssen nach dem Start vom msr Modul erfolgen(Bei Easyvdr einfach in /etc/init.d/RCStartBeforVDR.d/ RCStartPersonal einfügen).
/k10ctl/k10ctl 0 0 -cv 38
/k10ctl/k10ctl 0 1 -cv 48
/k10ctl/k10ctl 0 2 -cv 52
/k10ctl/k10ctl 0 3 -cv 60
Jetzt benötige man noch ein Programm(PowernowK8 ) das automatisch die unterschiedlichen Geschwindigkeitsstufen einstellt. Bei Easyvdr stellt man dafür einfach wieder in den Powersafe Einstellung bei CPU-Freq auf ja.
Mir ist nicht klar wie es sich bei Prozessoren verhält die mehr als ein Kern haben. Ob man die Einstellungen für jeden Kern einzeln machen muss oder ob meine Methode reicht, dass müsst ihr ausprobieren. Ich habe aber irgendwo mal gelesen das die Kerne bei AMD K10 Prozessoren nicht mit unterschiedlichen Spannungen angesprochen werden können, ob es stimmt keine Ahnung.
Northbridge:
Man kann mit dem obigen vorgehen auch die Spannung der northbridge absenken. Dazu ändert man nur den Wert cv in nv. Nur ist mir leider nicht ganz klar wie man die Stabilität der northbridge testen kann. Falls da jemand eine Idee hat kann er sich gerne melden dann ergänz ich diesen Beitrag.
Verbesserungsvorschläge nehme ich gerne an.
grüße azuver