Archiv/k10ctl

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Archive entpacken

  2. Root-Rechte

  3. Ein Terminal öffnen

  4. Umgang mit Kernelmodulen (Treibern)

  5. Einen Editor öffnen

  6. Ein Programm ohne Menüeintrag starten

Inhaltsverzeichnis
  1. Installation
  2. Konfiguration
  3. Wichtige Befehle
  4. Undervolting
  5. Beispiel - Laden von festen Einstellungen
  6. Stabilität testen
  7. Links

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).

Achtung!

Die Änderung der Spannung und Taktfrequenz kann zu Schäden an der Hardware oder zu einem instabilen System führen.

Installation

Kompilieren

Ü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.

Konfiguration

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

Wichtige Befehle

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

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.

Aktuelle Werte

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.

Spannung um eine Stufe senken

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 

Achtung!

Die Senkung der Spannung sollte pro Schritt nicht größer sein als 0,025 Volt.

Beispiel - Laden von festen Einstellungen

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

Stabilität testen

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.).