[HowTo] VRAM taktet nicht runter - Lösung mittels CRU

Enurian

Commander
Registriert
Dez. 2015
Beiträge
2.316
Ich lese immer wieder davon, dass der VRAM auf vollem Takt bleibt und die Grafikkarte daher zu viel Strom verbraucht und die Lüfter ggf. aus dem Zero-Fan idle anspringen.

An vielen Stellen habe ich erwähnt, wie sich das lösen lässt, aber einerseits wird es nicht immer verstanden und andererseits wird die Frage immer wieder gestellt. Daher versuche ich hier eine Anlaufstelle inkl. Lösung anzubieten, auf die ggf. verlinkt werden kann.

Vorweg: Meine Erfahrungen und die hier vorgestellte Lösung behandelt kein Multi-Monitor. Bei Multi-Monitor gibt es zahllose Kombinationsmöglichkeiten und da müsst ihr selbst rauskriegen, ob sich eine Lösung finden lässt.


Genutzte Hardware

Ich habe alles mit meinem 3440x1440 @100Hz Samsung C34 Monitor getestet (auch mal mit 2560x1440), sowie mit meinem 4k 120Hz LG B9 Fernseher. Auf beiden Geräten kann ich alle denkbaren Auflösungen und Bildwiederholraten mit niedrigem VRAM idle zum Laufen bekommen. Nur 4k 120Hz noch nicht mangels HDMI 2.1 an meiner Karte.
Angeschlossen über DisplayPort bzw. HDMI 2.0 an meine Radeon 5700 XT. Soweit ich sehe, sollte alles auch für die 6000er Reihe gelten. Vega hingegen hatte HBM-Speicher, für die Karten gilt das nicht.


Was ist überhaupt das Problem?

Das Problem ist eine zu geringe "Blanking Time". Das lässt sich belegen.
Der Rest sind Spekulationen, ich kann kurz versuchen zu umreißen, was ich mir zusammenreime: Die Blanking Time ist "tote Zeit", in der dem Display keine neuen anzuzeigenden Informationen mitgeteilt werden. Das wurde zu Zeiten der CRT-Monitore eingeführt, da der Elektronenstrahl einen Moment brauchte, um zurück zum "Anfang" des Bildes zu gelangen. Das gibt es immer noch in den heutigen Videosignalen.
Offenbar benötigen unsere aktuellen Grafikkarten eine gewisse "Totzeit" / Pause / Blanking Time, damit der Video-RAM heruntertaktet. Möglicherweise würde sonst das Bild instabil werden oder weiß der Geier. Da der Takt bestimmt, wie viele Daten übertragen werden können, reicht mit dem 200MHz idle die Bandbreite ab einem bestimmten Punkt nicht mehr aus - außer die Karte hat noch etwas "Zusatzzeit" für die Übertragung, nämlich die Blanking Time. Die benötigte Pause hängt von der verwendeten Auflösung, sowie der Bildwiederholrate ab. Je höher beide Werte, desto mehr Daten und eine desto längere Pause wird benötigt.
Die Blanking Time wird vom Monitorhersteller in den "Auflösungen" hinterlegt. Ich schreibe "Auflösungen" in Anführungszeichen, da z.B. 2560x1440 in 144 Hz eine andere Auflösung für das System ist als 2560x1440 in 60 Hz. Es wird eine andere Konfiguration verwendet. Daher können sich neben der unterschiedlichen benötigten Bandbreite auch die voreingestellte Blanking Time unterscheiden, wenn ihr die Hz umstellt - und plötzlich wird es möglich, dass der VRAM bei einer niedrigeren Auflösung nicht mehr heruntertaktet, obwohl er es bei einer höheren noch tat.
Warum tragen Monitorhersteller eine "zu niedrige" Blanking Time ein, wenn der Monitor auch mit einer höheren funktioniert?
Gute Frage! Ich weiß es (mal wieder) nicht genau. Vermutung: Mit erhöhter Blanking Time erhöht sich auch der "Pixel clock". Je nach Anschlussart und Standard, gibt es dort ein Maximum. Eventuell möchte der Monitorhersteller, dass Auflösung XY auch noch mit HDMI 1.3 funktioniert und streicht deshalb so viel wie möglich aus dem Signal zusammen. Solange ihr ein halbwegs modernes DisplayPort oder HDMI nutzt, kann euch das aber natürlich egal sein.

Lösung

Zunächst einmal der Beweis, dass es funktioniert. Test durchgeführt mit 3440x1440 @100 Hz.
vorher.jpg
nachher.jpg

Der einzige Unterschied: 5 Linien mehr bei "Blanking vertical".

Schritt-für-Schritt, damit ihr das auch hinbekommt
  1. Wenn ihr es noch nicht habt, besorgt euch das CustomResolutionUtility by ToastyX, kurz "CRU". Im AMD-Treiber könnt ihr zwar an den Auflösungen schrauben, leider reichen die Möglichkeiten dort aber nicht aus.
  2. Ihr benötigt die "CRU.exe" sowie später noch die "restart64.exe". Öffnet CRU.exe und wählt aus der oberen Liste den gewünschten Monitor aus. Den mit dem "active"-Flag, wenn er mehrmals vorkommt (die Duplikate könnt ihr übrigens löschen, das löst das Problem, wenn euer Monitor manchmal das Signal beim Wechsel zwischen Programmen verliert).
  3. Eure Hauptauflösung wird wahrscheinlich eine "Detailed resolution" haben. Sucht sie dort heraus und klickt auf edit. In dem sich öffnenden Fenster seht ihr alle benötigten Informationen und könnt zudem die blanking lines ändern, wenn ihr den Radiobutton betätigt. Hier alle zu klickenden Stellen markiert:
    cru.jpg
  4. Nun das Wichtigste: Die Berechnung, wie viele Blanking lines ihr braucht. * UPDATE siehe ganz unten im Post eine genauere Formel * Durch Ausprobieren hat sich herausgestellt, dass mit 200MHz am VRAM ca. 460 Mikrosekunden Blanking Time benötigt werden. Wie vielen Linien das entspricht, berechnet ihr so:
    BlankingLines = RefreshRate * TotalVerticalLines * BlankingTime
    Die Refresh Rate steht in CRU unten, oder ihr wisst sie eh. Die Total Vertical Lines stehen in CRU, direkt unter den Vertical Blanking Lines. Die BlankingTime ist wie erwähnt etwa 0,00046 Sekunden.
    Kann man sich auch kurz ins Excel packen:
    Excel.jpg

    Ich brauche also ca. 70 blanking lines. Passt, siehe Beweis-Screenshots oben. Tatsächlich funktioniert es auch mit 69 bei mir, bei einer meiner versuchten Settings brauchte ich hingegen mal ein klein wenig mehr. Wenn es nicht gleich läuft, probiert da etwas herum.
  5. Habt ihr euren Wert gefunden, tragt ihn ein und bestätigt mit OK, ihr könnt die CRU.exe nun schließen.
  6. Um die Änderung anzuwenden, muss der Treiber neugestartet werden. Dafür könnt ihr den PC neustarten oder ihr führt einfach "restart64.exe" von CRU aus und wählt dort den Treiberneustart.
  7. Nachschauen, ob es funktioniert hat. Wenn der VRAM noch hochtaktet, erhöht den eingestellten Wert für die Blanking Times leicht.
  8. Fertig!
  9. Optional: Ihr könnt in CRU das Profil exportieren, wenn falls sich mal etwas zurücksetzt.

Potenzielle Probleme / Nachteile

Nachteile nach einmal gefundener Konfiguration sind mir keine wenige bekannt. Hat man einen unpassenden Wert erwischt, hatte ich bisher zwei Szenarien:
  • Der Monitor resettet sich, anschließend sieht man in CRU, dass unsere geänderten Settings nun ein inaktives Duplikat des Bildschirms sind und die defaults geladen wurden. Kein Problem, nochmal mit einem anderen Wert probieren.
  • Bei extrem hohen Werten (ich habe meine 70 spaßeshalber einmal auf 140 verdoppelt bei Multi-Monitor-Experimenten) hatte ich mal plötzlich ein "zerwürfeltes" Bild. Mit einem zweiten Monitor ist es natürlich einfach wieder zu fixen (alte Werte wiederherstellen, ggf. neustarten). Wenn ihr keinen habt, versucht "resetAll.exe" im CRU-Verzeichnis auszuführen, um die defaults wiederherzustellen.
Von Usern gemeldete Probleme nach erfolgreicher Anpassung, die auftreten können, abhängig vom Bildschirm:
  • Nach dem Standby wacht der Monitor nicht mehr auf, bis man Win+Strg+Shift+B drückt.



Viel Erfolg und ich hoffe geholfen zu haben!

UPDATE: Die Formel hat einen kleinen Fehler, da sich die Zahl der "Total Lines" ändert, je nachdem wie viele Blank Lines ihr angebt, wie völlig richtig von @Murd0c1312 berichtet. Ich habe nochmal nachgedacht, ein paar Dinge umgestellt und heraus kommt das hier: ihr benötigt nur noch die vertikale Auflösung (also z.B. 1440 bei WQHD oder UWQHD) und die Bildwiederholrate.
1607546940710.png

Habe das als Google doc hochgeladen, ihr könnt euch also auch eine Kopie machen oder es als xlsx runterladen:
https://docs.google.com/spreadsheets/d/1dKyEvXzjnGz0_SsR7xGn-c5meqkApVwBUEkcyEGcrx4/edit?usp=sharing
Ich hoffe damit verringert sich das Herumprobieren, denn so habt ihr den ungefähr richtigen Wert, egal was vorher für blank / total lines angegeben waren.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Rosenkohl, DannyA4, Dogbrothers und 38 andere
Bei Nvidia geht es über den Nvidia Inspector und den Multi Display Power Saver, dass man Idle Taktraten erzwingt, es sei denn Programm X wird ausgeführt, dann werden die Last Taktraten erzwungen. Man verliert also die Power States dazwischen, hat aber ein knallhartes und nachvollziehbares 2D/3D Verhalten. Gibt es was vergleichbares für AMD-Karten?
 
Zuletzt bearbeitet:
Das geht in der Radeon Software mittels der Custom Resolution Einstellung. Da braucht man kein separates Tool für. Hier reicht meist das Umstellen des Monitor Timings auf CVT. Nachteil dabei ist, dass die Farbtiefe dann nur noch bei 6bit liegt. Mit CRU im Übrigen auch - oder irre ich da?
 
Bono35 schrieb:
Mit CRU im Übrigen auch - oder irre ich da?
Ja du irrst dich. Wie erläutert gibt es mit CRU keine Nachteile, die volle Farbtiefe bleibt erhalten. Ich habe extra geschrieben, dass das im AMD Treiber nicht nachbildbar ist.
 
  • Gefällt mir
Reaktionen: Asghan, _Cassini_ und Fuchiii
Nun ich hatte auch meine Versuche mit CRU (System siehe Signatur) - dort ergab sich das gleiche Phänomen mit der Farbtiefe.....

Ich muss allerdings auch fairerweise gestehen, dass ich zwischen 6 und 8 bit Farbtiefe keinerlei Unterschied feststellen kann.
 
Ich kann nicht wissen, was du gemacht hast. Mach es nach dieser Anleitung und die Farbtiefe ändert sich nicht:

1607251108047.png
 
Nun ich habe nun exakt Deine Schritte nachverfolgt - leider funktioniert das mit meinem Iiyama PL2530H nicht. Nach Deiner Formel nach sind die Blanking Lines zudem nativ bei meinem Monitor schon so konfiguriert, dass es laufen sollte (Rechnung ergibt aufgerundet 39 (75 hz Monitor, 1119 total vertical lines)- in der Detailed Resolution sind 39 konfiguriert. Hier muss bei mir also ein anderes Problem vorliegen - und ich tippe nach wie vor auf einen Bug. Daher - abwarten was die kommenden Revisionen der AMD Treiber bringen. Sonst wirds wohl bei mir doch mal Zeit für nen neuen Screen.
 
Zuletzt bearbeitet:
Klasse Lösung! Taktet mit diesem Weg einwandfrei runter und 8bit Farbtiefe bleibt erhalten :)
 
@Enurian
Absolut fantastisch. Danke dafür :daumen:
Hab jetzt statt 33W Idle immer so zwischen 5 - 8W. Perfekt. Mit meinen ausgerechneten 51 taktete der RAM noch mit 900MHz. Auf 52 gestellt, jetzt schwankt der immer zwischen 14 und 200MHz, so hab ich mir das vorgestellt :D
1607265266229.png


Ich hab übrigens 10bit und das ist auch weiterhin eingestellt :daumen:
1607265215229.png
 
  • Gefällt mir
Reaktionen: Fuchiii und Enurian
Ok - das hat mir jetzt keine Ruhe gelassen nachdem ich länger schon an dem Problem doktore. Ich habs jetzt auch hinbekommen nachdem ich die Blanking Lines auf 45 hochgestellt habe. Das ist der Wert, welcher mein Monitor bei 60 hz aufweist. Jetzt klappts auch mit 8 bit Farbe.

VIELEN Danke für Deine Mühen. Top Job.

Da aber noch eine Frage: Was ist bei einem Treiber Update? Sollte man dort die Änderungen mit CRU rückgängig machen vorher oder kann man wie gewohnt installieren? Ich nutze immer die Neuinstallation.
 
Auch auf Gefahr mich zu wiederholen...daher sorry für erneutes erwähnen: Wie schaut es bei Treiber Update aus? Ich nutze immer die Option Werkseinstellungen beim Update. Werden dabei die cru Einstellungen verworfen oder sind diese seitens der registry gesichert? Oder empfiehlt es sich vor dem Update cru Settings zurückzusetzen aid standard und nach Update neu einzustellen?
 
@Bono35
Ich meine ja, bei nem einfachen update nicht. Du kannst dir aber die CRU Einstellungen exportieren, dann sollte das nicht so wild sein.
 
  • Gefällt mir
Reaktionen: Bono35
OK, dann schauen wir mal beim kommenden Update für Cyberpunk. Das neu einzurichten wäre ja das geringste Problem, wenn man einmal die Werte hat. Ich stelle diese Frage insbesondere deswegen, weil wir ja ob der Zickigkeit der AMD Treiber bei der Installation wissen. Ich werde vorsichtshalber vor der Installation neuer Treiber mal auf Standard setzen.

Danke Dir nochmal für Deine Mühe.
 
  • Gefällt mir
Reaktionen: _Cassini_
Hallo zusammen.

Da ich ebenfalls solch ein Problem habe, aber in Verbindung mit einem zweiten Monitor, kann mir da trotzdem jemand helfen? Ich habe sowas noch nie gemacht und habe da nicht so recht Ahnung, was ich wo dann einstellen muss/ soll.

Gern auch per PN.

Grüße
 
@Spiczek
So wie ich das verstehe, stellst du das für jeden Monitor separat ein. Also einfach an die Anleitung halten. Eventuell musst du die Werte leicht erhöhen. Hatte ich auch.
Hab selber aber kein Multi Setup.
 
  • Gefällt mir
Reaktionen: Spiczek
Update: Methode funktioniert auch mit 20.12.1 - ist auch hier in meinem Setup notwendig (Iiyama PL2330H @75 hz und LG W2242 @60 hz).
 
leider kein Erfolg bei mir. Habe ein Multi Setup mit 144hz Monitor und 60hz Monitor. Habe die blanking lines für beide Monitore geändert, auch mit leicht höheren Werten, takten die 5700xt den Speicher nicht runter.
 
Möchte mich mal an dieser Stelle ganz herzlich bedanken @Enurian!

Bin deiner Anleitung gefolgt, mußte aber meinen Wert von 52 auf 54 erhöhen, dann hat es einwandfrei funktioniert und ich habe endlich 75Hz bei 200MHz VRAM und 10bpc Farbtiefe.

Super! ✌😁

1607501844548.png

Ergänzung ()

Murd0c1312 schrieb:
leider kein Erfolg bei mir. Habe ein Multi Setup mit 144hz Monitor und 60hz Monitor. Habe die blanking lines für beide Monitore geändert, auch mit leicht höheren Werten, takten die 5700xt den Speicher nicht runter.
Soweit ich weiß, müßten beide Monitore die gleiche Auflösung und Hz haben damit es geht.
 
  • Gefällt mir
Reaktionen: xQjan
coxon schrieb:
Soweit ich weiß, müßten beide Monitore die gleiche Auflösung und Hz haben damit es geht.
dann müsste ich ja den 144hz Monitor auf 60 hz stellen und dann taktet der VRAM ja schon treiberseitig ohne die Einstellungen runter
 
Zurück
Oben