Tagebuch [Tagebuch] - PC-Games Streaming-Server - UNRAID

shadie

Volt-Modder(in)
Vorwort
Ich habe privat aktuell etwas Zeit und Lust zu basteln :).
Das Wetter ist eh Grütze, sprich Motorradfahren kommt auch nicht in Frage.

Durch die aktuelle Entwicklung in Sachen Gamestreaming und die ganzen interessanten Projekte bei z.B: Linus Techtips habe ich mir überlegt, dass ich das ja privat mal testen könnte :D.
Außerdem habe ich ein par schwache Clients im Netzwerk die auch gerne zocken wollen. (Elitebook 8460p, HTPC, Raspberry)

Einleitung
Als Testumgebung soll dafür mein Unraid Server herhalten.
Darin war vergangene Woche noch folgendes verbaut:

Hardware

i5 4570T (Dualcore + HT)
MSI B85m Eco
32GB RAM
6x 3TB HDD
1x 2TB HDD
1x 8TB HDD (für externe Backups)
2x 256GB SSD
Fractal Design Define XL R2
500W Bequiet Netzteil (genauer Name nicht parat - 2 Jahre alt)

Software

Unraid Server

Erster Hardwareumbau

Der Server fungiert aktuell nur für Dateifreigaben + par Applikationen via Docker (Emby, Videoschnitt, Backupsoftware, MC Server, CS GO Server)
Dafür hat die Hardware gereicht, für Gamestreaming wirds aber zu eng.

Übrig aus dem PC meiner Frau hatte ich noch einen i7 4790K und eine GTX 970.
Neue Konfig daher:

i7 4790K
Asus ROG Maximus 6 Hero
32GB RAM
GTX 970
6x 3TB HDD
1x 2TB HDD
1x 8TB HDD (für externe Backups)
2x 256GB SSD
Fractal Design Define XL R2
500W Bequiet Netzteil (genauer Name nicht parat - 2 Jahre alt)

Damit sollte erst mal sichergestellt sein, dass die Games ordentlicher laufen als mit der Konfig vorher.
Ich strebe nicht an, Tripple A Titel maxed out zu spielen.
Es soll nur ein Test werden ;)

Bei den Streaming Lösungen bin ich mir noch nicht so ganz sicher, habe aktuell Steam und RemoteR im Auge, mal sehen.


Recherchierte Zusatzhardware
Da der Server headless betrieben wird brauche ich einen Displayadapter um die volle Auflösung nutzen zu können.
Ich will ja keine VM erstellen und die GPU durchreichen und am Monitor spielen.
Sondern ich will das ganze Streamen.

Bestellt wurde heute daher:

https://www.amazon.de/gp/product/B0788NPQFV/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1

Dieser stellt an der GPU angeschlossen sicher, das ich remote die Auflösungen meiner Bildschirme verwenden kann.

Nachtrag
Das war es vorerst mit dem Einleitung in das Projekt.
In den kommenden Tagen werde ich noch Bilder der Hardware hochladen.
Wenn der Adapter da ist werde ich mich dran setzen und die GPU einbauen.
Dann wird die VM aufgesetzt und die GPU durch gereicht.

Ich werde für alle meine Steps versuchen eine kleine Anleitung zu schreiben.

Mir ist klar, dass das hier ein vollkommen realitätsferner Anwendungsfall ist.

Nutzen möchte ich das ganze später auf meinem HTPC im Wohnzimmer und meinen Raspberry Pi der im Zockerzimmer am TV hängt.
Sowie auf den Smartphones und Laptops von mir und meiner Frau.
Die Spiele PC´s werden auf Streaming nicht zugreifen - außer vielleicht für Videoschnitt oder OBS Gamestreaming auf Twitch.

Ich bin mal gespannt wie gut das alles laufen wird und bin mir sicher, dass das ein oder andere Problem auftauchen wird :D

Was ich zudem auch gerne überprüfen möchte ist, wie sich der Stromverbrauch entwickelt.
Sollte dieser in Richtung 100W im Leerlauf gehen (aktuell nutzt der Server mit HDD´s in Standby nur ca. 40-50W), werde ich das ganze wohl nicht dauerhaft betreiben.
 
Zuletzt bearbeitet:
AW: [Tagebuch] - PC Games Streaming Server

So kommt nun doch alles anders als gedacht - privat gabs einige Umstellungen die rückblickend betrachtet eine gute Entscheidung waren.
(jetzt nur noch ein 1-Personen Haushalt ;D)
Jetzt 3 Wochen danach ist der Kopf wieder frei und ich kann das Projekt aufnehmen.

Neuer Plan:

Server + Gaming PC zusammen ziehen und bei Bedarf mit WOL starten.

Verkauft wird demnächst nach dem Umbau:

- 4790K
- 32GB DDR3 ram
- ROG 1150 Heroe MB
- GTX 970
- Ryzen 7 1700

Vorhanden ist noch/schon:

[FONT=&quot][/FONT]- Corsair AX650 80 Plus Gold
- Inter-Tech IPC 4U-4129-N, 4HE
- 1x4tb HDD
- 1x8tb HDD extern (backup)
- 6x3tb HDD
- 2x2tb HDD
- 3x 240GB Sandisk SSD
- 1x 500GB Crucial SSD
- x370 gaming pro carbon
- 1x PCIE 4x Sata - 1xPCIE 6x Sata
- Vega 64 (mit Morpheus)
- 5x NB Eloops 120mm
- 16GB DDR4 3200 Ram
- NH-D15 als auch noch einen kleineren Noctua falls der NH-d15 nicht passen sollte (auch mit modding nicht)

Bestellt wurde:

- Ryzen 9 3900x
- 16GB DDR4 3200 Ram
- 2TB SSD Kingston (nur für Game Library)

Der Plan:

- 8 Kerne - 16 Threads + 16GB RAM + VEGA 64 + 500GB SSD + 2TB SSD - durchreichen an eine Windows WM
- 4 Kerne - 8 Threads + 16GB RAM left für andere VM´s und Docker Container
- 6x3TB + 4TB Parity - 18TB verfügbar - Datengrab
- 3x 240GB SSD als Cache + Speicher für Docker und andere VM´s
- 8TB als Backup nach wie vor

Das ganze läuft nach wie vor unter Unraid.
Da ich keinen "DAU" mehr daheim habe - wird das ganze bei Bedarf per WOL gestartet und läuft nicht mehr 24/7

Aktuell wohne ich noch in HH - Umzug steht aber ab Juli im Raum nach Hessen.
Dann soll der server in den Keller in ein Rack wandern und ich werde mir einen Lappi für z.B. latenzfreies zocken (CS GO) kaufen - z.b. mit 1660ti.
Die Tripple A titel werden dann gestreamt.


Ich hoffe, dass ich ab Samstag Bilder liefern kann :) - liegt jetzt alles an Alternate.
 
Zuletzt bearbeitet:
So - funzt leider nicht.

Es scheint mit Unraid und der VEGA 64 Probleme zu geben.
Die GTX 970 könnte ich problemlos durchreichen - die VEGA 64 lässt sich ohne IGPU nicht durchreichen.

Das bedeutet leider, dass ich an der Stelle nicht weiter komme.
Ich habe da jetzt 3 Stunden reingesteckt, bin aber an einem Punkt angekommen wo ich nicht weiß, ob sich das alles rentiert.

Ich werde vorerst den 3900x in meinen Gaming/Videoschnitt PC einbauen - die 32GB insgesamt an RAM sind dann zwar overkill aber naja.
Im Server bleiben jetzt die Komponenten aus meiner Signatur vorerst.

Eventuell gehe ich mit noch etwas mehr Zeit das Ganze noch mal an.
Mal schauen.
 
Zuletzt bearbeitet:
Und hier ist auch die Ursache für mein Problem:

Win10 VM graphics pass-through broke after AMD BIOS update - Page 3 - VM Engine (KVM) - Unraid

Seit dem AGESA Bios Update für mein X370 Mainboard (was ich ja brauche um 3900X zu verwenden.
Läuft KVM nicht mehr ordentlich.

Es sind Anpassungen seitens AMD notwendig.

Na super. :daumen:

EDIT:

Es läuft :D ich habe ein Beta Bios gefunden mit Agesa Version 1.0.0.4 und jetzt läuft die Kiste testweise mit der GTX 970 + Ryzen 7 1700.


Der Test mit der Vega 64 kommt nächste Woche :)
 
Zuletzt bearbeitet:
Gefahr erkannt Gefahr ge.........leider nein die VEGA 64 wird aus dem Rig ausziehen müssen.

Es liegt zum Glück nicht an meiner Unfähigkeit.
Es gibt bei der Vega wohl einen BUG welchen AMD beseitigen müsste.
Wirklich jemanden gefunden der ne VEGA 64 durchgereicht hat habe ich nicht finden können.

GTX 970 konnte erfolgreich durchgereicht werden.
RX 590 ebenfalls
VEGA no chance.

Habe mir daher heute ne RX 5700 XT 50th edition gekauft - die sollte diese Woche kommen.
Ich bin auch die ganze Woche mal in meiner Wohnung/Arbeit und nicht mit dem Flieger unterwegs, daher wirds am Wochenende endlich bilder geben wenn alles läuft.
 
Probleme Probleme Probleme.

Durch den Marvel Controller der SATA 6 Port Karte hat sich das BTRFS Filesystem von meinem Unraid Raid zerschossen.

Ein 2 tagelanges Backup Einspielen / entfernen des SATA Controllers war die Folge.

Aktuell warte ich auf meinen bereits in den IT Mode geflashten Dell HBA - der soll morgen kommen.

Dann kann ich die HDD´s daran anschließen und den SSD Cache wieder über die MB Anschlüsse betreiben.

Ich erstelle gerne am Wochenende mal eine Anleitung.
Allerdings habe ich für mich beschlossen, dass ich mit 2 Systemen laufen werde so wie es aktuell in der Signatur ist.

Einmal die Workstation und einmal der Server + ne GTX 970 für Gamestreaming im Wohnzimmer.

Es gibt einfach noch recht viele Probleme wenn du die VM mit der GPU nativ auf dem Monitor nutzen willst.
Soundbugs mit der RX 5700XT - Probleme mit den USB Ports da ich nen KVM Switch für mein Surface noch nutzen muss.

Für mich ist ne 2 PC Lösung besser.

Ihr bekommt aber eure Anleitung am Wochende, wie man eine Nvidia GPU nativ unter Unraid nutzen kann.
Brauche dafür nur erst mal den Dell HBA :D
 
Hi, bin auch gerade dabei einen URAID Gaming Server aufzubauen. Soweit läuft alles, hab lediglich ein paar Probleme mit Mikrorucklern in der Gaming VM.

Mein System:
Gigabyte Aorus X570
Prozessor AMD Ryzen 3900X
Grafikkarte RX 5700 XT & RX 480
Arbeitsspeicher 64GB @3600
2x "2TB PNY XLR8 CS3030 2TB M.2 NVMe

Eventuell können wir ja mal nen Erfahrungsaustausch starten!

Hier mal meine XML

Code:
<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='6'>
  <name>WOT Gaming 6-cores</name>
  <uuid>eb311607-178f-79d5-324c-064bb4d74473</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 10" icon="wot.png" os="windows10"/>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>6</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='6'/>
    <vcpupin vcpu='1' cpuset='18'/>
    <vcpupin vcpu='2' cpuset='7'/>
    <vcpupin vcpu='3' cpuset='19'/>
    <vcpupin vcpu='4' cpuset='8'/>
    <vcpupin vcpu='5' cpuset='20'/>
    <emulatorpin cpuset='0,12'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-5.1'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/2cdcc5dc-13f2-7d25-6bce-ac24851d9eda_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='none'/>
    </hyperv>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'>
    <topology sockets='1' dies='1' cores='3' threads='2'/>
    <cache mode='passthrough'/>
    <feature policy='require' name='topoext'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/user/isos/virtio/virtio-win-0.1.190.iso' index='2'/>
      <backingStore/>
      <target dev='hdb' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/disks/PNY_CS3030_2TB_SSD_PNY44200029300702054/VM/Windows 10 plain/windows10.img' index='1'/>
      <backingStore/>
      <target dev='hdc' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <alias name='pci.1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x11'/>
      <alias name='pci.2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x12'/>
      <alias name='pci.3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <alias name='pci.4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x8'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x9'/>
      <alias name='pci.6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0xa'/>
      <alias name='pci.7'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0xb'/>
      <alias name='pci.8'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:95:d5:97'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio-net'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-6-WOT Gaming 6-cores/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0c' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <rom file='/mnt/user/isos/Sapphire.RX5700XT.8192.191101.rom'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0' multifunction='on'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0c' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x07' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x0f' slot='0x00' function='0x4'/>
      </source>
      <alias name='hostdev3'/>
      <address type='pci' domain='0x0000' bus='0x08' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x050d'/>
        <product id='0x016a'/>
        <address bus='3' device='8'/>
      </source>
      <alias name='hostdev4'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x0b05'/>
        <product id='0x18e1'/>
        <address bus='3' device='9'/>
      </source>
      <alias name='hostdev5'/>
      <address type='usb' bus='0' port='4'/>
    </hostdev>
    <memballoon model='none'/>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
</domain>
 
Zurück