Undervolting von AMD-CPU unter FreeBSD 7.0 RC1 über ModelSpezificRegister

smax

Member
Hallo,

ich beschäftige mich schon seit länger Zeit mit Undervolting von meiner AMD-CPU unter verschiedenen Betriebssystemen um den Stromverbrauch meines Rechners etwas zu senken.
Für Windows und Linux habe ich fertige Tools verwendet - für FreeBSD hats leider noch nichts fertiges gegeben. Nun habe ich einen Weg gefunden, Undervolting auch unter FreeBSD 7.0 RC1 durchzuführen zu können.
Falls es jemanden interessiert, hier habe ich es dokumentiert, weil es in diesem Unterforum speziell um Stromsparsysteme geht und ich dort schon einige Beiträge verfasst habe.

- smax
 
Zuletzt bearbeitet:
Beeinflusst soetwas nicht die Stabilität?

Wenn man es richtig macht, dann nicht. Jede CPU ist da verschieden, und man muss sich an die minimale Spannung die verwendet werden kann, herantasten. Ausserdem baut der Hersteller auch natürlich eine gewisse Reserve ein. Ganz gut zu undervoltende CPUs verkauft dann z.B. Intel teuer als LowVoltage und UltraLowVoltage Versionen.
Betreibe Untervolting unter Windows XP, (Slackware-) Linux und jetzt unter FreeBSD bisher ohne Probleme.
 
Beeinflusst soetwas nicht die Stabilität?
Tut es. Sonst würde es der Hersteller standardmäßig für die CPU freigeben. Mit sehr sparsamen low-voltage und ultra-low voltage CPUs gibt's nämlich richtig Geld zu verdienen.

Man kann bei der geringsten CPU-Güteklasse (Desktop-CPUs) ohne die Zuverlässigkeit zu senken die Spannung nur bei deutlich abgesenkten Taktraten senken. Und das haben die Hersteller schon ausgereizt mit EIST, Cool 'n Quiet usw. Hohe Taktfrequenz und niedrige Spannung sind wegen des kapazitiven Verhaltens der CMOS-Schaltungen nicht gleichzeitig ausreizbar. Und wenn man billige Desktop-CPUs verwendet sind die eben nicht auf geringe Leckleistung selektiert, sondern für hohe Taktfrequenzen bei gegebener Leistungsaufnahme. Eine denkbar suboptimale Basis für low-power Rechner. Und die bei AMD-Rechnern häufig verwendeten nForce-Chipsätze sind auch nicht gerade Stromsparer.

Möchte man richtig Strom/Hitze/Lärm sparen, kann man auch gleich mobile CPUs verwenden, ohne Bastelei und bei garantierter Stabilität. Und wenn man unbedingt Desktop-CPUs sparsamer machen will, kann man auch EIST und CnQ verwenden und die CPU auf die low-power Zustände locken. Mit voller Stabilität, ohne Bastelei und Zeitaufwand...
 
Zuletzt bearbeitet:
Tut es. Sonst würde es der Hersteller standardmäßig für die CPU freigeben. Mit sehr sparsamen low-voltage und ultra-low voltage CPUs gibt's nämlich richtig Geld zu verdienen.
Meiner Meinung und Erfahrung nach beeinflusst es die Stabilität nicht - natürlich nur dann, wenn man die Minimale Spannung für jede einzelnen CPU herausfindet.

Man kann bei der geringsten CPU-Güteklasse (Desktop-CPUs) ohne die Zuverlässigkeit zu senken die Spannung nur bei deutlich abgesenkten Taktraten senken. Und das haben die Hersteller schon ausgereizt mit EIST, Cool 'n Quiet usw. Hohe Taktfrequenz und niedrige Spannung sind wegen des kapazitiven Verhaltens der CMOS-Schaltungen nicht gleichzeitig ausreizbar. Und wenn man billige Desktop-CPUs verwendet sind die eben nicht auf geringe Leckleistung selektiert, sondern für hohe Taktfrequenzen bei gegebener Leistungsaufnahme.
Der powerd ist ja das Cool 'n Quiet unter FreeBSD. Was ist jedoch wenn schon im BIOS falsche Spannungen für den Prozessor stehen(?), dann verwendet auch der powerd diese faslchen Werte!

Eine denkbar suboptimale Basis für low-power Rechner. Und die bei AMD-Rechnern häufig verwendeten nForce-Chipsätze sind auch nicht gerade Stromsparer.
Dieser Meinung kann ich mich auch nicht anschliessen - es kommt nämlich darauf an, welchen nForce Chipsatz man verwendet. Mein nForce 630a/7050 ist meiner Meinung nach der stromsparenste Chipsatz für die AMD K8 Plattform - natürlich ist er nicht der schnellste, aber für meinen Einsatzzweck schnell genug. Die knapp 20 W die ich im Idle erreiche verbraucht schon mancher Intel Chipsatz alleine :D.

Möchte man richtig Strom/Hitze/Lärm sparen, kann man auch gleich mobile CPUs verwenden, ohne Bastelei und bei garantierter Stabilität. Und wenn man unbedingt Desktop-CPUs sparsamer machen will, kann man auch EIST und CnQ verwenden und die CPU auf die low-power Zustände locken. Mit voller Stabilität, ohne Bastelei und Zeitaufwand...
Natürlich kann man auch mobile CPUs verwenden, jedoch ist das die teuerste Möglichkeit Strom zu sparen.

Je besser bei einem Hersteller der Fertigungsprozess für eine bestimmte CPU funktioniert (also je höher das Stepping ist (aktuell AMD -> G2, Intel -> M0)), umso mehr höherwertige CPUs wirft die Fertigung ab und daher werden auch die sehr guten Exemplare mit niedriger Frequenz verkauft, obwohl sie weitaus mehr vertragen würden.

Hier gibt es sehr viele Praxisbeispiele, dass das Untervolting sehr gut funktioniert, egal unter welchen Betriebssystem.
 
Ich für meinen Teil würde es begrüssen, einen modifizierten powerd in den ports zu sehen. Zur Zeit drossele ich den Stromhunger eines Laptops und des Desktops mit einer gepatchten DSDT... nicht sehr elegant. Zur Stabilität kann ich nur sagen, das es auf den Einzelfall ankommt. Bei meinem Acer Notebook, der thermaltechnisch eine völlige Misskonzeption ist, fährt FreeBSD <6.0 nach etwa 5min runter mit einer ACPI Warnung. Die CPU erreicht über 85°, der ACPI hot_temperature status wird getriggert und bumm. Die Stabilität kann in solchen (Extrem-)Einzelfällen also sogar erhöht werden ;)

Nichtsdestotrotz stimme ich zu, das dies im Allgemeinfall der Stabilität eher abträglich ist und auf missionskritischen Servern/Workstations nichts verloren hat (da sollte man sich eher an den Hersteller der Hardware wenden, heh)
 
Ich habe das ganz vergessen zu schreiben, aber ich persönlich sehe das Einsatzgebiet eines um Undervolting-Funktionen erweiterten powerd natürlich auch eher für Notebooks, Desktops und kleinere (Home-)Server.
Auf extrem missionskritischen Servern/Workstations würde wahrscheinlich kein Admin der Welt auf die Idee kommen, die CPU zu undervolten - auch ich nicht :D.
 
Zuletzt bearbeitet:
Ich verwende acpi_ppc (ACPI Processor Performance Control Module for FreeBSD),
ist hier (K8) zu finden. Hier nochmal die HP: http://www.spa.is.uec.ac.jp/~nfukuda/software/

Installieren, modul laden, in rc.conf noch einfügen und das wars!
Spannung und MHZ gehen runter.

Gruß

Das Modul kannte ich noch nicht :).
Nach einem ersten schnellen Blick auf den Quellcode kommt mir die funktionsweise so vor, das die Spannung 'nur' im Rahmen von Cool 'n Quiet (bei AMD) runtergeht d.h. die CPU wird nicht wirklich undervoltet, sondern im Rahmen der Spezifikation von C 'n Q betrieben, oder hast du irgendwo ein Configfile, wo du deine gewünschten VoltageIDs für bestimmte CPU-Frequenzen (FIDs) angeben kannst?
Ich kenne jetzt die älteren FreeBSD Versionen nicht (erst ab 6.0), aber inzwischen (also ab Version 6.x) hat diese Regelung meiner Meinung nache der powerd übernommen.
 
.....im Rahmen von Cool 'n Quiet (bei AMD) runtergeht......

richtig, auf ca. 0.8Volt bei 1GhZ

....die CPU wird nicht wirklich undervoltet.....

"nicht wirklich" ist warscheinlich falsch ausgedrückt, sollte vermutlich "nicht nach wunsch geändert werden" heisen


.....oder hast du irgendwo ein Configfile, wo du deine gewünschten VoltageIDs für bestimmte CPU-Frequenzen (FIDs) angeben kannst?
.....



.....aber inzwischen (also ab Version 6.x) hat diese Regelung meiner Meinung nache der powerd übernommen.

powerd hab ich mir noch nicht angeschaut. Sollte ich mal bei gelegenheit machen.

Gruß
 
"Undervolting" ist so ziemlich das Gleiche wie "Overclocking", nur dass die Herstellerspezifikation an einer anderen Stelle verlassen wird, um die Eigenschaften der CPU zu ändern. Der Effekt ist der gleiche, man gibt Stabilität auf.

Und auch bei Notebooks und Desktop-PCs finde ich es wenig sinnvoll, seine Daten zu gefährden. Auch mit der Standardbegründung der Overclocker/Undervolter/$PC-Bastler, dass es bei ihnen immer einwandfrei funktioniere wird es nicht besser. Wenns tatsächlich keine Probleme machen würde, würde der CPU-Hersteller es schon gleich ab Werk so verkaufen. Es gibt nämlich auch mit besonders sparsamen CPUs richtig Geld zu verdienen. Und selbst ab Werk sind CPUs schon Fehler-behaftet genug, man schaue nur mal auf die Takt-abhängigen Bugs der 45 nm-Generation von Intel oder das ebenso Takt-abhängige TLB-Problem bei AMDs Quadcores.

Dabei geht das Ganze doch heute auch oftmals viel einfacher durch den Einsatz von EIST/CnQ. Bei FreeBSD dann eben mit powerd(8). Damit kann man ohne viel Zauberei 80% des Erfolges von Undervolting erreichen, ohne die Stabilität zu gefährden und innerhalb der Spezifikation und ohne viel Zeit zu verschwenden.
 
Zuletzt bearbeitet:
"Undervolting" ist so ziemlich das Gleiche wie "Overclocking", nur dass die Herstellerspezifikation an einer anderen Stelle verlassen wird, um die Eigenschaften der CPU zu ändern. Der Effekt ist der gleiche, man gibt Stabilität auf.
Also noch einmal, meiner Meinung und Praxiserfahrung nach leidet die Stabilität nicht, wenn man es richtig macht. Ich gehe mit einem frisch installierten OS und ohne Datenplatten so vor:

* zuerst stellt man den niedrigsten Takt der CPU fix ein.
* dann fängt man an, die Spannung in den kleinstmöglichen Schritten zu erniedrigen.
* es gibt dann einen Punkt, wo der Rechner einfriert oder abstürzt.
* nach dem Reboot wird nun die Spannung auf den letzten stabilen Wert eingestellt und die Frequenz bleibt fix auf den vorher eingestellten Wert.
* nun wird ein Benchmarkprogramm (mprime ist sehr gut geeignet) gestartet, der den Rechner ordentlich auslastet.
* wenn nun nach einigen Stunden kein Fehler auftritt, dann wird diese Frequenz und diese Spannung für Stabil erklärt.
* falls ein Fehler auftretten sollte, dann wird die Spannung wieder um einen Schritt erhöht -> ist bei mir aber noch nie vorgekommen.
* bei den anderen möglichen CPU-Frequenzen werden dieselben Schritte durchgeführt, sofern bei denen auch undervolting zur Anweundung kommen soll.


Und auch bei Notebooks und Desktop-PCs finde ich es wenig sinnvoll, seine Daten zu gefährden. Auch mit der Standardbegründung der Overclocker/Undervolter/$PC-Bastler, dass es bei ihnen immer einwandfrei funktioniere wird es nicht besser.
Ich gefärde meine Daten damit nicht, viel wahrscheinlicher ist ein Plattenausfall oder dergleichen.

Wenns tatsächlich keine Probleme machen würde, würde der CPU-Hersteller es schon gleich ab Werk so verkaufen. Es gibt nämlich auch mit besonders sparsamen CPUs richtig Geld zu verdienen. Und selbst ab Werk sind CPUs schon Fehler-behaftet genug, man schaue nur mal auf die Takt-abhängigen Bugs der 45 nm-Generation von Intel oder das ebenso Takt-abhängige TLB-Problem bei AMDs Quadcores.
Du kannst ja die teuren CPUs der Hersteller kaufen (die freuen sich sicher), ich nutze eigentlich nur die gute Herstellungsverfahren der Hersteller aus.
Die CPU-Hersteller können nicht alle CPUs als teure CPUS verkaufen, solange es eine Konkurrenz und die eigenen Marketingabteilungen gibt, die die CPUs in unterschiedliche Leistungs und Preisstufen einteilen.

Dabei geht das Ganze doch heute auch oftmals viel einfacher durch den Einsatz von EIST/CnQ. Bei FreeBSD dann eben mit powerd(8). Damit kann man ohne viel Zauberei 80% des Erfolges von Undervolting erreichen, ohne die Stabilität zu gefährden und innerhalb der Spezifikation und ohne viel Zeit zu verschwenden.
Da es erst ein erstes funktionierendes Konzept ist, ist natürlich nicht auf die Benutzerfreundlichkeit geachtet worden. Ich mache keine Zauberei und die Zeit nehme ich mir auch.

Es wird ja keiner gezwungen undervolting anzuwenden, jedoch sollte jenen Leuten, die es ausprobieren bzw benutzen wollen, zumindest die Möglichkeit gegeben werden.
 
Ich gefärde meine Daten damit nicht, viel wahrscheinlicher ist ein Plattenausfall oder dergleichen.

Und wenn der Controller bei solchen Aktionen falsche Daten gefüttert bekommt? Dann lösen sich schnell man ganze Dateisysteme in Rauch auf...
 
Hallo zusammen

Aufgrund der Erfahrung mit Undervolting unter anderen Betriebssystemen kann ich bestätigen, dass weder die Stabilität leidet, noch die Daten gefährdet sind. Stattdessen steigt die Akkulaufzeit und sinkt der Lärmpegel. Abgesehen davon kommt es auch eher selten vor, dass sich ganze Dateisysteme wegen eines Absturzes "in Rauch auflösen". Wichtige Daten sollte man eh nicht nur auf einem Notebook speichern. Da gibt deutlich realistischere Risiken.
Mich freut es jedenfalls, dass es Ansätze zum Undervolten unter BSD gibt, das macht das System noch interessanter für meinen Laptop(hab allerdings eine Intel Cpu). Übrigens verlangt ja niemand, dass Undervolting Standartmäßig aktiv sein sollte oder so.
 
Zurück
Oben