FreeBSD undervolting

MCP

Member
Hallo erstmal...

Ich möchte den Stromverbrauch meines Fileservers senken und habe daher versucht die KErnspannung des Prozessors abzusenken (bei gleichzeitiger Verringerung der Taktfrequenz)... mein Board gibt da einiges her - Nur scheint FreeBSD der im BIOS eingestellte WErt herzlich egal zu sein, jedenfalls gibt sysctl immer noch 2.2 bzw 1.0 GHz (Last/Idle) statt der eingestellten 2GHz an und ich vermute mal das es sich auch unbeeinfruckt von der im BIOS eingestellten Kernspannung zeigt.

Meine Frage ist also: gibt es eine Möglichkeit unter FreeBSD die Frequenz und Spannung zu ändern? Powerd scheint nach Lektüre der Manpage nicht in der Lage zu sein die CnQ-Attribute zu ändern. Im Prinzip würde es mir ausreichen die Idle-Werte zu ändern.
 
Danke erstmal für den Wilkommensgruß, bin langjähriger Mitleser ;)

Den Link hatte ich schon per google gefunden, hab mich halt nur gefragt ob es eine Möglichkeit gibt die Bios-Werte zu übernehmen; das kommt mir einfacher vor als den powerd zu patchen.
 
Die manpage von cpufreq sieht aus als könnte da was gehen, hat da jemand schonmal mit rumgespielt / links auf tasche?
 
Undervolting geht damit nicht. Cpufreq läuft streng im Rahmen der Spezifikationen.
Naja, wenn ich das richtig verstehe arbeitet cpufreq erstmal überhaupt nicht innerhalb irgendwelcher Spezifikationen, sondern verlässt sich auf das was der cpu-driver behauptet, in meinem Fall powernow. Da (powernow.c) sehe ich im Quelltext allerdings Kommentare die mich daran glauben lassen das zumindest bei buggy biossen (Melden den Maximalwert nicht) deren Einstellung genommen wird.

Code:
/*
                 * XXX Some bios forget the max frequency!
                 * This maybe indicates we have the wrong tables.  Therefore,
                 * don't implement a quirk, but fallback to BIOS legacy
                 * tables instead.
                 */

Naja war ja auch nur 'ne idee ich werde mir möglicherweise den powerd patch mal antun (der im übrigen auch cpufreq benutzen wird, soviel zur prinzipiellen Spezifikationstreue von cpufreq). Wär halt schöner wenn der powerd das von Hause aus könnte so ist halt bei jedem update frickeln angesagt.
 
Naja war ja auch nur 'ne idee ich werde mir möglicherweise den powerd patch mal antun (der im übrigen auch cpufreq benutzen wird, soviel zur prinzipiellen Spezifikationstreue von cpufreq). Wär halt schöner wenn der powerd das von Hause aus könnte so ist halt bei jedem update frickeln angesagt.
Der Patch vom powerd sollte nur mal die Machbarkeit von undervolting unter FreeBSD demonstrieren (nur für AMD-CPUs).
Derzeit schreibe ich einen Daemon fürs undervolting einer AMD-CPU unter Linux. Dieser Daemon ist so designed, das er mit einem zusätzlichen Modul auch unter FreeBSD funktionieren sollte. Leider wird das aber noch etwas dauern.
 
Derzeit schreibe ich einen Daemon fürs undervolting einer AMD-CPU unter Linux. Dieser Daemon ist so designed, das er mit einem zusätzlichen Modul auch unter FreeBSD funktionieren sollte. Leider wird das aber noch etwas dauern.
Danke erstmal für deine Arbeit!

Ich bin es eigentlich von meinen *nixen gewöhnt das sie machen was und wie ich das will, selbst wenn ich mir dabei in den Fuß schieße - Ich habe mich schon länger gefragt warum ich mich ausgerechnet bei einem so zentralen Thema wie dem Stromverbrauch und dem Leistung/Lebensdauer-Quotienten meines Prozessors doch wieder bevormunden lassen sollte.

Leider habe ich nicht genug Zeit um mich intensiver mit dem Thema zu beschäftigen und werde daher ganz dreist versuchen etwas von deinem Wissen abzugreifen ;) :
Könntest du so nett sein kurz etwas dazu zu schreiben wie das ganze funzt? Was ist zum Beispiel bei einem Prozessor der ganz ohne festen Multiplikator daherkommt wie der X2 5000 Black Edition? Wird da dann doch wieder auf die im BIOS eingestellten Werte zurückgegriffen? Kann man das Teil überhaupt unter FreeBSD über/untertakten? Wenn die Spezifikationen wie bei den aktuellen AMD Prozessoren statt eines konkreten Wertes eine Range angeben (bspw 1.15-1.25V beim 4850e), welcher Wert wird eingestellt?

Konkret überlege ich grade ob ich mir einen 4850e oder einen 5000 Black Edition kaufe und frage mich inwieweit ich überhaupt von den jeweiligen selling points (low wattage vs variabler Multi) profitieren würde.
Ausserdem bezieht sich die TDP bei AMD ja auf absolute Maximalwerte, in meinem Anwendungsszenario ist eher der Unterschied im Idle wichtig und vermute das sich die beiden da nicht mehr viel nehmen.

Wäre sehr dankbar wenn Du da ein wenig Licht ins Dunkel bringen könntest ;)
 
Der 4850e sieht doch mehr als gut aus !

Hab selbst nen X2 5200+ EE, der läuft bei mir mir 2800Mhz bei (default) 1.2V.

Wunderbar kühl.
 
Der 4850e sieht doch mehr als gut aus !
Jo, find ich auch. nur ist natürlich der 5000 black beim gleichen Preis und leicht übertaktet um einiges schneller. Am liebsten wäre mir natürlich eine Möglichkeit unter Last zu übertakten und im Idle noch weiter zu untertakten/volten und da scheint mir tendenziell der 5000 Black bessere Möglichkeiten zu bieten.
Hab selbst nen X2 5200+ EE, der läuft bei mir mir 2800Mhz bei (default) 1.2V.

Wunderbar kühl.
Wie hast du die Übertaktung unter FBSD hingekriegt, die BIOS-Werte werden ja offenbar defaultmässig ignoriert?
 
Hab den HT auf 215 Mhz gestellt. Mit powerd taktet der dann auf krumme Frequenzen, alle aber stabil. z.b. 1075Mhz aus der nidrigsten Stufe.

Da es bei mir mit der default Vcore läuft hab ich keine weiteren Probleme.

Aber generell, wozu noch untervolten bei einer TDP von 45W ? ;)

PS: Die einzelnen Stufen hab ich mit ohne powerd und manueller einstellung der stufe mit sysctl gestestet (prime, ubench ...).
 
Ich bin es eigentlich von meinen *nixen gewöhnt das sie machen was und wie ich das will, selbst wenn ich mir dabei in den Fuß schieße - Ich habe mich schon länger gefragt warum ich mich ausgerechnet bei einem so zentralen Thema wie dem Stromverbrauch und dem Leistung/Lebensdauer-Quotienten meines Prozessors doch wieder bevormunden lassen sollte.
Du wirst doch nicht jedes Programm das du verwendest selber geschrieben oder den Sourcecode kontrolliert haben :D?

Leider habe ich nicht genug Zeit um mich intensiver mit dem Thema zu beschäftigen und werde daher ganz dreist versuchen etwas von deinem Wissen abzugreifen ;) :
Könntest du so nett sein kurz etwas dazu zu schreiben wie das ganze funzt? Was ist zum Beispiel bei einem Prozessor der ganz ohne festen Multiplikator daherkommt wie der X2 5000 Black Edition? Wird da dann doch wieder auf die im BIOS eingestellten Werte zurückgegriffen? Kann man das Teil überhaupt unter FreeBSD über/untertakten? Wenn die Spezifikationen wie bei den aktuellen AMD Prozessoren statt eines konkreten Wertes eine Range angeben (bspw 1.15-1.25V beim 4850e), welcher Wert wird eingestellt?
Wie das genau bei der AMD Blackedition ist kann ich dir leider derzeit nicht sagen, aber es sollte eigentlich funktionieren.
Aber prinzipiell funktioniert mein neues Programm so, dass ich einfach die Informationen die mir die CPU(s) selber (über msr) und der FreeBSD-/Linuxkernel liefert verwende (diese Arbeit haben ja die Kernelentwickler ja bereits gemacht :)). Ich greife also nicht auf die eingestellten BIOS-Werte zurück.
Derzeit kann das Programm nur die Cool'nQuiet Frequenzen nutzen und (noch) nicht selber auswählen. Ich lese also aus den Kernelinterfaces die CPUs, dazugehörigen Cores und die möglichen Frequenzen aus. Dann takte ich den Prozessor mal alle Frequenzen die ich gefunden habe durch und schreibe ein Configfile raus, wo die Frequenzen und zugehörigen Spannungen angeführt sind (das kann man von der CPU direkt auslesen). Jetzt kann der Benutzer dann seine gewünschten Spannung je Frequenz einstellen (es ist natürlich auch overvolting möglich). Dazu gehört dann noch eine Logik, ab welcher CPU-Belastung man rauf-/runtertaktet und wieviele Schritte man aufeinmal rauf und runter geht.

Konkret überlege ich grade ob ich mir einen 4850e oder einen 5000 Black Edition kaufe und frage mich inwieweit ich überhaupt von den jeweiligen selling points (low wattage vs variabler Multi) profitieren würde.
Das musst du selber entscheiden.

Ausserdem bezieht sich die TDP bei AMD ja auf absolute Maximalwerte, in meinem Anwendungsszenario ist eher der Unterschied im Idle wichtig und vermute das sich die beiden da nicht mehr viel nehmen.
Hier findest du Messungen vom Stromverbrauch vieler AMD-CPUs. Im 11 Kapitel findest du den Prozessorverbrauch alleine.

Wäre sehr dankbar wenn Du da ein wenig Licht ins Dunkel bringen könntest ;)
Ich hoffe das ich etwas Licht gespendet habe :D.
 
Zurück
Oben