Frage Wo speichert der Radeon Treiber die Einstellungen in der Registry?

Nerevar

Mitglied
Mitglied seit
Sep 27, 2020
Beiträge
22
Bewertungspunkte
12
Punkte
3
Alter
43
Standort
Bochum
Hallo zusammen,

seit meinem Wechsel von Nvidia zu AMD im Dezember 2020 fehlt mir ein kleines Feature des Nvidia-Treibers. Hier konnte man per Skript das Power Target einstellen (z.B. nvidia-smi -i 0 -pl 300). Diesen Befehl habe ich per Aufgabenplanung bei jedem Login ausführen lassen, so dass ich nach einem Treiber Update oder Reset dieses nicht immer manuell einstellen musste.

Leider konnte ich bis heute nicht rausfinden, wie ich sowas bei AMD Radeon Grafikkarten nachstellen kann. Kann mir jemand den Registry Pfad nennen, unter welchem die Wattman Einstellungen, speziell das Power Target, eingestellt wird. Ich würde gerne eine .reg-Datei schreiben und diese per Aufgabenplanung als Login-Skript laufen lassen, damit ich immer die +15% PPT eingestellt habe unabhängig von Treiber-Updates oder Resets des Treibers.

Besten Dank im Voraus
 
Hallo Nerevar

Es gibt verschiedene Tools, mit denen man Veränderungen in der Registry finden kann. Damit kannst du ein Registry-Abbild machen. Dann veränderst du die gesuchten Einstellungen und machst nochmals ein Abbild. Dann kann man die beiden Abbilder vergleichen lassen und bekommt die Änderungen angezeigt. Ich hoffe, das hilft dir die entsprechenden Einträge zu finden.
 
Ach geh Martin, sowas macht man doch ned von Hand, sondern per MPT. Klick mal oben links Startseite, das ist das MPT so präsent, das läst sich kaum verfehlen.
Warum sollte man das per Hand in der Registry machen...

Treiber Resets sind kein Problem fürs MPT, neuer Treiber schon, da müsstest dir dann wirklich so ein Skropt mchen, aber das wär mir zu komisch.

Im Zweifel weiß @hellm genau wo das steht :)
 
Im Zweifel weiß @hellm genau wo das steht
Nope. SPPT ist etwas anderes, wobei es da keine Beschränkungen gibt. Zumindest beim Powerlimit.
Natürlich würde ich es auch nicht unerwähnt lassen. ;)

Regulär dürfte es über die ADL (AMD Display Library) möglich sein. Overdrive bzw. Wattman nutzt auch nix anderes. Ob das dann bei einem Update des Treibers bestehen bleibt, weiß ich allerdings nicht. Das kann auch keine manuelle Veränderung der Registry garantieren.
 
So ein tool kannst du dir via ADL selbst basteln:


Da gibts ein Demo für ein CLI

Zeile 762ff

if (_stricmp(input_str, "y") == 0)
{
printf ("Enter new value of Power Control threshold between %d and %d: \n", powerControlInfo.iMinValue, powerControlInfo.iMaxValue);
gets_s (input_str);
int newPowerControlTreshold = atoi (input_str);
if (ADL_OK != ADL_Overdrive6_PowerControl_Set (adapterId, newPowerControlTreshold))
{
printf("Failed to set new Power Control treshold. \n");
return 0;
}
}

Mit ein bisschen C++ kriegt man das hin :D
 
danke für die Tipps und Vorschläge. Ich hatte viel um die Ohren, darum kam ich nicht zum Antworten. Ich hatte gestern noch wie von @Martin Gut vorgeschlagen mit den Tools die Registry überwacht bzw. mit Abbildern vor/nach dem Ändern des PowerLimits versucht, den Eintrag zu finden. Leider ohne Erfolg.

wie @hellm geschrieben hat, ist das MPT anscheinend nur dafür nutzbar, den maximal einstellbaren Wert zu erhöhen, jedoch nicht den Wert ansich einzustellen. Darum sehe ich hier erstmal keine Lösung für das Problem.

@begner und hellm
das ADL scheint sehr mächtig zu sein. Ich scheitere aber bereits daran aus dem Link zum Github die eigentliche adlutil.exe zu finden, welche in der Dokumentation beschrieben wird. Ich habe per Google nur eine uralte Version gefunden, die auf pcgh.de gehostet wurde. Mit meinen beschränkten Programmkenntnissen bekomme ich auch kein Skript zum laufen (adlutil.exe set name.txt). Wo findet man auf github (oder amd.com oder im Treiberpaket) dieses adlutil.exe?

Ich bekomme immer direkt eine Exeption in Zeile 1, dass ein AdapterIndex erwartet wird. Ferner wird das Beispiel-Code wohl eine Abfrage per Commande-Zeile auswerfen. Ich würde ja gerne unattended direkt die "15" als Wert für das PPT einstellen. Kann jemand das Skript soweit entschlacken, dass direkt der Wert 15 für den Parameter ADL_OVERDRIVE6_POWERCONTROL_SET auf Adapter 0 (oder 1? geschrieben wird.
 
wie @hellm geschrieben hat, ist das MPT anscheinend nur dafür nutzbar, den maximal einstellbaren Wert zu erhöhen, jedoch nicht den Wert ansich einzustellen. Darum sehe ich hier erstmal keine Lösung für das Problem.
wut? stell doch einfach die gewünschte Wattzahl ein. Das funzt nicht wie bei Nvidia, damit überschreibt man die Werte aus dem BIOS. Wenn du exakt 15% mehr willst, kannst dir das auch ausrechnen.
Was nicht geht ist, das Limit im Overdrive über 15% zu setzen. Weniger allerdings schon. Aber es geht problemlos 1000W einzutragen, und die sind dann auch gesetzt. Oder 547W, 134W, usw..
 
Ich scheitere aber bereits daran aus dem Link zum Github die eigentliche adlutil.exe zu finden
Das muss man auch mit visual studio compilieren :D

Ich hab das mal für dich getan.
Die kannst du von der Command-Line starten

Note:
Overdrive8 -> Da gibt der DemoCode immer ein kleines Windows fenster aus - einfach wegklicken.

Startest du ohne Parameter kommt ein HelpText
(der auch sagt, welche parameter mit set und get was tun
Beispiel:

v = Voltage

Overdrive8.exe v
-----------------------------------------
Adapter Index[0]
-----------------------------------------
itemID:OD8_PLUS_GFX_VOLTAGE: is Visible
actualValue:1150
OD8_PLUS_GFX_VOLTAGE:maxValue:1175
minValue:825
defaultValue:1175
-----------------------------------------

Mit mehreren Parametern hinten dran setzt man dann den wert:
Overdrive8.exe v X Y Z
Wobei:
X - (3:OD8_GFXCLK_VOLTAGE1, 5:OD8_GFXCLK_VOLTAGE2, 7:OD8_GFXCLK_VOLTAGE3);
Y - (0:do not reset , 1:reset setting back to default);
Z - (value of setting)
bedeutet

Vielleicht hifts!
Mach deine Karte nicht kaputt :D

Wenn du einen Befehl gefunden hast der das macht was du willst, kann ich dir auch gerne nochmal ein Compile anwerfen und das Fenster rauspatchen. Note: Alles ohne Gewähr! Ich habs so compiled, wie es im Repository ist. Ich übernehme keine Verantwortung für Schäden
 

Anhänge

  • CompiledADLSamples.zip
    270,7 KB · Aufrufe : 2
Vielleicht hifts!
Mach deine Karte nicht kaputt :D

danke für die Mühe.

Aber ich wollte nicht mit der Voltage spielen sondern nur das Power Target um den von AMD zulässigen maximalen Wert erhöhen ohne immer nach einem Reset/Update dran denken zu müssen, den Slider im Control Panel zu verschieben.

Sprich wie von Dir oben bereits aus dem Sample Quellcode rauskopiert:

Code :
if (powerControlSupported)
    {
        printf ("Do you want to change the value of Power Control threshold (y/n)?:\n");
        gets_s (input_str);
        if (_stricmp(input_str, "y") == 0)
        {
            printf ("Enter new value of Power Control threshold between %d and %d: \n", powerControlInfo.iMinValue, powerControlInfo.iMaxValue);
            gets_s (input_str);
            int newPowerControlTreshold = atoi (input_str);
            if (ADL_OK != ADL_Overdrive6_PowerControl_Set (adapterId, newPowerControlTreshold))
            {
                printf("Failed to set new Power Control treshold. \n");
                return 0;
            }
        }
    }
    
    return 0;

das soll ausgeführt werden ohne Abfrage und Eingaben durch den User. Ideal sollte direkt der powerControlInfo.iMaxValue (sollte eigentlich immer 15 sein) direkt als neuer Wert für ADL_Overdrive6_PowerControl_Set eingetragen werden.
 
Aber ich wollte nicht mit der Voltage spielen sondern nur das Power Target um den von AMD zulässigen maximalen Wert erhöhen
Jaja - schon verstanden - war na nur ein beispiel. ich hab dir einfach nur die 3 Overdrive samples kompiliert...

Ich kann mal gucken, ob ich dir ein ADL_Overdrive6_PowerControl_Set zusammenbasteln kann
 
Also - mein 6900 sagt: Unsupported Overdrive version

Die gemeldete Version ist 8. Man muss also mit dem 8ter Tool spielen... Das kann aber ne menge...
Eventuell ist da das Powertarget dabei?

Method to Read OD8 GPU Clocks: Overdrive8.exe c
Ex: Overdrive8.exe c

Method to Set OD8 GPU Clocks: Overdrive8.exe c X Y Z; X - (0:OD8_GFXCLK_FMAX, 1:OD8_GFXCLK_FMIN, 2:OD8_GFXCLK_FREQ1, 4:OD8_GFXCLK_FREQ2, 6:OD8_GFXCLK_FREQ3); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe c 0 0 1100

Method to Set OD8+(Navi 21+) GPU Clocks: Overdrive8.exe c X Y Z; X - (0:OD8_GFXCLK_FMAX, 1:OD8_GFXCLK_FMIN); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe c 0 0 1250

Method to Read OD8 GPU Voltages: Overdrive8.exe v
Ex: Overdrive8.exe v

Method to Set OD8 GPU Voltages: Overdrive8.exe v X Y Z; X - (3:OD8_GFXCLK_VOLTAGE1, 5:OD8_GFXCLK_VOLTAGE2, 7:OD8_GFXCLK_VOLTAGE3); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe v 3 0 900

Method to Set OD8+(Navi 21+) GPU Voltage: Overdrive8.exe v X Y Z; X - (37:OD8_OD_VOLTAGE); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe v 37 0 1000

Method to Read OD8 Memory Clock: Overdrive8.exe m
Ex: Overdrive8.exe m

Method to Set OD8 Memory Clocks: Overdrive8.exe m X Y Z; X - (8:OD8_UCLK_FMAX); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe m 8 0 10

Method to Read OD8 Temperature Settings: Overdrive8.exe t
Ex: Overdrive8.exe t

Method to Set OD8 Temperature Settings: Overdrive8.exe t X Y Z; X - (9:OD8_POWER_PERCENTAGE, 12:OD8_FAN_TARGET_TEMP, 13:OD8_OPERATING_TEMP_MAX); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe t 9 0 10

Method to Read OD8 Fan Setting: Overdrive8.exe f
Ex: Overdrive8.exe f

Method to Set OD8 Fan Setting: Overdrive8.exe f X Y Z; X - (10:OD8_FAN_MIN_SPEED, 11:OD8_FAN_ACOUSTIC_LIMIT); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe f 10 0 1000

This Fan Setting feature only applys to OD8 WorkStation Asics. Trying to set it on other Asics will result in a failure.Method to Read OD8 Memory Timing Setting: Overdrive8.exe s
Ex: Overdrive8.exe s

Method to Set OD8 Memory Timing Setting: Overdrive8.exe s X Y Z; X - (14:OD8_AC_TIMING); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe s 14 0 10

Method to Read OD8 Fan Zero RPM: Overdrive8.exe z
Ex: Overdrive8.exe z

Method to Set OD8 Fan Zero RPM: Overdrive8.exe z X Y ; X - (15:OD8_FAN_ZERORPM_CONTROL); Y - (value of setting)
EX: Overdrive8.exe z 15 0

Method to Read OD8 Fan Curve: Overdrive8.exe r
Ex: Overdrive8.exe r

Method to Set OD8 all Fan Curve PWM points: Overdrive8.exe r X Y; X - (0:do not reset , 1:reset setting back to default); Y - (value of setting)
EX: Overdrive8.exe r 0 30

Method to Set OD8 Fan Curve: Overdrive8.exe r X Y Z; X - (19:OD8_FAN_CURVE_TEMPERATURE_1, 20:OD8_FAN_CURVE_SPEED_1,
21:OD8_FAN_CURVE_TEMPERATURE_2, 22:OD8_FAN_CURVE_SPEED_2, 23:OD8_FAN_CURVE_TEMPERATURE_3, 24:OD8_FAN_CURVE_SPEED_3,
25:OD8_FAN_CURVE_TEMPERATURE_4, 26:OD8_FAN_CURVE_SPEED_4, 27:OD8_FAN_CURVE_TEMPERATURE_5, 28:OD8_FAN_CURVE_SPEED_5); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting)
EX: Overdrive8.exe r 20 0 30

The fan will not spin if the Asic is Zero RPM Mode enabled and Asic's temperature is lower than the temperature threshold(For example, Navi 21 is 55░C)If user wants to observe immediate effect of fan curve changes, please make sure Zero RPM Mode(if supported) is disabledMethod to Read OD8 ASIC Power: Overdrive8.exe p
Ex: Overdrive8.exe p

Method to Read OD8 Tuning Control: Overdrive8.exe u
Ex: Overdrive8.exe u

Method to Set OD8 Tuning Control: Overdrive8.exe u X; X - (16:OD8_AUTO_UV_ENGINE_CONTROL, 17:OD8_AUTO_OC_ENGINE_CONTROL, 18:OD8_AUTO_OC_MEMORY_CONTROL, 99:AutoDefault, 98:Manual)EX: Overdrive8.exe u 16

Method to Read OD8 Optimized Power Mode: Overdrive8.exe o
Ex: Overdrive8.exe o

Method to Set OD8 Optimized Power Mode: Overdrive8.exe o X Y Z; X - (36:OD8_SETTING_OPTIMZED_POWER_MODE); Y - (0:do not reset , 1:reset setting back to default); Z - (value of setting: 0: Quiet Mode, 1: Balance Mode, 3: Custom Mode, 4: Rage Mode [Depending on Asics, some mode may not be supported])
EX: Overdrive8.exe o 36 0 1

Method to Read OD8 workstation AUTO FAN ACOUSTIC LIMIT: Overdrive8.exe w
Ex: Overdrive8.exe w

Method to Set OD8 workstation AUTO FAN ACOUSTIC LIMIT: Overdrive8.exe w X; X - (0:enable, 1:disable)EX: Overdrive8.exe w 16
 
Also - habe jetzt rausgefunden, das

Overdrive 5+6 für <= RX480 ist
OverdriveN (7) für Vega
Overdrive8 für Navi

Also bleibt nur OD8 übrig. Und da hab ich OD8_POWER_PERCENTAGE, ADL_OD8_POWER_LIMIT gefunden.
Wer hätte gedacht, das das "Power Target Limit" zur Temperatur gehört... :rolleyes:

Mach mal ein Test:
Wenn man
Code :
Overdrive8.exe t
aufruft kriegt man (unter anderem)

Code :
itemID:OD8_POWER_PERCENTAGE: is Visible
actualValue:-5
OD8_POWER_PERCENTAGE:maxValue:15
minValue:-10
defaultValue:0

-5 ist mein aktueller Wert in Wattman. Mein Regler kann ich von -10 bis + 15 schieben.

Und da steht auch wie man es setzen kann:
Method to Set OD8 Temperature Settings:

Overdrive8.exe t X Y Z;
X - (9:OD8_POWER_PERCENTAGE, 12:OD8_FAN_TARGET_TEMP, 13:OD8_OPERATING_TEMP_MAX);
Y - (0:do not reset , 1:reset setting back to default);
Z - (value of setting)

Also um es auf 15 zu bringen:
Code :
Overdrive8.exe t 9 0 15

Bedeutet:
t = Temperatur
9 = OD8_POWER_PERCENTAGE setzen
0 = nach dem beenden vom programm NICHT wieder zurücksetzen
15 = 15% Power Percentage

Gerade getestet: Geht! 💪
Krieg ich jetzt ein Eis?

Wenn das bei dir auch geht - dann patch ich dir auch gerne das überflüssige Windows-Fenster beim aufruf raus. :cool:
 
Zuletzt bearbeitet :
Gerade getestet: Geht! 💪
Krieg ich jetzt ein Eis?

Wenn das bei dir auch geht - dann patch ich dir auch gerne das überflüssige Windows-Fenster beim aufruf raus. :cool:

Großes Lob (y) und großes🍨

Funktioniert wunderbar. Habe zunächst mit dem Parameter "0" wieder auf den Standard 0% gesetzt und danach wieder die 15% eingestellt. Wenn jetzt noch dieses Fenster beim ausführen unterdrückt wäre, wäre es schon perfekt. Wirklich ganz tollen Hilfe von Dir.
 
Dann compile ich dir das mal… schaff es heute nur nicht…
 
jetzt hatte mich der Ehrgeiz gepackt. Ich hab MS Visual Studio 2019 installiert (die Community Edition) und dann overdrive8 selbst kompiliert. Dann hab ich die Zeile mit dem Main() gesucht und auskommentiert. Jetzt erscheint kein Fenster mehr, wenn man die Datei mit den Parametern ausführt.

Kurios ist, dass anscheinend das Powertarget beim Neustart auf 0% zurückgestellt wird. Da ich das Skript aber bei jeder Anmeldung per Aufgabenplaner ausführen lasse, macht es jetzt genau dass, was es soll.

@begner Danke für die Hilfe.
 
Kurios ist, dass anscheinend das Powertarget beim Neustart auf 0% zurückgestellt wird
Interessant. Das heisst: via ADL wird der wert nur gesetzt - nicht persistiert.

@Nerevar Was passiert wenn der Treiber abstürzt und sich neu läd? Ich denke dann ist der Wert auch "weg" (kann man ja mal mit dem reset64 aus den cru-tools testen)
 
Oben Unten