Vega 64 optimale performance

ntropy

Newbie
Registriert
Jan. 2019
Beiträge
4
Hallo zusammen,

ich bin ganz neu in der AMD Welt, genau genommen erst eine Woche alt. :) Ich zocke wieder seit 1,5 Jahren, davor habe ich zehn Jahre nur einen Linux-Arbeitsrechner gehabt und habe damals einen Laptop mit GTX 1060 bekommen. Jetzt wollte ich mir mal wieder eine Gaming-Rig aufbauen und dabei kam raus: R5 1600x, RX Vega 64 reference design, 16 GB RAM, MSI B450, 250 GB 970 Pro M.2., 2 TB FireCuda SSHD und ein Corsair Netzteil mit 850W (ein bißchen zu viel Watt :)).

Die Vega 64 läuft natürlich viel besser als die mobile 1060 GTX aber meine Begeisterung hört nicht auf. Mit dem Mesa Treiber muss man ja wirklich gar nichts konfigurieren, alle Games laufen ab Werk. :) Lediglich bei Outcast 2 hatte ich bisher Probleme, da fehlte VK_transform_feedback und damit alle NPCs und das eigne Charaktermodell im Spiel.

Ich bin nun auf der Suche nach der optimalen Performance für die Graka. Ich habe die Steam Experimental VR Drivers installiert, aus dem Paket: https://launchpad.net/~kisak/+archive/ubuntu/steamvr ; die kommen mit Linux 4.20, Mesa RADV 3.2.1 und LL VM 7 aber mit denen bin ich nicht zufrieden. Auf der HTC Vive habe ich eine Art Texturflackern, mit dem man durch Wände sehen kann und da wird einem relativ schnell schlecht von. Im 2D Bereich ist eigentlich Alles ok, nur bei den Framerates bin ich mir nicht sicher, ob das so soll. Monster Hunter World und Fallout 76 laufen in 1080p in Ultra Settings mit soliden 45-60 fps (vsync Limit bei 60 fps). Nun habe ich nur einen doofen LCD Fernseher als Ausgabegerät, es könnte sein dass es daran liegt. Im Fo76 Benchmark liegt die Vega eigentlich bei 100 - 120 fps mit meinen Einstellungen und somit sollte sie bei mir konstant mit 60 fps laufen. Weiß da noch nicht genau, ob das Alles so richtig ist.

Ich wollte jetzt einmal den Padoka + SteamVR Treiber austesten: https://launchpad.net/~kisak/+archive/ubuntu/steamvr4pk und dafür den Padoka stable installieren. Bin aber noch ratlos, ob das die Beste Wahl ist für mich oder doch lieber oibaf, oder Padoka experimentell.

Da die VK_transform_feedback Geschichte nicht ging, habe ich mir mal ein prebuilt AMDVLK Paket von github geholt und installiert. Ich starte das game dann mit der env Variable VK_ICD_FILENAMES="/etc/vulkan/icd.d/amdvlk64.json". Das klappt, das game startet und im DXVK_HUD sehe ich den neuen Grafiklayer, es läuft konstant mit 60 fps, das Spiel startet und ich habe wieder diese "Texturlöcher", durch die man hindurch sehen kann, diesmal riesig in der Spielwelt. Dann dauert es 3 Sekunden und das System friert ein und ich brauche einen Hardreset. Der einzige Unterschied ist, dass der GPU Tachometer mal wirklich voll feuert, während beim RADV Treiber in Fo76 nur die ersten zwei LEDs aufleuchten.

Was ich noch gar nicht gemacht habe, ist sonstige Einstellungen zu bearbeiten. Z.B. habe ich häufig gelesen, dass man die Option DRI 3 in der xorg.conf setzen soll, da ist mein System noch komplett unbefleckt bisher.

tl;dr meine Frage, habt ihr ein paar Ressourcen für mich, wo ich mich zum momentan besten Treiber für aktuelle Games zur Vega 64 schlau lesen kann? Und habt ihr einen Tipp für mich, was Eurer Meinung nach der beste Treiber für die Vega 64 ist im Moment?

Ich bedanke mich,
Gruß
~ent
 
Du weißt mehr als ich, ich kann dir lediglich phoronix empfehlen um den schnellsten Treiber zu finden.

Viel Spaß :)
 
DRI3 sollte bereits standardmäßig genutzt werden, wenn du mit X.org arbeitest. Schau mal in der manpage zu amdgpu nach.

Ansonsten ist es ratsam, immer die aktuellsten Snapshots von Mesa, LLVM, libdrm und natürlich einen aktuellen Kernel zu verwenden.

Für das Maximum kannst du die Karte natürlich noch übertakten bzw. an Spannungen und Powerlimit drehen. Das Tool der Wahl ist dazu ROC-smi.
 
Bei VR Nutzung empfehle ich für die beste Performance den SteamVR+Padoka PPA experimentell. Außerdem würde ich die Vega 64 undervolten.
Ich selber betreibe eine Vega 56, die ich per Script beim Start von Steam auf einen festen P-State setze.
Als Core-Voltage setze ich 0,925V bei einem Takt von 1537 Mhz. Damit bleibt die Vega 56 immer unter dem Power-Limit von 165W.
Code:
echo "s 6 1537 925" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 3 930 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo manual > /sys/class/drm/card0/device/power_dpm_force_performance_level
echo 6 > /sys/class/drm/card0/device/pp_dpm_sclk
echo 3 > /sys/class/drm/card0/device/pp_dpm_mclk
Bei der Vega 64 brauchst du natürlich andere Werte.
Wenn du Steam Play nutzt sollte es in der nächsten Version eine Performanceverbesserung geben, da DXVK-Git bei mir kürzlich einen guten Schub gebracht hat.
 
Hallo zusammen,

danke für Eure Tipps. Zum Tunen nutze ich WattmannGTK von github. Das braucht eine kernel flag, die man setzen muss und dann hat man eine schöne grafische Nutzeroberfläche, auch zum Auswerten der Graka Sensoren. Übertakten muss ich die Vega 64 aber noch nicht, vll. mal in ein paar Jahren. :)

Habe meinen Fehler jetzt gefunden. Anscheinend fand per DP to HDMI Kabel mittels meiner Graka und dem TV ein Sync statt, um die Refresh Rate anzugleichen. Habe meinen Fernseher in den Spielemodus versetzt, et voila, die fps sind explodiert. Die Graka dreht jetzt auch mal endlich ordentlich und schalte ich VSync aus in Fo76 hört man sogar Spulenfiepen :).
1547761586_Bildschirmfoto vom 2019-01-17 20-28-09.png

Nutze jetzt auch das SteamVR + padoka package. Bisher lässt sich Kernel 4.20 noch nicht installieren, beim Installieren gibt er mir Fehler über fehlende Vega20 firmware aus und starte ich ein Spiel dann mit 4.20 Kernel hängt sich die ganze Karte auf. Habe irgendwo beim Rumfummeln mal manuelle Firmware installiert, die schmeiße ich wieder runter, dann müsste es gehen.

@Schorsch das powertarget der Vega ist bei mir default 220 W und in Monster Hunter World läuft sie so bei 200 W bei mir in fo76 jetzt bei 125 W. Habe schon gesehen, dass viele undervolten aber sehe da jetzt nicht so den Sinn drin (außer fürs Ethereum Mining). Hungriger als ne 1080 ist sie auf jeden Fall und langsamer als ne 1080Ti aber dafür steckt auch noch etwas Potential drinnen, das Treiber in den nächsten Jahren abgreifen können.
 
Durch das Undervolten kann die Vega höhere Taktfrequenzen nutzen ohne das Power-Limit zu ereichen, somit wird sie dadurch schneller ohne dass du die Karte überstrapazierst.
 
Schorsch schrieb:
Durch das Undervolten kann die Vega höhere Taktfrequenzen nutzen ohne das Power-Limit zu ereichen, somit wird sie dadurch schneller ohne dass du die Karte überstrapazierst.

Ah, das macht Sinn, dann schau ich mir das mal an :)
Danke !
 
Interessanter Thread, habe ja auch eine Vega 64 unter Linux am laufen (wenn auch die Nitro+).
Bisher habe ich auch ein paar rudimentäre UV-Einstellungen über WattmanGTK gemacht, welche Vorteile bietet denn dieses ROC-smi im Detail?

Wurde auf Github ja schon länger nicht mehr upgedated.
 
Es ist ein schlankes Kommandozeilenwerkzeug direkt vom Hersteller, das sich natürlich skripten lässt. In der Regel bevorzuge ich die Kommandozeile, weil ich damit flexibler und häufig zügiger arbeiten kann.

Im Vergleich dazu fand ich Wattman-GTK zwar interessant und sicherlich sinnvoll für seine Zielgruppe, aber auch unübersichtlich und merkwürdig in der Bedienung.

Dass ROCM-smi länger nicht mehr aktualisiert worden ist, sehe ich gelassen, die Power-Management-Schnittstellen zum Userspace sind ja stabil. Selbst wenn Linux 4.20 nun die Erhöhung des Power-Targets zulässt, ist eine Änderung am Tool selbst nicht nötig.
 
Oder man nutzt die Schnittstellen direkt, ohne zusätzliche Tools. Wenn man sich einmal ein Script angelegt hat, braucht man nur noch die Werte ändern, um die optimalen Settings zu finden.
Die aktuell eingestellten Werte kann man wie folgt auslesen:
Code:
$ cat /sys/class/drm/card0/device/pp_od_clk_voltage
OD_SCLK:
0:        852Mhz        800mV
1:        991Mhz        850mV
2:       1138Mhz        900mV
3:       1269Mhz        900mV
4:       1312Mhz        950mV
5:       1474Mhz       1000mV
6:       1538Mhz       1050mV
7:       1590Mhz       1100mV
OD_MCLK:
0:        167Mhz        800mV
1:        500Mhz        800mV
2:        800Mhz        900mV
3:        900Mhz        950mV
OD_RANGE:
SCLK:     852MHz       2400MHz
MCLK:     167MHz       1500MHz
VDDC:     800mV        1200mV

Um die Werte zu ändern erstellt man sich ein kleines Script:
Code:
echo "s 0 852 800" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 1 991 850" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 2 1138 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 3 1269 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 4 1312 950" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 5 1474 1000" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 6 1538 1050" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "s 7 1590 1100" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo "m 0 167 800" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 1 500 800" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 2 800 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
echo "m 3 900 950" > /sys/class/drm/card0/device/pp_od_clk_voltage

echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage

Hier kann man nun die Werte für Takt und Spannung für jeden Power-State nach belieben ändern.
Die oberen Werte sind die Core-Takte und -Spannungen die unteren Werte sind für den Speicher.
Zum Übernehmen dann das Script mit sudo ausführen.
 
  • Gefällt mir
Reaktionen: DrCox1911 und Iapetos
Genauso wie @Schorsch das mit dem Skript macht, so mache ich es auch mit Wattman-GTK. Der schmeißt ja auch nichts anderes am Schluss raus.

Ich weiß aber ehrlich gesagt nicht, wie ich damit z.B. die Lüftergeschwindigkeit anpasse, das habe ich jetzt nur im ROC-smi gesehen.
 
Zur Lüftersteuerung nutze ich ein fertiges Bash Script: https://github.com/grmat/amdgpu-fancontrol
Ist zwar für Arch gedacht funktioniert aber auch unter Ubuntu.
Code:
git clone https://github.com/grmat/amdgpu-fancontrol
cd amdgpu-fancontrol
sudo cp amdgpu-fancontrol /usr/bin/
sudo chmod +x /usr/bin/amdgpu-fancontrol
sudo cp amdgpu-fancontrol.service /etc/systemd/system/
sudo systemctl enable amdgpu-fancontrol
In der Datei /usr/bin/amdgpu-fancontrol kann man oben Temperaturen mit entsprechenden Lüfterdrehzahlen anpassen.
 
  • Gefällt mir
Reaktionen: Klanac und DrCox1911
Schorsch schrieb:
In der Datei /usr/bin/amdgpu-fancontrol kann man oben Temperaturen mit entsprechenden Lüfterdrehzahlen anpassen.
Vielen Dank! Könntest Du mir vll. sagen, wie ich vorgehen sollte?
Code:
klanac@linux:~$ sensors
amdgpu-pci-1e00
Adapter: PCI adapter
vddgfx:       +0.75 V 
fan1:        1273 RPM
temp1:        +25.0°C  (crit = +91.0°C, hyst = -273.1°C)
power1:        5.00 W  (cap = 180.00 W)
Ich hätte jetzt aus
Code:
# set temps (in degrees C * 1000) and corresponding pwm values in ascending order and with the same amount of values
TEMPS=( 65000 80000 90000 )
PWMS=(      0   153   255 )
Das hier gemacht
Code:
set temps (in degrees C * 1000) and corresponding pwm values in ascending order and with the same amount of values
TEMPS=( 50000 55000 60000 65000 )
PWMS=(      0   200   450    800 )
Ich bin mir aber ziemlich sicher, dass das falsch wäre bzw. die Datei anders bearbeitet werden müsste, weil ich einfach keinen Plan habe :/
 
Die PWM-Werte müssen zwischen 0 und 255 liegen, wobei 0 = 0 % Lüfterdrehzahl bedeutet und 255 = 100% Lüfterdrehzahl. Die vorgegebenen Werte bedeuten also 65°C = Lüfter aus, 80°C = 60% Speed, 90°C Lüfter voll aufdrehen. Alle Werte dazwischen werden berechnet.

Edit: Das letze Werte-Paar (90000 / 255) würde ich zum Schutz deiner Karte auf jedenfall beibehalten. Ansonsten war dein Ansatz schon richtig.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Klanac
Danke aber ich bekomme es einfach nicht hin. Hab # entfernt und aus 65′C auf 55′C runtergesetzt, abgespeichert und es passiert nichts.

Habe es dann mit sudo xed /usr/bin/amdgpu-fancontrol geöffnet, da ich sonst die Datei nicht bearbeiten bzw. abspeichern kann.
 
Nachdem du die Werte geändert hast musst du zum Übernehmen den Service neu starten.
Code:
sudo systemctl restart amdgpu-fancontrol

Edit: Bitte nicht # entfernen, sondern nur die Werte anpassen. Das letzte Werte-Paar (90000 / 255) zum Schutz deiner Karte beibehalten.
Bei mir sieht es so aus:
Code:
# set temps (in degrees C * 1000) and corresponding pwm values in ascending order and with the same amount of values
TEMPS=( 40000 65000 80000 90000 )
PWMS=(      0    78   160   255 )
PS: Falls es immer noch nicht klappt, poste doch bitte mal die Ausgabe von:
Code:
sudo systemctl status amdgpu-fancontrol
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Klanac
Danke! Also, bei mir sieht es so aus:
Code:
# set temps (in degrees C * 1000) and corresponding pwm values in ascending order and with the same amount of values
TEMPS=( 55000 80000 90000 )
PWMS=(      0   153   255 )
1. Wenn ich # nicht entferne, dann bedeutet das doch "beachte diesen Punkt nicht" oder habe ich das bis heute falsch verstanden?
2. Nach dem Befehl sudo systemctl restart amdgpu-fancontrol war der Rechner instant 80% leiser aber da dreht weiterhin etwas... Als würde nur noch ein Lüfter drehen (ist ne Pulse Vega 56 mit 2x 90mm).

Das Terminal bzw. die Ausgabe stimmt jetzt sicherlich nicht, da dort weiterhin 1273 RPM angezeigt werden.
amdgpu-pci-1e00
Adapter: PCI adapter
vddgfx: +0.80 V
fan1: 1273 RPM
temp1: +31.0°C (crit = +91.0°C, hyst = -273.1°C)
power1: 5.00 W (cap = 180.00 W)

k10temp-pci-00c3
Adapter: PCI adapter
Tdie: +39.0°C (high = +70.0°C)
Tctl: +39.0°C
Ich hatte den Wert auf 55′C runter gesetzt, weil die Lüfter ab 55′C erst anspringen auf bei rund 450 RPM laufen, bis die Temps fallen. Habe Windows 10 drauf, welches aber nur zum Spielen gebootet wird, daher weiß ich das so genau. Im Grunde höre ich meine HDD's und sonst nichts, wenn ich darauf zugreife (System und Programme über SSD's). Jetzt hören ich weiterhin die Lüfter...
 
Wenn du das # entfernst nimmt er das als zu interpretierende Zeile. Das # bedeutet diese Zeile als Kommentar anzusehen.
 
  • Gefällt mir
Reaktionen: Klanac
1. Das # bedeutet, dass die erste Zeile des Abschnittes den du gepostet hast ein Kommentar ist und nicht beachtet wird, Zeile 2 und 3 sind entscheidend und werden beachtet.
2. Was gibt folgender Befehl im Idle-Zustand aus?
Code:
cat /sys/class/drm/card0/device/hwmon/hwmon0/pwm1
 
  • Gefällt mir
Reaktionen: Klanac
Ich wollte Dir in erster Linie noch einmal Danke sagen! Jetzt ist das Arbeiten unter Linux, was 99% sind erträglich.
Ich dachte # nimmt alles bis "2x Enter" runter... wieder was gelernt.

Zu 2:
Code:
klanac@linux:~$ cat /sys/class/drm/card0/device/hwmon/hwmon0/pwm1
122
klanac@linux:~$
PWM1 wären beide Lüfter zusammen?! 122 RPM könnte ich unterschreiben aber sollten es nicht 0 sein, da 31′C?

Der Befehl Sensors spinnt aber nun ganz :D
Code:
klanac@linux:~$ sensors
amdgpu-pci-1e00
Adapter: PCI adapter
vddgfx:       +0.75 V 
fan1:        1585 RPM
temp1:        +31.0°C  (crit = +91.0°C, hyst = -273.1°C)
power1:        6.00 W  (cap = 180.00 W)

k10temp-pci-00c3
Adapter: PCI adapter
Tdie:         +37.2°C  (high = +70.0°C)
Tctl:         +37.2°C
 
Zurück
Oben