Multiplattform-Undervolting mit TurionPowerControl

Artikel-Index:

Verwendung unter Linux

Auf der Pro­jekt­sei­te fin­det sich eine Down­load­op­ti­on vor­kom­pi­lier­ter Pake­te für Ubun­tu. Auf unse­rem Test­sys­tem mit Debi­an lie­fen die­se Pake­te eben­falls, für den dau­er­haf­ten Ein­satz emp­fiehlt es sich aller­dings, das Tool aus dem Quell­text zu kom­pi­lie­ren. Wir stel­len bei­de Vari­an­ten vor:

Voraussetzungen erfüllen:

Die bei­den Pake­te CPUID und MSR-Tools müs­sen instal­liert und gela­den sein. Dies erreicht ihr unter Debi­an und Ubun­tu mit den fol­gen­den Befehlen:

sudo apt-get install msr-tools cpuid

sudo mod­pro­be msr

sudo mod­pro­be cpuid

Nach Aus­füh­ren des Befeh­les “find /dev/cpu” soll­ten dann fol­gen­de Zei­len erscheinen:

find /dev/cpu
/dev/cpu
/dev/cpu/0
/dev/cpu/0/msr
/dev/cpu/0/cpuid
/dev/cpu/microcode

Wich­tig sind die bei­den her­vor­ge­ho­be­nen Ein­trä­ge. Nun fügen wir die bei­den Pake­te der Modu­les-Lis­te hin­zu, damit sie immer gela­den wer­den. Dazu öff­nen wir die Datei /etc/modules mit Root-Rech­ten in einem Text­edi­tor wie zum Bei­spiel Gedit.

gedit /etc/modules

Die Datei sieht auf einem fri­schen Sys­tem wie folgt aus:

# /etc/modules: ker­nel modu­les to load at boot time.
#
# This file con­ta­ins the names of ker­nel modu­les that should be loaded
# at boot time, one per line. Lines begin­ning with “#” are ignored.

Wir fügen nun msr und cpuid hin­zu, das Gan­ze soll­te dann wie folgt aussehen:

# /etc/modules: ker­nel modu­les to load at boot time.
#
# This file con­ta­ins the names of ker­nel modu­les that should be loaded
# at boot time, one per line. Lines begin­ning with “#” are ignored.

msr
cpuid

Außer­dem soll­te der fol­gen­de Ein­trag gesucht werden:

find /proc/bus/pci/00/18.3

/proc/bus/pci/00/18.3

Nun kann es an die eigent­li­che Anwen­dung gehen.

Verwenden der fertigen Binärdatei

Der Auf­ruf erfolgt direkt über die Kon­so­le. Man wech­selt in das “bin”-Verzeichnis des Pakets und führt die Anwen­dung aus. Gibt man kei­ne Optio­nen an, so gibt das Tool alle mög­li­chen Ein­stel­lun­gen aus. Mit dem Prä­fix “-temp” kön­nen grund­sätz­li­che Infor­ma­tio­nen über den Pro­zes­sor und die Dioden­tem­pe­ra­tur aus­ge­le­sen wer­den. In unse­rem Fall sieht das wie folgt aus:

./TurionPowerControl ‑temp
Turi­onPower­Con­trol 0.44-rc2 (tpc‑0.44-rc2-r144)
Turi­on Power Sta­tes Opti­miza­ti­on and Con­trol — by blackshard

Detec­ted pro­ces­sor: Fami­ly 10h Processor
Machi­ne has 4 nodes
Pro­ces­sor has 6 cores
Pro­ces­sor has 5 p‑states
Pro­ces­sor has 0 boost states
Pro­ces­sor tem­pe­ra­tu­re slew rate:9.0°C

Tem­pe­ra­tu­re table:
Node 0    C0:43    C1:43    C2:43    C3:43    C4:43    C5:43
Node 1    C0:43    C1:43    C2:43    C3:43    C4:43    C5:43
Node 2    C0:49    C1:49    C2:49    C3:49    C4:49    C5:49
Node 3    C0:49    C1:49    C2:49    C3:49    C4:49    C5:49

Done.

Selbst kompilieren

Wir wech­seln in das “src”-Verzeichnis und füh­ren mit Root-Rech­ten die fol­gen­den Befeh­le aus:

apt-get install build-essen­ti­al ncurses-dev

make

make install

Sofern alles kor­rekt funk­tio­niert hat, kann die Anwen­dung nun über “tpc” auf­ge­ru­fen wer­den. Zur kor­rek­ten Funk­ti­on sind immer Root-Rech­te erforderlich.

Anwendungsbeispiele

Im Fol­gen­den wur­den die Befeh­le dem Test­sys­tem ent­spre­chend gewählt. Bei nor­ma­len Desk­top­sys­te­men kann die Opti­on “node all” weg­ge­las­sen werden.

Absen­ken der Spannung

Um die Span­nung zum Bei­spiel auf 1,0 V abzu­sen­ken, gibt man am ein­fachs­ten die­sen Befehl ein:

tpc ‑set node all core all psta­te 0 vol­ta­ge 1.000

Ändern der Taktfrequenz

Zur Begren­zung des Takts auf 2 GHz dient jener Befehl:

tpc ‑set node all core all psta­te 0 fre­quen­cy 2000 vol­ta­ge 1.000

Selbst­ver­ständ­lich kön­nen auch wei­te­re P‑States und ein­zel­ne Cores ange­spro­chen wer­den. Wei­te­re Bei­spie­le fin­den sich dazu im aus­führ­li­chen Read­me des Tools.

Möch­te man eine Ein­stel­lung dau­er­haft im Sys­tem ver­an­kern, kann der gewünsch­te Auf­ruf in die Datei “/etc/rc.local” ein­ge­tra­gen wer­den. Die dort ein­ge­tra­ge­nen Befeh­le wer­den immer mit Root-Rech­ten aus­ge­führt. Man soll­te vor­her aus­gie­big tes­ten, ob die gewähl­te Ein­stel­lung auch wirk­lich sta­bil läuft!