Jump to content

VM für Gaming, etwas Laggy


Go to solution Solved by alturismo,

Recommended Posts

Hi hat jemand hier Erfahrung gesammelt mit Zocken auf einer VM ? 

Ich hab immer wieder mal so Micro Ruckler drinnen..

 

ich hab jetzt schon folgende Dinge probiert..

 

  • keinen Shareordner (Virtiofs Mode) eingebunden, scheinbar macht das Probleme.
  • Graka ist Durchgereicht mit angepassten BIOS auch die Soundkarte
  • VM läuft auf einer eigenen NVME 
  • bin auf der neuesten Unraid Version 6.12.8
  • Maschine: hab ich jetzt auf i440fx-7.2 gestellt <-- das hat eine Verbesserung gebracht, aber immer noch nicht ganz sauber wie Baremetal.

 

 

Der Bus für vdisk ist VirtIO (hab ich jetzt so gelassen, da Standard <-- hier gibts aber auch z.B. Sata)

 

CPU Kerne hab ich nicht isoliert, würde gerne das Unraid die verwendet wenn VM nicht läuft.. ich schalte die VM tatsächlich nur ein wenn ich am TV zocken will

 

Im Forum habe ich gesucht und bin nur auf ältere Beiträge und diesen hier gestoßen..

der Letzte Beitrag ist der wichtigste..

 

Hat jemand zufällig ein paar Workarounds hiervon angewendet, ich hab jetzt schon seit Tagen hier rumgemacht mit 2x Grafikkarte gewechselt und min. 20x Win neu installiert :Dund seh den Wald vor lauter Bäumen nicht.. und bevor ich jetzt wieder wild was umstelle, frag ich hier mal nach. 

 

Oder hab ich hier einfach mal die Falsche Einstellung zum Thema GamingVM, ich denke das müsste sauber laufen wie ein normaler PC und kein Unterschied machen oder? klar statt 140 fps vielleicht nur 110 aber so diese Micro Ruckler sind nervig. 

 

anbei noch die XML falls da was drinnen falsch sein sollte:

 

<?xml version='1.0' encoding='UTF-8'?>
<domain type='kvm' id='22'>
  <name>Windows 11</name>
  <uuid>7ef27566-80ab-319f-473a-22faa2736086</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Windows 11" icon="windows11.png" os="windowstpm"/>
  </metadata>
  <memory unit='KiB'>20971520</memory>
  <currentMemory unit='KiB'>20971520</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>12</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
    <vcpupin vcpu='4' cpuset='4'/>
    <vcpupin vcpu='5' cpuset='5'/>
    <vcpupin vcpu='6' cpuset='6'/>
    <vcpupin vcpu='7' cpuset='7'/>
    <vcpupin vcpu='8' cpuset='8'/>
    <vcpupin vcpu='9' cpuset='9'/>
    <vcpupin vcpu='10' cpuset='10'/>
    <vcpupin vcpu='11' cpuset='11'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-7.2'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi-tpm.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/7ef27566-80ab-319f-473a-22faa2736086_VARS-pure-efi-tpm.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv mode='custom'>
      <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='6' threads='2'/>
    <cache mode='passthrough'/>
  </cpu>
  <clock offset='localtime'>
    <timer name='hypervclock' present='yes'/>
    <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='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/game/Windows 11/vdisk1.img' index='3'/>
      <backingStore/>
      <target dev='hdc' bus='virtio'/>
      <serial>vdisk1</serial>
      <boot order='1'/>
      <alias name='virtio-disk2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/isos/Win11_23H2_German_x64v2.iso' index='2'/>
      <backingStore/>
      <target dev='hda' bus='sata'/>
      <readonly/>
      <boot order='2'/>
      <alias name='sata0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/mnt/cache/isos/virtio-win-0.1.240-1.iso' index='1'/>
      <backingStore/>
      <target dev='hdb' bus='sata'/>
      <readonly/>
      <alias name='sata0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='sata0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </controller>
    <interface type='direct' trustGuestRxFilters='yes'>
      <mac address='52:54:00:dc:1e:0d'/>
      <source dev='vhost0' mode='bridge'/>
      <target dev='macvtap21'/>
      <model type='e1000'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' 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-22-Windows 11/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>
    <tpm model='tpm-tis'>
      <backend type='emulator' version='2.0' persistent_state='yes'/>
      <alias name='tpm0'/>
    </tpm>
    <audio id='1' type='none'/>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <rom file='/mnt/game/MSI2070 Super Ventus Gp-FIXED.rom'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x045e'/>
        <product id='0x02e6'/>
        <address bus='1' device='2'/>
      </source>
      <alias name='hostdev2'/>
      <address type='usb' bus='0' port='2'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x046d'/>
        <product id='0x0a66'/>
        <address bus='1' device='5'/>
      </source>
      <alias name='hostdev3'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x046d'/>
        <product id='0xc52b'/>
        <address bus='1' device='9'/>
      </source>
      <alias name='hostdev4'/>
      <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>

 

Edited by eLpresidente
XML eingefügt + besser beschrieben
Link to comment
4 hours ago, eLpresidente said:

Hi hat jemand hier Erfahrung gesammelt mit Zocken auf einer VM ? 

 

yep

 

4 hours ago, eLpresidente said:

Ich hab immer wieder mal so Micro Ruckler drinnen..

 

ich glücklicherweise nicht ;) ich spiels aber auch keine Ego Shooter oder so ;)

 

letzte Spiele waren persönlich Alan Wake 2, aktuell spielt mein Frauchen Balduars Gate 3, alles 4k 60+ VRR

wenn BG jetz Issues hätte würde mein Frauchen mir das sicher sagen ... bzw. anweisen "stell das ab" ;)

 

mein setup sieht allerdings auch anders aus

 

- vdisk image virtio

- q35

- isolierte Cores (das war hier der Gewinner, spürbar)

- ein paar Anpassungen an der xml

  - emulator pin (einlesen, spürbar)

  - zusätzlich featureset und clock settings (einlesen, war aber nicht so spürbar ...)

- PCIe passthrough separater USB Controller

 

und ... keine powertop, Stromsparmechanismen am Server ... ;) wenn ich mich recht erinnere ... sieht das bei dir anders aus ;)

 

5 hours ago, eLpresidente said:

, ich denke das müsste sauber laufen wie ein normaler PC und kein Unterschied machen oder? klar statt 140 fps vielleicht nur 110 aber so diese Micro Ruckler sind nervig. 

naja, ganz baremetal hast du nicht da ja darunter ein Host OS läuft, aber die Ruckler sind sicherlich nicht nice ...

man kann sagen 5 - 10 % Verlust, je nach Setup ... bei AMD sind Mikroruckler meist normal (leider).

 

wie gesagt, in Summe hatte ich anfangs (2017 oder so) auch ab und an leichte Ruckler, waren aber mit CPU Isolation setup Geschichte (hier zumindest), war auch der Grund für mich damals auf Unraid zu setzen. Pauschal hängt halt viel vom lokalen setup ab, bei meinem Schwager lief es auch perfekt so und der ist CS Gamer.

 

Und falls doch noch aktiv, Stromsparmechanismen und Gaming ... naja ;)

Link to comment
3 hours ago, alturismo said:

 

letzte Spiele waren persönlich Alan Wake 2, aktuell spielt mein Frauchen Balduars Gate 3, alles 4k 60+ VRR

ja gut Ego Shooter würde ich auch nicht über ne VM Spielen, ich hab die Microruckler auch immer in Verbindung mit Soundabbrüchen, ich glaub wenn der Sound nicht haken würde, wäre es garnicht so auffällig..

Quote

 

1.  vdisk image virtio  

2.  q35  

3. isolierte Cores (das war hier der Gewinner, spürbar)

4.  emulator pin (einlesen, spürbar)

5. zusätzlich featureset und clock settings (einlesen, war aber nicht so spürbar ...)

6. PCIe passthrough separater USB Controller

7. Stromsparmechanismen

 

 

Kurze Fragen/Rückmeldungen zu oben.

 

1. Ist bei mir auch so, lass ich erstmal

2. Ist das deine Maschine ? also wo ich 7.2 drinnen habe? 

3. Probiere ich jetzt mal als Nächstes

4. Hab ich in dem oben beigefügten Thread gelesen, Wenn ich es richtig verstanden habe muss ich ein Kern isolieren (also nur einen für ihn alleine) und es diesem Emulator PIN in der XML zuweisen oder? 

5. da Stand auch was im beigefügten Thread, würde ich probieren wenn die anderen Dinge keine Abhilfe schaffen

6. Okey das sollte jetzt nicht ausschlaggebend sein für meine Microhänger

7. Gut die muss ich tatsächlich ausschalten, du hast recht ich war der Schwabe mit dem Stromsparthema :D Zu dem Punkt vielleicht eine Frage: Ich hab mir ne 2070 eingebaut, die braucht im idle gefühlt 40-50 Watt, wieviel ziehen den deine? Da kann man auch nichts machen oder? ich dachte immer wenn die VM aus ist, braucht die Graka auch kein / kaum Strom, da Sie durchgereicht ist. Wenn da nichts zu machen ist, kann ich gleich aufhören 80W 24/7 ist mir dann doch etwas zuviel.. vorallem da ich ein Brief von meinem EVU bekommen habe das die Kw/h jetzt 42 Cent kosten soll 

 

Danke mal wieder für deine Hilfe 

 

Link to comment
1 hour ago, eLpresidente said:

2. Ist das deine Maschine ? also wo ich 7.2 drinnen habe? 

was meinst du ? q35 ... wenn, dann ja, mashine type (q35 ist uefi, i4400 ist legacy)

 

1 hour ago, eLpresidente said:

4. Hab ich in dem oben beigefügten Thread gelesen, Wenn ich es richtig verstanden habe muss ich ein Kern isolieren (also nur einen für ihn alleine) und es diesem Emulator PIN in der XML zuweisen oder? 

Nein

 

ich isoliere Kerne welche ich dann exklusiv der VM gebe, aber nie 0 !!! der sollte bei Linux immer dem Host gelassen werden.

 

in meinem Beispiel, schau dir das Thema "Strom sparen Anätze" an ... ich meine da sind screens wie ich da ran gehe

 

emulatorpin ist dann außerhalb der VM Kerne auf dem Host zugewiesen ...

 

einfach einlesen, gibt es auch einen Thread im VM Bereich ... VM Performance ... emulator pin

 

1 hour ago, eLpresidente said:

6. Okey das sollte jetzt nicht ausschlaggebend sein für meine Microhänger

nicht "unterbewerten ..."

 

1 hour ago, eLpresidente said:

7. Gut die muss ich tatsächlich ausschalten, du hast recht ich war der Schwabe mit dem Stromsparthema :D Zu dem Punkt vielleicht eine Frage: Ich hab mir ne 2070 eingebaut, die braucht im idle gefühlt 40-50 Watt, wieviel ziehen den deine? Da kann man auch nichts machen oder? ich dachte immer wenn die VM aus ist, braucht die Graka auch kein / kaum Strom, da Sie durchgereicht ist. Wenn da nichts zu machen ist, kann ich gleich aufhören 80W 24/7 ist mir dann doch etwas zuviel.. vorallem da ich ein Brief von meinem EVU bekommen habe das die Kw/h jetzt 42 Cent kosten soll 

naja, auch dazu siehe meinen Thread "Strom sparen Ansätze ..." lass aber das Thema CPU ACPI pstate mal außen vor, nur die nvidia persistenced Themen sind dafür interessant, ne Karte in den "sleep" schicken wenn nicht in use ... braucht zwar immer noch etwas Strom, aber nicht soviel wie "normal"

 

Beispiel

 

image.thumb.png.0369409fc3c5c625637bfd0fd018edbb.png

Link to comment
29 minutes ago, alturismo said:

image.thumb.png.0369409fc3c5c625637bfd0fd018edbb.png

 

Interessantes Thema. Ich nutze schon sehr lange eine Windows 10 VM als Gaming PC bisher läuft alles sehr performant.

Wobei ich sagen muss das ich nicht jede FPS hinterher jage. 

 

1. Ich nutzte noch einen 60Hz Monitor 🙂

2. Mein Internet ist nicht immer stabil - Laut Router Statistic finden viele Fehlerkorekturen statt.

 

 

Was ist das obrige Bild für ein Monitoring ?

Link to comment
2 hours ago, alturismo said:

naja, auch dazu siehe meinen Thread "Strom sparen Ansätze ..." lass aber das Thema CPU ACPI pstate mal außen vor, nur die nvidia persistenced Themen sind dafür interessant, ne Karte in den "sleep" schicken wenn nicht in use ... braucht zwar immer noch etwas Strom, aber nicht soviel wie "normal"

dann fange ich tatsächlich damit an, weil 80 Watt 24/7 kann ich das ding nicht laufen lassen. 

 

kurz, da ich auf arbeit bin und nicht alles durchlesen kann.. du sprichst von diesem Thread oder? 

 

Strom sparen ansätze

 

den Rest probiere ich erstmal selber wie oben beschrieben von dir durch.. 

 

Quote

ich isoliere Kerne welche ich dann exklusiv der VM gebe, aber nie 0 !!! der sollte bei Linux immer dem Host gelassen werden.

Okey das hab ich falsch gemacht, ich dachte die E-Cores reichen aus.. ich Pinn dann mal eben 4 von 6 P Cores inkl. ihr HT teil auf die VM (also 0 und 1 lass ich für unraid + E Cores)

 

Quote

was meinst du ? q35 ... wenn, dann ja, mashine type (q35 ist uefi, i4400 ist legacy)

ja genau das hab ich gemeint.. ich probier es auch mal mit UEFI q35..

 

 

Edited by eLpresidente
Link to comment
  • Solution
5 hours ago, eLpresidente said:

Okey das hab ich falsch gemacht, ich dachte die E-Cores reichen aus.. ich Pinn dann mal eben 4 von 6 P Cores inkl. ihr HT teil auf die VM (also 0 und 1 lass ich für unraid + E Cores)

 

mal als Anhlatspunkt, Frauchen ist ja gerade am spielen ;)

 

während dem Gaming hast du (je nach Game und aktueller Last) schon ne andere Leistungsaufnahme ... das nur am Rand erwähnt.

 

image.thumb.png.289c0a887c5fa8c526185ec696db9578.png

 

ist gerade während einer Sequenz ...

 

7 hours ago, Thorsten said:

Was ist das obrige Bild für ein Monitoring ?

nur zur Info, Dashboard ist HA, Sensoren sind selbst gemacht, Mix aus Unraid onboard, HW Monitor auf dem Client, MSI mit ... in json gepackt, als Sensoren bereitgestellt für HA und eingebunden, keine plug & play Lösung ...

 

@eLpresidente Thema Pinning

 

Unten siehst du meine generelle Isolierung, oben die Zuweisung der VM's

 

image.thumb.png.7a4b1038d7f5e7dbce66bc948f3f9bb9.png

 

_Media ist die Gaming VM ... die läuft an sich nur in isolierten Kernen.

die andere ist der Desktop PC (Server == auch Desktop PC bei bedarf mit eigener GPU), der braucht nicht soviel ...

 

CPU Last verteilt sich so wie folgt

 

image.png.728b680e5460d1c6b77f0f18f6f8ee0f.png

 

Emulator Pin liegt auf einem der laufenden Unraid Cores

 

image.png.f1e61b3ee97530ebf67f449ce87b3d4a.png

 

Spiele liegen auf einer separaten vdisk, nur dass ich die besser skalieren kann

 

image.thumb.png.9c6a8f36b1643cabd1e2ee568d85450d.png

 

Thema dGPU's und persistence mode ... ich nutze dafür hook scripts, ist in dem genannten Link eigentlich gut erklärt,

Achtung !!! geht NUR ohne vfio Binding's ... ### ACHTUNG ### kann zu Server Crashs führen wenn falsch konfiguriert und / oder

parallele Zugriffe stattfinden und / oder VM falsch gestartet wird ### ACHTUNG ### EINLESEN !!!

 

Das Thema mit ondemand, powersave, ... (acpi cpu) oder performance und powersave (pstate) mal links liegen lassen,

das hat sich mittlerweile bis auf ~1-2 W erledigt mit den neueren Kernels ...

 

Dann hab ich hier noch ein paar Anpassungen gemacht, aber dazu bitte einlesen ob und wie du das bei dir umsetzen willst ....

ich erkläre jetzt hier nicht die komplette qemu Saga ... aber kvm / qemu kann halt noch einiges mehr was nicht in der webui ist,

wenn man hart auf hart gehen will ...

 

image.png.982d93baa622f888c72177d26d13422d.png

 

damit hast du bereits genug Material um vorwärts zu kommen.

 

Meiner Erfahrung nach ist der große Hebel sauberes Pinning im Gaming Bereich ... ohne kommt man immer in die Mikroruckler Kiste rein, auch wenn oft gesagt wird man sollte alles Unraid überlassen, sehe ich persönlich meiner Erfahrung nach hierfür etwas anders ;)

 

testen und selbst entscheiden ist ja meine Devise ;) daher halte ich mich hier normal auch gerne zurück.

  • Like 1
  • Thanks 1
Link to comment
9 hours ago, eLpresidente said:

7. Gut die muss ich tatsächlich ausschalten, du hast recht ich war der Schwabe mit dem Stromsparthema :D Zu dem Punkt vielleicht eine Frage: Ich hab mir ne 2070 eingebaut, die braucht im idle gefühlt 40-50 Watt, wieviel ziehen den deine? Da kann man auch nichts machen oder? ich dachte immer wenn die VM aus ist, braucht die Graka auch kein / kaum Strom, da Sie durchgereicht ist. Wenn da nichts zu machen ist, kann ich gleich aufhören 80W 24/7 ist mir dann doch etwas zuviel.. vorallem da ich ein Brief von meinem EVU bekommen habe das die Kw/h jetzt 42 Cent kosten soll 

 

um das Thema etwas runder zu machen ... und auf deine PN Anfrage @eLpresidente, Danke aber Nein, mache ich nicht, alles nur zum Spaß hier ;)

und freut mich dass die VM jetzt lag frei läuft mit Isolation ;)

 

Voraussetzungen dass ich Nvidia Karten im Idle wenn Sie nicht in Nutzung sind etwas stromsparender bekomme

 

1/ KEIN VFIO bind ... ist zwingend notwendig um das umzusetzen, geht wenn dann nur wenn das System ne iGPU hat und nutzt

  - VM aufsetzen mit der/n NV Karte/n

  - VFIO binds raus, Unraid neu starten

  - VM's mal starten, stoppen, starten ... schauen ob das ohne VFIO bind alles läuft wie es soll

  - dazwischen auch mal Docker laufen lassen wo ggf. auf Hardware zugreifen wie Plex und co und prüfen dass diese NICHT Nvidia nutzen

  - dann kann man weiter machen ...

2/ VM aus

3/ in der Konsole mal folgenden Befehl ausführen

 

nvidia-smi -i 0 -pm 1 &

 

  - damit setzen wir die GPU in den höchsten Ruhezustand ... dauert ein paar Sekunden ...

  - -i 0 == erste GPU, -i 1 == zweite GPU, usw usw ... mit nvidia-smi bekomme ich die ID angezeigt, bei einer ist es immer 0

  - wenn erfolgreich (Ergebnis ok) können wir weiter machen

 

4/ in der Konsole mal folgenden Befehl ausführen

 

nvidia-smi -i 0 -pm 0 &

 

  - damit heben wir den Ruhezustand .auf .. dauert ein paar Sekunden ...

 

5/ VM starten ob noch alles geht, ruhig das Spiel mehrmals wiederholen um zu schauen das alles stabil bleibt ...

 

6/ Automatisierung einrichten, wir wollen ja dass dies bei VM Start / Stop automatisch passiert und wir nicht jedesmal händisch ...

  - hook scripts qemu sind hierfür das Mittel der Wahl ;)

  - diese sollten jedoch besser externe Scripts ausführen und nicht nativ alles beinhalten

  - Beispiel siehe Anlagen für meine Gaming VM, führt bei Start und bei Stop jeweils separate scripts aus

 

Hier beispielsweise Inhalt des hook_scripts

 

root@AlsServer:~# cat /etc/libvirt/hooks/qemu.d/hook_scripts
#!/bin/bash

if [ $1 = "AlsPC_Media" -a $2 = "prepare" -a $3 = "begin" ]; then
        /mnt/cache/system/hook_scripts/alspc_media_start.sh &
        /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "AlsPC_Media" -a $2 = "release" -a $3 = "end" ]; then
        /mnt/cache/system/hook_scripts/alspc_media_stop.sh &
        /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
fi
exit 0;

 

Beispiel des Start scripts (muss natürlich +x gesetzt sein)

 

#!/bin/bash

nvidia-smi -i 0 -pm 0 &

sleep 1

exit 0;

 

Beispiel des Stop scripts  (muss natürlich +x gesetzt sein)

 

#!/bin/bash

nvidia-smi -i 0 -pm 1 &

sleep 1

exit 0;

 

sprich, beim Start der VM AlsPC_Media (VM_Name case sensitiv) wird der mode off gesetzt, beim Ausschalten wieder aktiv gesetzt.

 

Das sollte jetzt reichen ;)

 

ich kann das natürlich erweitern mit mehreren VM's wie hier, siehe Anhang meines hook_scripts ... habe das oben nur gekürzt,

einfach erweitern und für jeden Vorgang ein separates script erstellen ...

 

 

image.png

image.png

  • Like 1
  • Thanks 1
Link to comment
Quote

Meiner Erfahrung nach ist der große Hebel sauberes Pinning im Gaming Bereich 

Du hast recht, so ist es auch.. jetzt läuft es schon viel besser, keine Ruckler mehr im Sound und auch visuell spürbar kaum noch. 

 

Quote

Spiele liegen auf einer separaten vdisk, nur dass ich die besser skalieren kann

Das mach ich beim nächsten Installieren auch

 

Quote

 ### ACHTUNG ### kann zu Server Crashs führen wenn falsch konfiguriert und / oder

parallele Zugriffe stattfinden und / oder VM falsch gestartet wird ### ACHTUNG ### EINLESEN !!!

Das hab ich schnell gemerkt, hab den Server paar mal Abgeschossen :D und habs nicht hinbekommen, deswegen die PM an dich. 

Ich will dich aber hier im Forum auch nicht weiter nerven damit.. hab aufjeden fall es nach deiner Anleitung gemacht.. die ersten Male ist der Server gecrashed.. die anderen Male hat er gesagt der PCI Bus passt nicht zu iqmmu oder sowas.. hab dann versucht das mit dem Video von Spaceinvader hinzubiegen.. hab ich auch verstanden nur muss ich 4 Sachen zusammen binden und bei den letzten 2 Steig ich aus.. weiß nicht wo ich das was einstellen müsste in der XML  Device 01:00.0 und 01:00.1 war mir verständlich (zumindest denk ich das :D

 

 

image.thumb.png.e930466d9345d94b1cd7ce670ba06be2.png

 

Edited by eLpresidente
Anpassung da Überschneidungen
Link to comment
8 minutes ago, alturismo said:

um das Thema etwas runder zu machen ... und auf deine PN Anfrage @eLpresidente, Danke aber Nein, mache ich nicht, alles nur zum Spaß hier ;)

und freut mich dass die VM jetzt lag frei läuft mit Isolation ;)

 

Voraussetzungen dass ich Nvidia Karten im Idle wenn Sie nicht in Nutzung sind etwas stromsparender bekomme

 

1/ KEIN VFIO bind ... ist zwingend notwendig um das umzusetzen, geht wenn dann nur wenn das System ne iGPU hat und nutzt

  - VM aufsetzen mit der/n NV Karte/n

  - VFIO binds raus, Unraid neu starten

  - VM's mal starten, stoppen, starten ... schauen ob das ohne VFIO bind alles läuft wie es soll

  - dazwischen auch mal Docker laufen lassen wo ggf. auf Hardware zugreifen wie Plex und co und prüfen dass diese NICHT Nvidia nutzen

  - dann kann man weiter machen ...

2/ VM aus

3/ in der Konsole mal folgenden Befehl ausführen

 

nvidia-smi -i 0 -pm 1 &

 

  - damit setzen wir die GPU in den höchsten Ruhezustand ... dauert ein paar Sekunden ...

  - -i 0 == erste GPU, -i 1 == zweite GPU, usw usw ... mit nvidia-smi bekomme ich die ID angezeigt, bei einer ist es immer 0

  - wenn erfolgreich (Ergebnis ok) können wir weiter machen

 

4/ in der Konsole mal folgenden Befehl ausführen

 

nvidia-smi -i 0 -pm 0 &

 

  - damit heben wir den Ruhezustand .auf .. dauert ein paar Sekunden ...

 

5/ VM starten ob noch alles geht, ruhig das Spiel mehrmals wiederholen um zu schauen das alles stabil bleibt ...

 

6/ Automatisierung einrichten, wir wollen ja dass dies bei VM Start / Stop automatisch passiert und wir nicht jedesmal händisch ...

  - hook scripts qemu sind hierfür das Mittel der Wahl ;)

  - diese sollten jedoch besser externe Scripts ausführen und nicht nativ alles beinhalten

  - Beispiel siehe Anlagen für meine Gaming VM, führt bei Start und bei Stop jeweils separate scripts aus

 

Hier beispielsweise Inhalt des hook_scripts

 

root@AlsServer:~# cat /etc/libvirt/hooks/qemu.d/hook_scripts
#!/bin/bash

if [ $1 = "AlsPC_Media" -a $2 = "prepare" -a $3 = "begin" ]; then
        /mnt/cache/system/hook_scripts/alspc_media_start.sh &
        /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
elif [ $1 = "AlsPC_Media" -a $2 = "release" -a $3 = "end" ]; then
        /mnt/cache/system/hook_scripts/alspc_media_stop.sh &
        /usr/local/emhttp/webGui/scripts/notify -e "Unraid Server Notice" -s "VM Info, "$1", "$2", "$3"" -i "normal" &
fi
exit 0;

 

Beispiel des Start scripts (muss natürlich +x gesetzt sein)

 

#!/bin/bash

nvidia-smi -i 0 -pm 0 &

sleep 1

exit 0;

 

Beispiel des Stop scripts  (muss natürlich +x gesetzt sein)

 

#!/bin/bash

nvidia-smi -i 0 -pm 1 &

sleep 1

exit 0;

 

sprich, beim Start der VM AlsPC_Media (VM_Name case sensitiv) wird der mode off gesetzt, beim Ausschalten wieder aktiv gesetzt.

 

Das sollte jetzt reichen ;)

 

ich kann das natürlich erweitern mit mehreren VM's wie hier, siehe Anhang meines hook_scripts ... habe das oben nur gekürzt,

einfach erweitern und für jeden Vorgang ein separates script erstellen ...

 

 

image.png

image.png

Boah Nice, Danke ! damit setzt ich mich dann jetzt mal auseinander.. kann ein paar Tage dauern :D Danke für deine Hilfe "zum wohlwollen der Gemeinschaft" :D

Link to comment
2 minutes ago, eLpresidente said:

hab ich auch verstanden nur muss ich 4 Sachen zusammen binden und bei den letzten 2 Steig ich aus.. weiß nicht wo ich das was einstellen müsste in der XML  Device 01:00.0 und 01:00.1 war mir verständlich (zumindest denk ich das :D

alle Haken da raus ... Video, Audio, USB Controller (x2) ... das geht NUR ohne VFiO bindings ... die Karte RTX20.. hat ja noch nen USB Controller ;)

 

siehe

image.thumb.png.47cb5894afbd4326f40852bd94466665.png

Link to comment
5 minutes ago, eLpresidente said:

Du hast recht, so ist es auch.. jetzt läuft es schon viel besser, keine Ruckler mehr im Sound und auch visuell spürbar kaum noch. 

 

zum guten Schluss, gerade Thema Audio und Win VM's ... noch 2 Dinge

 

1/ multifunction einrichten (einlesen, gibt es genug Infos dazu, Video und Audio auf einen slot setzen)

2/ MSI Fix ... ich hänge mal die Datei hier an bei Gelegenheit, Audio MSI Fix aktivieren, hilft auch ;) bei Linux VM's ein muss per cmdline ...

 

ich setze den Thread dann als gelöst an zum Thema LAG ... ;)

Link to comment
21 minutes ago, alturismo said:

1/ multifunction einrichten (einlesen, gibt es genug Infos dazu, Video und Audio auf einen slot setzen)

2/ MSI Fix ... ich hänge mal die Datei hier an bei Gelegenheit, Audio MSI Fix aktivieren, hilft auch ;) bei Linux VM's ein muss per cmdline ...

 

1.  Bindung aufgehoben <-- erledigt, neugestartet.. 

image.thumb.png.6cf572a0a643e60a178ddfe720617afe.png

 

2. Nvidia Treiber installiert aus CA, VM + Docker in Settings ausgeschaltet und wieder eingeschaltet

3. NVIDIA Treiber gecheckt, sieht gut aus für mich

image.png.6863dc773696ff405d3a8e90c430e173.png

 

4. in der VM die Grafikkarte und Soundkarte durchgereicht, bzw. der VM zugeordnet.. 

image.png.0d7b77e4bd7f5eaec9176fec3ede94f2.png

 

5. Fehlermeldung

image.png.c9b0ade47411d40e90e90d66ccb043fd.png

 

6. Anpassungsversuche in der XML

 

Angepasste Version:

image.png.1b5d4699ab8b2dad56b71cccbda2f43c.png

 

Aber trotzdem wieder die Fehlermeldung.. 

image.png.5ab5cb6fe9b7903a54f81ce707cd54ed.png

Siehst du meinen Fehler? 

image.png

Edited by eLpresidente
bild entfernt
Link to comment
32 minutes ago, eLpresidente said:

Siehst du meinen Fehler? 

 

wahrscheinlich ja, aber heute nicht mehr und morgen nicht gleich ...

 

du wirst noch die USB Devices mit durchreichen müssen zur VM (wo an der GPU hängen), normal per manuellen Eintrag.

 

lass mal multifunction "auf die Schnelle" sein und lies dich dazu clean ein ;) ist ja nicht "elementar" sondern mehr "tweaking" ...

Link to comment
9 minutes ago, alturismo said:

wahrscheinlich ja, aber heute nicht mehr und morgen nicht gleich ...

 

du wirst noch die USB Devices mit durchreichen müssen zur VM (wo an der GPU hängen), normal per manuellen Eintrag.

 

lass mal multifunction "auf die Schnelle" sein und lies dich dazu clean ein ;) ist ja nicht "elementar" sondern mehr "tweaking" ...

Kein Stress.. reicht auch die Tage, du hast heute schon genug für mich in die Tasten getippt :D

Ja das hab ich ja vorher gemeint, ich muss noch die 2 anderen Dinge durchreichen, nur kein Schimmer wie :D 

Link to comment

### Nachtrag ###

 

bei RTX 20xx Karten hängt ja noch ein zusätzlicher separater USB Controller mit an der Karte.

ohne VFIO bind startet somit wie oben angezeigt die VM nicht (hatte ich nicht mehr dran gedacht)

 

um dies zu "umkurven" und trotzdem ohne VFIO binds die VM inkl. RTX 20xx zum Laufen zu kriegen noch folgendes in der VM xml ergänzen,

je nach Bus ...

 

in dem oben gezeigten Beispiel (Danke @eLpresidente fürs testen)

 

image.thumb.png.5dfad9abb4a9eca1fabd83881d635ace.png

 

bei einer i44 Maschine (bus x01 function x2 bzw function x3)

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x2'/>
      </source>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x3'/>
      </source>
    </hostdev>

 

bei einer q35 Maschine (bus x01 function x2 bzw function x3)

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x2'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x00' function='0x3'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </hostdev>

 

damit startet die VM auch ohne VFIO bindings und man kann weiter machen ...

Link to comment
  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...