no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende Überarbeitung Nächste Überarbeitung | |||
— | content:undervolting [2021/12/30 19:42] – [Stabiler Betrieb im P0] Daniel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Undervolting ====== | ||
+ | |||
+ | ===== Die Theorie ===== | ||
+ | |||
+ | ==== Wozu braucht man Undervolting? | ||
+ | |||
+ | Das Undervolting ist ein sehr gutes Mittel, um ein System effizienter und leistungsfähiger zu machen, ohne hierbei Gefahr zu laufen, die Hardware wie Prozessor, Mainboard oder RAM irreperabel zu schädigen, was beim Overclocking durchaus passieren kann. Es lässt sich bei allen heutigen Systemen - ob alt, oder neu - anwenden und hat als positive Nebenwirkung, | ||
+ | |||
+ | ==== Die Taktung ==== | ||
+ | |||
+ | Zuerst ein wenig Hintergunderklärung: | ||
+ | |||
+ | In der allermeisten Zeit läuft ein heutiges PC- System nur mit einem Bruchteil seiner maximale Taktrate, um Energie zu sparen. Der Nutzer merkt dies nicht - in dem Moment, wo die volle Leistung gebraucht wird, schaltet der Prozessor sehr schnell um und steigert seinen Takt bis zur seiner Maximalgrenze. | ||
+ | |||
+ | Egal aber, in welchem Leistungsbereich sich der Kern gerade befindet: Seine Leistungsaufnahme (gemessen in Watt) ist immer Abhängig von der aktuellen Taktung und der dazugehörigen Spannung. Die Stromstärke - der dritte Leistungsfaktor - lässt sich nicht beeinflussen, | ||
+ | |||
+ | ==== Das thermale Budget ==== | ||
+ | |||
+ | Je mehr Leistung der Prozessor verbraucht, desto höher ist die Wärme, die er erzeugt. Hierbei können sehr große Wärmemengen auf einem sehr kleinen Bereich entstehen. Kein heutiger PC- Prozessor kann länger als ein paar Sekunden die volle Leistung liefern und schaltet zu seinem eigenen Schutz die Taktzahl herunter, sobald die Wärme zu groß wird, um sich zu schützen. | ||
+ | |||
+ | ==== Das Overclocking ==== | ||
+ | |||
+ | Beim Overcklocking, | ||
+ | |||
+ | Zusätzlich führt der höhere Takt und dadurch größere Leistungsaufnahme dazu, dass bei gleicher Spannung ggfs. nicht genug Strom zur Verfügung steht. Hierdurch wird der Prozessor instabil und kann abstürzen. Dies kann man ausgleichen, | ||
+ | |||
+ | Diese Methode bringt also nur etwas, wenn man z.B. eine bessere Kühlung verbaut oder nur kurze Leistungsspitzen benötigt. In andere Fällen ist das Overclocking eher Energieverschwendung ohne großen Nutzen mit der großen Gefahr, den Prozessor oder das Mainboard im schlimmsten fall zu zerstören. | ||
+ | |||
+ | ==== Undervolting ==== | ||
+ | |||
+ | Ganz anders das Undervolting: | ||
+ | |||
+ | Der Prozessor bleibt in so jederzeit seiner Norm bezüglich Taktung und seine Leistung bleibt exakt gleich - es gibt keinen Einfluss auf die Rechenoperationen. Durch die niedrigere Spannung kann im schlimmsten Fall eine Berechnung nicht durchgeführt werden - was in leichten Fällen vom Betriebssystem bemerkt und wiederholt wird - oder schlimmstenfalls zum Aufhängen des Rechners führt. Nach einem Neustart, wird aber die alte Spannung wieder eingeschaltet und es ist kein Schaden entstanden. | ||
+ | |||
+ | Als sehr positiven Nebeneffekt kann der Rechner aufgrund der geringerem Wärmeerzegung in der maximale Leistungsstufe, | ||
+ | |||
+ | Undervolting ist damit das Mittel der Wahl, um Energie zu sparen und zeitgleich mehr Leistung zu erhalten. | ||
+ | |||
+ | ==== Warum muss man das selbst einstellen? ==== | ||
+ | |||
+ | Man kann sich nun Fragen: Warum stellen nicht die Hersteller gleich diesen Wert optimal ein? Nun die Antwort ist, dass jeder Prozessor sich in unterschiedlichen Situationen ganz leicht anders verhält. Das Herausfinden, | ||
+ | |||
+ | ==== Fazit ==== | ||
+ | |||
+ | Wir wissen nun: 95% aller Rechner können durch Undervolting ohne Änderung von gefährlichen Werten erheblich Leistungsfähiger und zeitgleich Stromsparender werden, als ohne. Im Folgenden wird gezeigt, wie das in der Praxis geht. | ||
+ | |||
+ | ===== Die Praxis ===== | ||
+ | |||
+ | Ich zeige anhand meines alten Testrechners auf welchem ein Linux/ | ||
+ | |||
+ | ==== Ausgangslage ==== | ||
+ | |||
+ | Zuerst sollte man die wichtigen **Standardwerte** herausfinden und sich **notieren**. Dies geht so: | ||
+ | < | ||
+ | | ||
+ | 0 1 | ||
+ | 1 1 9 0 | ||
+ | 2 1 3 0 | ||
+ | 3 1 0 1 | ||
+ | 4 1 0 0 0 8.00x 1600MHz | ||
+ | |||
+ | </ | ||
+ | |||
+ | Diese Tabelle zeigt die wichtigen Werte: Taktung (CpuFreq), Spannung (CpuVolt) und Leistung (CpuPower) pro Leistungslevel (Pstate). | ||
+ | |||
+ | Das Programm lässt die Änderung der Spannung pro Level -pX durch den Parameter -vXX (CpuVid) zu. Ein **höherer Wert ist eine NIEDRIGERE Spannung**. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Setzt die Spannung für den Pstate 0 auf den **nächstniedrigeren** Wert: | ||
+ | < | ||
+ | | ||
+ | 0 1 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Hinweise: zum Ausprobieren nur in einzelnen Schritten testen und zuerst die Theorie durchlesen, bevor irgendwas größeres verstellt wird! | ||
+ | |||
+ | ==== Stresstest installieren ==== | ||
+ | |||
+ | Es ist sinnvoll, zuerst nur die Spannung von der höchsten Leistungsstufe zu ändern. Diese wird aber im Normalbetrieb nicht erreicht. Deshalb muss ein Stresstest eingeschaltet werden, der den Prozessor maximal fordert. | ||
+ | |||
+ | Ich setze hierzu das Tool " | ||
+ | |||
+ | Installation: | ||
+ | |||
+ | < | ||
+ | |||
+ | </ | ||
+ | |||
+ | Der Aufruf erfolt über " | ||
+ | |||
+ | Der Modus " | ||
+ | |||
+ | |||
+ | ==== Vorgehen ==== | ||
+ | |||
+ | Während also in einem Fenster " | ||
+ | |||
+ | Es ist darauf zu achten, dass die Spannung und die Leistung immer weiter sinkt - bei sonst gleichen Werten! | ||
+ | |||
+ | Achtung: **Irgendwann wird sich das System dabei aufhängen**! Das ist das Ziel: den Wert zu finden, bevor sich das System aufhängt. | ||
+ | |||
+ | Beim nächsten Start, setze ich dann den Wert an, der zuletzt funktioniert hat. Nun kommt ein langer Stresstest. Hängt sich das System nach einiger Zeit immer noch auf, erhöht man die Spannung um noch einen Schritt. | ||
+ | |||
+ | Wichtig ist generell, dass die Prozessortemperatur niemals höher wird, als maximal erlaubt (siehe technische Spezifikation im Prozessorblatt). Sollte die Temperatur dennoch zu hoch werden, stimmt eine andere Einstellung nicht z.B. im Mainboard die Overheat- Funktion, oder aber die Kühlung ist defekt. | ||
+ | |||
+ | ==== Stabiler Betrieb im P0 ==== | ||
+ | |||
+ | Nach ein paar Versuchen, sollte der Stresstest sowohl stabil, als auch im normalen Temperaturbereich dauerhaft mit geringerer Spannung und weniger Leistungsverbrauch laufen. | ||
+ | |||
+ | Anhand des Vergleichs der Wattzahl vom ursprünglichen Wert und des neuen Wertes, kann die Energieeinsparung berechnet werden: | ||
+ | |||
+ | Bspw. für den P0: | ||
+ | |||
+ | Ursprüngliche CpuPower (mit CpuVid 14) = 26.12W | ||
+ | |||
+ | Neue Einstellung CpuPower (mit CpuVid 27) = 23.04W | ||
+ | |||
+ | Das entspricht einer Reduktion der Energieaufnahme auf den Faktor: | ||
+ | |||
+ | 23.04 / 26,12 = 0, | ||
+ | |||
+ | Da ich vier Prozessorkerne habe, sinkt also meine Leistungsaufnahme von 104 auf 92 Watt: | ||
+ | |||
+ | (4 * 26,12W) - (4 * 23.04W) = (104,48W) - (92,16W) = 12,32 Watt | ||
+ | |||
+ | ==== Faktor auf alle andere P-States anwenden ==== | ||
+ | |||
+ | Nachdem man nun weiss, um wieviel die Leistung gesenkt werden kann, gilt es, per Dreisatz jeden anderen Leistungslevel analog einzustellen. | ||
+ | |||
+ | Also in meinem Besipeil so, dass die Wattzahl später immer dem Faktor 0, | ||
+ | |||
+ | < | ||
+ | | ||
+ | 0 1 | ||
+ | 1 1 9 0 | ||
+ | 2 1 3 0 | ||
+ | 3 1 0 1 | ||
+ | 4 0 0 0 0 8.00x 1600MHz | ||
+ | |||
+ | </ | ||
+ | |||
+ | Damit sind die richtigen Werte eingestellt. | ||
+ | |||
+ | ==== Persitieren ==== | ||
+ | |||
+ | [Fedora- eigen, mangels Zeit, nur Stichworte] | ||
+ | |||
+ | eintrag in / | ||
+ | # | ||
+ | amdctl -p0 -v27\\ | ||
+ | amdctl -p1 -v34\\ | ||
+ | amdctl -p2 -v39\\ | ||
+ | amdctl -p3 -v52\\ | ||
+ | exit 0 | ||
+ | |||
+ | danach ausführen: | ||
+ | / | ||
+ | |||
+ | und\\ | ||
+ | systemctl enable rc-local.service\\ | ||
+ | -> Das gibt fehler, aber macht nix | ||
+ | |||
+ | danach starten\\ | ||
+ | systemctl start rc-local.service | ||
+ | |||
+ | mit " | ||
+ | ist nun alles zu sehen | ||
+ | |||