Gaming auf KVM (Qnap)

Denlo

Newbie
Registriert
Jan. 2019
Beiträge
6
Moin Moin :),

ich hoffe Ihr könnt mir bei folgender Thematik helfen.
Vor einiger Zeit habe ich einen unRAID Server auf meinem PC gehostet und darauf mit 2 KVM via GPU passthrough (GTX970) gespielt, was erstaunlich gut funktioniert hat. (4vCore von einem i7-5930k,6Gb Ram, hatte~5% weniger Leistung als auf meinem nativen Betriebssystem)
Da dies so wunderbar geklappt hat, wollte ich es auch mal auf meinem QNAP probieren (mit der Virtualization Station von QNAP) wo die Leistung des Nas durchaus ausreichend sein sollte. Jedoch ist die Leistung alles anderes als gut. Die KVM läuft mit 8vCore, 8Gb RAM und der unten besagten Grafikkarte. In Diablo bspw. schaffe ich gerade einmal 10-30fps. Lt. MSI Afterburn keinerlei Auslastung auf dem GPU+CPU.

Meine Hardware:
Qnap TS-877-1700-16G
Prozessor: AMD Ryzen™ 7 1700 8 Kerne/16 Threads 3,0 GHz Prozessor, Turbo Core 3,7 GHz
RAM: 16GB (Wobei nur 8Gb. der KVM zugeteilt sind.)
Die KVM ist auf ein 512GB Samsung PRO SSD gehostet.
Grafikkarte: EVGA GTX 1060 SC Gaming 6GB
Betriebssystem: Sowohl Win8.1 als auch Win10 getestet.
GameDVR off
Neuster GPU Treiber
Habe leider starke dpc latency.

Screenshots anbei.

Ich hoffe Ihr könnt mir weiterhelfen, Danke euch!

Mfg.

Denlo
 

Anhänge

  • 1.JPG
    1.JPG
    173,9 KB · Aufrufe: 620
  • Diablo III.jpg
    Diablo III.jpg
    377,2 KB · Aufrufe: 587
  • QNap.JPG
    QNap.JPG
    114,5 KB · Aufrufe: 585
  • Unbenannt.JPG
    Unbenannt.JPG
    173 KB · Aufrufe: 555
Also ich bin kein Experte bezüglich GPU-passthrough. Aber nach meinen Erfahrungen mit VMs wundert es mich eher, dass das mit deinem alten Setting so gut ging. Hast du denn irgendwelche Quellen, wo jemand berichtet mit einer QNAP Virtualisation Station auf diese Art gut spielen zu können?
Vielleicht geht da bei der Software prozentual einfach mehr Leistung drauf oder die GPU taktet überhaupt nicht sinnvoll hoch?
 
Oder qemu/kvm liegt auf der QNAP in einer alten Version vor oder wurde mit (bzw. ohne) irgendwelchen Flags kompiliert, die passthrough blockieren.
Siehst du denn in deiner VM die 1060 oder nur eine virtuelle GPU?
 
Bei quemu/kvm ist eins wichtig: der Kernel. Der muss einfach up2date sein. Am besten dafür ist eine Version von Linux wie Fedora die immer recht schnell neue Features bekommt. Ich habs genau deswegen mittlerweile eingestellt weil es einfach nichts bringt wenn das System beim nächsten Update nicht mehr geht.

Des Weiteren denke ich, dass QNAP einfach nicht die passende HW dafür hat bzw. die Firmware da nicht mitspielt. Da ist ein "normaler" Dekstop halt doch was anderes wo es auch mal ein echtes FW Update sprich BIOS/UEFI Update gibt.
 
Zuletzt bearbeitet: (mein solte natürlich mal sein...)
Chiptakt steht ja im Screenshot...dann scheint der ja eher nicht das Problem zu sein.
Was Cool Master da schreibt, schlägt ja in die gleiche Kerbe wie meine Frage oben (hat das mit Qnap schon mal bei jemanden so geklappt?).
 
Habe es noch nirgends gesehen, dass jemand auf einem Qnap eine Gaming KVM hostet. Ich denke aber, dass auch nicht so viele einen solchen NAS für eine KVM nutzen.
Habe mein unRAID System damals mit folgender Hardware betrieben:
INTEL Core i7-5930K
Corsair Dominator Platinum 32GB @ 2666Mhz
Asus GTX 980 ti Strix
Asus GTX 970 Strix
ASUS Essence STX II
Asus ROG Rampage V Extreme
Samsung SSD 850 EVO 500 GB
Samsung SSD 840 EVO 500 GB
Da hatte ich je GPU eine KVM mit 4vCores laufen und hatte bei beiden KVM's bei 1440p 100+ fps...

Die GPU wird wie Anbei vom NAS erkannt und durchgereicht.
 

Anhänge

  • GPU.JPG
    GPU.JPG
    95,7 KB · Aufrufe: 489
Wie schon gesagt bei VMs mit GPU Passthrough benötigt es ein System welches im Prinzip Bleeding Edge ist. Nicht nur was den Kernel angeht, der laut QNAP mit 4.14 auch relativ aktuell ist, sondern auch die Firmware der Produkte bzw. der benutzen HW. Wichtig ist vor allem auch ob der PCIe Steckplatz für die GPU isoliert ist (IOMMU Gruppen) oder ob da noch andere Teile wie z.B. die Netzwerkanschlüsse, USB oder andere Sachen dran hängen.

Ich würde mal gerne den Output für die IOMMU Gruppen sehen. Dies geht z.B. mit diesem Script:

Bash:
#!/bin/bash
shopt -s nullglob
for d in /sys/kernel/iommu_groups/*/devices/*; do
    n=${d#*/iommu_groups/*}; n=${n%%/*}
    printf 'IOMMU Group %s ' "$n"
    lspci -nns "${d##*/}"
done;

Man muss einfach sagen, dass ein Intel System bei dem Thema GPU Passthrough deutlich besser ist weil das im Prinzip seit Ivy Bridge fast jede CPU im Mainstream kann. Mein Threadripper ging zwar auch gut vor allem mit der Performance aber die Host-Seite ergo Ubuntu war damit nicht so zufrieden und ist öffters mal abgeschmiert.

Evtl. würde ich mich auch mal direkt an QNAP wenden und fragen ob sie dir da helfen können. Ich denke du hast noch Garantie und Support? Wenn ja würde ich dies auf jeden Fall nutzen, weil du damit evtl. vielen anderen helfen kannst und es sich somit auch für QNAP bezahlt machen würde dir zu helfen und sich dem ganzen anzugehen.
 
Danke für die Antworten :).
Das mit den IOMMU Gruppen kommt mir bekannt vor, bzw. kenne ich das noch aus dem unRAID System.
Wie wird das Script ausgeführt ? Bin leider ein Linux Laie :/
Ja, der NAS ist erst 4 Monate alt. Werde mich da parallel an QNAP wenden...
 
Den Code von @Cool Master in einer Textdatei abspeichern und dann mit entweder als Administrator oder mit sudo sh /pfad/zur/vorher/gespeicherten/Textdatei.
 
Habe den Support angeschrieben, jedoch noch keine Antwort erhalten.
Leider bin ich nicht in der Lage das Script auszuführen. Habe es als .txt in einem Ordner auf dem Nas abgespeichert. Scheitere aber an den Consolen- Kenntnissen um es auszuführen. :(
 
Denke habe es hinbekommen :P:

00:00.0 Class 0600: 1022:1450
00:00.2 Class 0806: 1022:1451
00:01.0 Class 0600: 1022:1452
00:01.1 Class 0604: 1022:1453
00:01.2 Class 0604: 1022:1453
00:01.3 Class 0604: 1022:1453
00:01.4 Class 0604: 1022:1453
00:02.0 Class 0600: 1022:1452
00:03.0 Class 0600: 1022:1452
00:03.1 Class 0604: 1022:1453
00:03.2 Class 0604: 1022:1453
00:03.3 Class 0604: 1022:1453
00:03.4 Class 0604: 1022:1453
00:04.0 Class 0600: 1022:1452
00:07.0 Class 0600: 1022:1452
00:07.1 Class 0604: 1022:1454
00:08.0 Class 0600: 1022:1452
00:08.1 Class 0604: 1022:1454
00:14.0 Class 0c05: 1022:790b
00:14.3 Class 0601: 1022:790e
00:18.0 Class 0600: 1022:1460
00:18.1 Class 0600: 1022:1461
00:18.2 Class 0600: 1022:1462
00:18.3 Class 0600: 1022:1463
00:18.4 Class 0600: 1022:1464
00:18.5 Class 0600: 1022:1465
00:18.6 Class 0600: 1022:1466
00:18.7 Class 0600: 1022:1467
01:00.0 Class 0106: 1b21:0625
03:00.0 Class 0c03: 1022:43bb
03:00.1 Class 0106: 1022:43b7
03:00.2 Class 0604: 1022:43b2
04:00.0 Class 0604: 1022:43b4
04:01.0 Class 0604: 1022:43b4
04:04.0 Class 0604: 1022:43b4
05:00.0 Class 0604: 1b21:1182
06:03.0 Class 0604: 1b21:1182
06:07.0 Class 0604: 1b21:1182
07:00.0 Class 0200: 8086:1539
08:00.0 Class 0200: 8086:1539
09:00.0 Class 0604: 1b21:1182
11:00.0 Class 0106: 1b21:0625
12:00.0 Class 0106: 1b21:0625
13:00.0 Class 1300: 1022:145a
13:00.2 Class 1080: 1022:1456
13:00.3 Class 0c03: 1022:145c
14:00.0 Class 1300: 1022:1455
14:00.2 Class 0106: 1022:7901
14:00.3 Class 0403: 1022:1457
0a:03.0 Class 0604: 1b21:1182
0a:07.0 Class 0604: 1b21:1182
0b:00.0 Class 0200: 8086:1539
0c:00.0 Class 0200: 8086:1539
0f:00.0 Class 0300: 10de:1c03
0f:00.1 Class 0403: 10de:10f1

Hilft das ohne Beschriftung weiter :confused_alt:?
 
Die letzten zwei Spalten sind interessant. Die vorletzte Spalte ist die Vendor ID und die letzte Spalte die Device ID.
1022:1450 ist somit: https://www.pcilookup.com/?ven=1022&dev=1450&action=submit

Jetzt musst du deine GPU heraus finden und ob diese im besten Fall eine eigene PCIe-Adresse hat (erste Spalte bis zum Class soweit ich weiß) und kannst dann in den QEMU/KVM Settings prüfen ob wirklich das komplette Device an die VM durch gereicht wird.
 
1c03 ist meine GPU. das müsste doch die vorletzte sein ?
 

Anhänge

  • Gtx1060.JPG
    Gtx1060.JPG
    14,7 KB · Aufrufe: 451
10de:10f1 muss auch mit durchgeschleift werden. Das ist der Audio Teil für die Graka. Das kann zu Problemen kommen wenn das nicht mit durchgeschleift wird.
 
Zurück
Oben