Steam in-home Streaming-Server (virtualisiert @ Linux KVM)

Dieses Thema im Forum "Hardwareforum" wurde erstellt von Kogenta, 17. Juli 2016.

  1. Kogenta The GOD of Terror xD

    Kogenta
    Registriert seit:
    26. November 2004
    Beiträge:
    762
    Mein Ziel
    - keinen lauten Desktop mehr unter dem Schreibtisch der im schlimmsten Fall noch Hitze wirft
    - Alle meine Spiele auf jeden Gerät (auch am TV im Wohnzimmer via ShildTV) auf maximalen Details spielen können
    - ein Zentraler Server für viele VMs zum testen, probieren ...
    - zentraler Storage-Server für meine großen HDDs
    - möglichst kompakt in einem Gerät
    - leise!

    Ich habe lange überlegt und mich darüber belesen, was heutzutage schon alles möglich ist mit Virtualisierung.
    Dank des tollen CPU-Features vt-d (intel) kann man heutzutage PCI(e) Devices in eine VM direkt durchreichen und das Gerät somit direkt ansprechen.

    Kommen wir hier gleich schon zu einem brenzligen "Knackpunkt". VT-D ist aus Intels (und vieler Mainboardhersteller) Sicht leider ein "Professionelles" Feature, was im Consumer-Desktop Bereich nicht so große Beachtung findet. Wodurch mein erster Feldversuch mit meinem noch vorhandenen Desktop nicht funktionierte. Laut ark.intel unterstützt meine CPU ab Rev.2 zwar vt-d aber mein Mainboard erkennt das trotz Bios-Update nicht so wirklich. Auch sind einige Angaben im Bios selber widersprüchlich.
    Auf der einen Seite wird es zwar als aktiv angezeigt aber auf der anderen Seite im Betriebssystem (Windows und Linux) taucht es nicht auf.
    In unterschiedlichen Foren wird man irgendwann auf ein paar Listen stoßen die zeigen mit welcher CPU/Mainboard-Kombinationen es schon erfolge gab aber sein wir mal ehrlich ... ... letztlich ist sowas wieder nichts halbes und nichts ganzes und ich möchte am Ende ja ein funktionierendes System!

    Also steht erst einmal ein HW-Kauf an:
    Da das ganze System sowieso ein Headless-Server (kein Monitor/Maus/Tasta usw.) werden soll, benötigen wir hier also richtige Server-Hardware.

    Hier kann man natürlich selber je nach Budget entscheiden. Ich möchte hier lediglich meine Konfiguration vorstellen, die ich nach meinen Anforderungen ausgesucht habe.

    Board:
    Supermicro X10SRA-F
    https://www.supermicro.nl/products/motherboard/Xeon/C600/X10SRA-F.cfm

    Ich kenne SuperMicro schon aus der Firma und habe damit eigentlich schon immer sehr gute Erfahrungen gemacht. Das non-plus-ultra für einen Headless-Server ist hier das sogenannte IPMI ... das ist sozusagen eine super-mini Rechner auf dem Mainboard der unabhängig vom Hauptsystem
    ein Webinterface zur Verfügung stellt, was man über den Browser/ip aufrufen kann. Hier kann man den Server an/ab schalten, ein Java-Basiertes VNC starten, Sensordaten checken,
    Errorlogs vom Bios/System auslesen, virtuelle Laufwerke mounten und vieles mehr.

    CPU:
    Xeon E5-2640 v4
    http://ark.intel.com/de/products/92984/Intel-Xeon-Processor-E5-2640-v4-25M-Cache-2_40-GHz

    Kommen wir zum Herzstück unseres Systemes. Neben "zocken" soll das System auch einige VMs unterschiedlicher Leistungsklasse hosten (compute, render VMS usw.).
    Aus diesem Grund entschloss ich mich für eine 10 Core CPU.

    RAM:
    4 x 16GB (1x 16384MB) Samsung M393A2G40DB0-CPB DDR4-2133 regECC DIMM CL15 Single (64 GB gesamt)

    Dieser Punkt ist ein wenig das Ärgernis ... leider (hier habe ich bei Supermicro direkt nachgefragt) benötigt das Board mit einem Xeon regECC RAM, was sich im Preis deutlich bemerkbar macht. Die einen schwören auf ECC ... ich könnte bei mir @home darauf aber auch verzichten.

    CPU Lüfter:
    EKL Alpenföhn Brocken ECO Tower Kühler

    Hält die CPU selbst unter Last auf unter 53 °C und ist flüster-leise zu einem unschlagbaren Preis!

    Netzteil:
    650 Watt Corsair RMi Series RM650i Modula 80+ Gold

    Leise (lüfterlos bis 60 % Last), Guter Wirkungsgrad, Kabel-Management

    Gehäuse:
    Fractal Define R5 gedämmt schwarz

    Schlicht, Elegant, super verarbeitet, Lüftersteuerung, gedämmt, viel Platz

    GPU
    aus meinem ehemaligen Desktop eine GTX 970

    SSDs/HDDs
    1 x 512 GB SSD für Hypervisor und boot(system) vdisks der VMs
    1 x 1 TB SSD für die Daten vdisks der VMS

    NAS-Speicher
    2 x 2 TB HDD @ Soft-RAID 1
    2 x 4 TB HDD @ Soft-RAID 1

    Software-Aufbau
    HyperVisor: Debian Jessie mit Proxmox v4 @ 4.4.13 Kernel


    Wichtig!!!!
    Das ist keine Schritt für Schritt Abtipp-Anleitung. Ich gehe davon aus, dass jeder der das machen möchte fundierte Linux-Kenntnisse besitzt und weis wie man mit ProxmoxVE umgeht.


    Am Hypervisor selber werden wir nicht viel mehr machen als die VMs verwalten. Für alle anderen Tätigkeiten erstellen wir eine eigene VM!
    Dank Proxmox können wir das meiste direkt über das Webinterface bequem steuern.

    Kommen wir zum Erstellen der eigentlichen WindowsVM
    1.)
    Als erstes benötigen wir eine Windows 10 64 Bit ISO und natürlich einen gültigen Key.
    Diese laden wir (von mir aus auch über das ProxmoxUI) auf den Server
    2.)
    Für die Installation benötigen später auch noch Treiber für Windows
    https://fedoraproject.org/wiki/Windows_Virtio_Drivers
    ladet einfach die "Latest virtio-win iso" auf den Hypervisor (nicht vergessen diese ISO mit als zusätzliches Laufwerk in die VM mit einzubinden!)
    3.)
    Eine VM über das ProxMox UI erstellen mit 16 GB RAM und 6 Cores (vom Typ HOST)
    Beim erstellen der HardDisk als Bus/Device Type "SCSI" nutzen!
    Netzwerkkarte Type: VirtIO

    Dann erstmal alles bestätigen und die VM erstellen lassen.
    So und nun geht es ab auf die Shell .... mit Putty oder einem anderen SSH-Client auf dem Hypervisor einloggen.
    Das ConfigFile eurer VM öffnen
    nano /etc/pve/qemu-server/VMID.conf

    Den Punkt Bios auf ovmf stellen
    bios: ovmf

    und falls nicht vorhanden
    machine: q35

    Dann speichern.

    Nun könnt Ihr die VM starten und Windows installieren.

    Kommen wir nun zum eigentlich spannenden Punkt.
    Richtet euch in Windows die RemoteDesktop Unterstützung ein. Wir nehmen gleich Änderungen vor die das Proxmox VNC deaktivieren (das müssen wir leider machen).

    Jetzt reichen wir unsere Grafikkarte direkt zu unserer VM durch (diese erscheint wie bei einem normalen Rechner dann im Gerätemanager!).
    Die nun folgenden Aktionen werden alle auf dem Hypervisor gemacht (im idealfall seid ihr sowieso noch eingeloggt)
    Im Proxmox Wiki gibt es hierfür eigentlich einen sehr detailierten Eintrag
    https://pve.proxmox.com/wiki/Pci_passthrough

    Für uns sind folgende Schritte wichtig.

    mit "lspci" suchen wir nach der pci card-Adresse unserer Grafikkarte

    bei mir wären das nun folgende
    02:00.0 VGA compatible controller: NVIDIA Corporation Device 13c2 (rev a1)
    02:00.1 Audio device: NVIDIA Corporation Device 0fbb (rev a1)

    also 02:00.0 für die gpu an sich und 02:00.1 für den HDMI-Soundchip der auf der GPU ist ... können wir beides durchreichen!

    HINWEIS ... diese Adressen sind NICHT FIX! Wenn ihr karten umsteckt können die sich ändern und ihr müsst das in der config anpassen!

    weiter möchte ich aber auch noch gleich die onboardSoundkarte in die VM mit durchreichen.
    in meinem Fall ist das
    00:1b.0 Audio device: Intel Corporation Wellsburg HD Audio Controller (rev 05)

    Jetzt brauchen wir die vendor-ID von der Grafikkarte

    mit "lspci -n -s card-Adresse"
    in meinem Fall für GPU+Soundchip

    lspci -n -s 02:00
    02:00.0 0300: 10de:13c2 (rev a1)
    02:00.1 0403: 10de:0fbb (rev a1)

    jetzt das ganze noch in ein File schreiben
    echo "options vfio-pci ids=10de:13c2,10de:0fbb" > /etc/modprobe.d/vfio.conf

    jetzt die Treiber auf die "Blacklist" vom Hypervisor setzen, damit dieser die Geräte sich nicht schnappen kann

    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
    echo "blacklist wellsburg" >> /etc/modprobe.d/blacklist.conf


    jetzt öffnen wir wieder das configfile unserer VM
    nano /etc/pve/qemu-server/VMID.conf

    und schreiben folgendes hinzu

    vga: none
    hostpci0: 02:00.0,pcie=1,x-vga=on # gpu
    hostpci1: 02:00.1,pcie=1 # soundchip von gpu
    hostpci2: 00:1b.0 # onboard soundchip


    im Wiki steht, dass man GPU + GPU-sound kombiniert eintragen kann
    hostpci0: 02:00 ,pcie=1,x-vga=on
    allerdings hat das bei mir nicht funktioniert und in Windows nur Fehler verursacht.

    nun das ConfigFile abspeichern und Hypervisor + VM neu starten.

    Jetzt wird es etwas .... naja bäähh ... wir benötigen einen Monitor + Maus + Tasta ... das schließen wir jetzt an den Server an.
    USB Tasta + Maus reichen wir an die windows VM durch.

    Die Frage ... wieso?! ... naja jetzt müssen wir den Treiber für die Graka installieren. RemoteDesktop macht uns da allerdings einen Strich durch die Rechnung, da das ganze
    alle Features der GPU deaktivert oder dergleiuchen. Jedenfalls habe ich es so nicht geschafft den Treiber ordentlich zu installieren.
    Mit Maus/Tasta + Monitor funktionierte das aber einwandfrei. Keine Angst ... das müssen wir nur einmalig machen und am Ende kann alles wieder abgezogen werden.

    Haben wir alles richtig gemacht, und die GPU wurde vom Treiber erkannt und richtig installiert, können wir Moni + Tasta usw. wieder vom Server abziehen.

    Jetzt loggen wir uns via RemoteDesktop ein und installieren Steam. Haben wir Steam installiert, können wir nun unsere Spiele installieren.

    Noch etwas zu windows ... deaktiviert in den Energiesparoptionen den Standby und sorgt dafür, dass euer User in Windows kein PW hat ... sprich sich automatisch nach dem boot einloggt.

    Das war jetzt mal so eine grobe Anleitung. die Individuelle Einrichtung kann dann jeder selber vornehmen.

    Bei mir läuft unter Windows nun Steam+Battle.net + openvpn
    Meine Spiele (wie z.B. das aktuele DOOM oder Unreal Tournament "4") laufen auf mximalen Details @ 1080p @ 30 Mbit Stream konstant bei 60 FPS

    Wie sieht es mit dem inputlag aus?
    Meine Geräte sind via Gbit LAN im Netzwerk verkabelt. Einen Unterschied merke ich überhaupt nicht.

    Wie ist das mit der Grafik-Qualität?
    Es gibt ein paar Schwachstellen wie z.B. Rote Schrift auf schwarzen Hintergrund. Bei genauem hinschauen sieht man einen kleinen grauen Rand oder wie man das nennen soll.
    Allerdings fällt das wirklich nur dann auf, wenn man wirklich genau darauf achtet. Im normalen Spiel wird man den Unterschied fast garnicht bemerken.

    Ich glaube das mit der Latenz nicht!
    Ist aber so :P nein Spaß bei Seite. Ich habe sogar einen Extremtest gemacht und ein Spiel auf Arbeit von zuhause gestreamt ... das Spiel .. Unreal Tournament ( ein wirklich gemeiner Test)
    Leider leidet natürlich die Qualität aufgrund meines begrenzten 10 Mbit DSL uploads ... aber von der Latenz bzgl. der Tasta/Mauseingaben war ich sprachlos. Das ganze konnte
    man ohne Probleme als "spielbar" betrachten.

    Läuft das ganze nun stabil?
    Absolut ... kein Problem bis jetzt aufgetreten.

    Was hast du nu davon?
    Freiheit :D
    Also im Ernst ... nun ist es egals mit welchen OS ich arbeite (solange darauf Steam läuft). Ich kann nun jedes Spiel spielen ... wo, wann und wie ich möchte.
    Nebenbei hatte es mir natürlich auch Spaß gemacht so ein System mal aufzusetzen und ich würde es auch immer wieder so machen!

    Wieso nochmal nun ein Xeon?
    Erst die richtigen (Achtung bestimmte E3 Modelle haben das auch nicht) Xeons mit dem richtigen Board garantieren das VT-D wirklich so problemlos läuft wie es soll. Alles andere ist Glückssache und herumprobieren.
    Naja es fehlt einfach eine richtige Konkurrenz für Intel aber solange es die nicht gibt, muss man in den sauren Apfel beißen und den Preis bezahlen.

    Vielen Dank für das lesen und eventuell konnte ich den ein oder anderen inspirieren.
     
    Zuletzt bearbeitet: 19. Juli 2016
  2. fuzzykiller Der Forentroll schlechthin

    fuzzykiller
    Registriert seit:
    27. Dezember 2003
    Beiträge:
    53.935
    Cooler Bericht. :hoch:

    Mir ist noch was eingefallen, was die Wartung erleichtern könnte: TeamViewer. Man muss zwar auch einen Haken setzen, damit der Bildschirm nicht gesperrt wird, aber sonst es wohl die beste Möglichkeit die Konsolensitzung übers Netzwerk zu steuern.
     
  3. Kogenta The GOD of Terror xD

    Kogenta
    Registriert seit:
    26. November 2004
    Beiträge:
    762
    Die Idee ist auch nicht schlecht. Eventuell teste ich aber nochmal andere VNC-Server wie z.B. ultra-VNC.
     
  4. Haggis McMutton Botschafter Nutopias

    Haggis McMutton
    Registriert seit:
    14. Mai 2000
    Beiträge:
    7.471
    Ort:
    Bad Spencer, Terence Hill 27
    Es gibt schon seit ein par Monaten Berichte über erfolgreiche Projekte auf gemieteter Rechenzeit (Amazon) Spiele im Steam zu starten und nach Hause zu streamen. Dann kostet einen dien Hardware nur pro verwendeter Minute.
     
  5. fuzzykiller Der Forentroll schlechthin

    fuzzykiller
    Registriert seit:
    27. Dezember 2003
    Beiträge:
    53.935
    TeamViewer hat den Vorteil, dass du z.B. auch den Windows-Anmeldebildschirm bedienen kannst. Ich glaube nicht, dass die VNC-Server das können.
     
  6. Kogenta The GOD of Terror xD

    Kogenta
    Registriert seit:
    26. November 2004
    Beiträge:
    762
    ja das habe ich auch mit Spannung verfolgt aber das hat gravierende Nachteile.
    Ich gehe mal von der Amazon EC2 g2.2xlarge aus
    Die GPU Leistung ist begrenzt. 4 GB RAM und irgendwas mit 1500+ CUDA Cores
    Wenn du da eine 980 TI nimmst oder eine 1080 bist du um ein vielfaches schneller.
    60 GB Speicher sind sehr sehr wenig. Für mehr müsstest du extra Storage mieten der dann auch permanent Kosten verursacht.
    Auch nicht zu vergessen ... Traffic
    Den muss man nämlich dann auch bezahlen und bei einem 30 Mbit Stream fällt massig Traffic an ... im zweistelligen GB Bereich am Tag (bei ein wenig daddeln am Abend)
    Dann belastet es deine Internetverbindung ... wenn man nur 50 MBit hat und diese nicht alleine nutzt, wird es aber sehr schnell eng.
    Auch zu beachten ist die permanent hohe Latenz, die man dann immer hat und natürlich benötigt man immer zwingend eine funktionierende Internetverbindung.
    In der Summe betrachtet ist das eine wirklich tolle Spielerei aber einen ernsthaften Nutzen bzw. Ersatz gegenüber der lokalen Streaming Variante kann ich da aktuell nicht sehen.

    Das Problem hätte ich nicht, da ich in meinem lokalen Netz den Auto-Login laufen lassen kann ... die VM macht eh nichts anderes als STEAM zu hosten ... also habe ich da auch keine Angst vor Viren.

    Hier mal ein paar Auszüge aus vnstats um mal ein Gefühl zu bekommen was da an Traffic anfällt.
    Allerdings ist das gerade vom kompletten Hypervisor ... also so 3 -5 GB pro Tag könnt Ihr im Schnitt für andere VMS/Dienste rechnen und der Rest ist nur GameStreaming

    Code:
         day         rx      |     tx      |    total    |   avg. rate
         ------------------------+-------------+-------------+---------------
         07/01/2016     4.01 GiB |   20.17 MiB |    4.03 GiB |  390.83 kbit/s
         07/02/2016   209.76 GiB |   20.30 GiB |  230.07 GiB |   22.34 Mbit/s
         07/03/2016    28.22 GiB |   53.90 GiB |   82.11 GiB |    7.97 Mbit/s
         07/04/2016    45.79 GiB |   22.34 GiB |   68.13 GiB |    6.62 Mbit/s
         07/05/2016     7.51 GiB |   33.62 GiB |   41.12 GiB |    3.99 Mbit/s
         07/06/2016    27.65 GiB |   21.46 GiB |   49.11 GiB |    4.77 Mbit/s
         07/07/2016     4.07 GiB |   27.15 GiB |   31.22 GiB |    3.03 Mbit/s
         07/08/2016    22.02 GiB |    3.69 GiB |   25.71 GiB |    2.50 Mbit/s
         07/13/2016     5.95 GiB |   27.56 GiB |   33.51 GiB |    3.25 Mbit/s
         07/14/2016    27.21 GiB |   26.34 GiB |   53.55 GiB |    5.20 Mbit/s
         07/15/2016     8.90 GiB |   32.99 GiB |   41.90 GiB |    4.07 Mbit/s
         07/16/2016    25.16 GiB |   60.40 GiB |   85.56 GiB |    8.31 Mbit/s
         07/17/2016    42.30 GiB |   38.75 GiB |   81.04 GiB |    7.87 Mbit/s
         07/18/2016     8.60 GiB |   37.64 GiB |   46.24 GiB |    4.49 Mbit/s
         07/19/2016     9.17 GiB |   19.85 GiB |   29.01 GiB |    2.82 Mbit/s
         07/20/2016    46.50 MiB |    2.39 GiB |    2.44 GiB |  660.97 kbit/s
         ------------------------+-------------+-------------+---------------
    
    
    Code:
        month        rx      |     tx      |    total    |   avg. rate
        ------------------------+-------------+-------------+---------------
          Jul '16    476.37 GiB |  428.38 GiB |  904.75 GiB |    4.54 Mbit/s
        ------------------------+-------------+-------------+---------------
        estimated    762.87 GiB |  686.03 GiB |    1.41 TiB |
    
    
     
  7. fuzzykiller Der Forentroll schlechthin

    fuzzykiller
    Registriert seit:
    27. Dezember 2003
    Beiträge:
    53.935
    Das hat ja nichts mit Viren zu tun. :ugly:
    Ich habe bei meinem Wohnzimmer-Video-Laptop (auch mit Auto-Login) einfach festgestellt, dass die meisten Fernsteuerungsmethoden nicht ausreichend sind. Klar kann ich über RDP ran, aber dann muss ich hinterher wieder die Tastatur anschließen zum Anmelden. Genauso VNC oder reine Maus/Tastatur-Apps fürs Smartphone: Viele steigen aus, sobald UAC zuschlägt.

    Wie gesagt, ist nur (m)eine Empfehlung für Systeme ohne physische Maus/Tastatur (und evtl. Bildschirm).
     
  8. unreal ..hat nun HSDPA :ugly:

    unreal
    Registriert seit:
    6. Mai 2005
    Beiträge:
    25.968
    Als Dienst vermutlich schon.
     
  9. Kogenta The GOD of Terror xD

    Kogenta
    Registriert seit:
    26. November 2004
    Beiträge:
    762
    was mich an TeamViewer nen bissel stört, dass das dennoch irgendwie über einen Drittanbierter geht.

    unabhängig davon ... wer meint 10 SATA-Ports kann man im Normalfall eventuell nicht voll belegen ... meine sind voll ^^
    Ich habe jetzt alle SSDs die ich noch so rumliegen hatte mit eingebaut ... unter anderem einen RAID0 Verbund aus 3 x 120 GB SSD

    read und write nach dem ersten Test kann sich sehen lassen

    Code:
    root@thundercat:/mnt/ssd-raid# dd if=/dev/zero of=testfile bs=1G count=10
    10+0 records in
    10+0 records out
    10737418240 bytes (11 GB) copied, 5.81941 s, 1.8 GB/s
    
    
    root@thundercat:/mnt/ssd-raid# dd if=testfile of=/dev/null bs=1G count=10
    10+0 records in
    10+0 records out
    10737418240 bytes (11 GB) copied, 7.46789 s, 1.4 GB/s
    
    nun sind es in der Summe

    1 x 512 GB SSD
    1 x 1 TB SSD
    1 x 250 GB SSD
    3 x 120 GB SSD (Soft-Raid 0)
    2 x 2 TB HDD (Soft-RAID 1)
    2 x 4 TB HDD (Soft-RAID 1)

    Ich muss demnächst mal ein paar Tests machen und VMs auf dem Raid ablegen ... mal sehen ob das einen Unterschied macht zu einer normalen SSD
     
  10. unreal ..hat nun HSDPA :ugly:

    unreal
    Registriert seit:
    6. Mai 2005
    Beiträge:
    25.968
    Im LAN nicht.
     
Top