unRAID Gaming VM - Retour d'éxpérience


Recommended Posts

Hello,

 

Comme certain utilisateurs d'unRaid je suis en train de me faire une VM Gaming. Vu le peut de ressource en français sur le sujet je fais ce topic afin de partager mon expérience.

 

Mon serveur est dans mon garage, je compte y jouer via parsec/moonlight/etc depuis principalement mon réseau local mais aussi pourquoi pas depuis Internet (je suis fibré), il faudra que je bench ces softs.

Mes clients seront :

* Mon Macbook pro de 13".

* Un petit PC branché sur un écran 4k, un ASRock A300.

* Et une nVidia Shield Pro branché sur ma TV.

 

Pour ma part j'ai donc paramétré une VM Windows 11 :

* RAM : 16Go, mon serveur en compte 64, je suis donc large.

* CPU Mode : Accès Direct.

* CPU : j'ai isolé 4C/8T de mon 5800X et les ai assigné à la VM.

* Modèle de machine : Q35-6.2 : j'ai vu certains retours comme quoi le modèle i440fx était plus performant, mais j'ai aussi vu l'inverse, bref j'ai décidé de commencer comme ça.

* BIOS : OVMF TPM, obligatoire pour le support de Windows 11 qui impose le TPM.

* Hyper-V : Oui.

* Contrôleur USB : 3.0, mais je n'ai aucun périphérique USB branché à passer à la VM donc je m'en fiche un peu.

* Disque : J'ai configuré un disque NVME en passthrough directement sur la VM, donc pas de vdisk. C'est assez simple à faire, si ça intéresse des gents je décrirai comment faire. l'avantage c'est que les performances sont excellentes, pas loin du baremetal (= sans virtualisation). Pour l'histoire j'avais auparavant un vdisk sur un SSD et j'ai fait une migration sans réinstaller la VM (pareil je peux décrire comment on fait).

 

Afin de diffuser une session il faut un écran branché sur la CG, comme je n'en ai pas, je vais utiliser cela :

* Un dongle fake HDMI (https://www.amazon.fr/dp/B07YMTKJCR/ref=twister_B08GSQ8SSR?_encoding=UTF8&th=1)

Il se branche sur un port HDMI de la CG et simule un écran, permettant ainsi d'établir une session que l'on peut ensuite diffuser. Sinon Parsec à une solution software avec un Fake Display Driver, mais je n'ai pas réussi à la faire marcher.

 

Voilà j'attend maintenant que les prix des CGs baissent un peut pour chopper une RTX 3080. Elle sera en passthrough de la même manière que le disque NVME. Elle ne pourra pas servir à autre chose (un docker plex par exemple) à part si ça tourne sur la VM. Mais j'ai déjà une autre CG pour cela.

 

En attendant je test un peut les softs pour me faire une idée.

 

J'ai aussi fait quelques benchs sur la partie disque suite au passage d'un vdisk sur un SSD SATA à un passthrough d'un disque NVME. J'en ferais d'autre une fois que j'aurais une CG.

  • Like 3
Link to comment
  • 2 weeks later...

Alors je n'ai pas réfléchi à la question, car dans l'absolu il y a peu de données qui nécessite une sauvegarde :

- L'OS je m'en tamponne, à la limite la licence Windows 11.

- Pour les jeux Steam pareil je peux les re-télécharger quand je le souhaite.

 

Mais si jamais j'en ai besoin je regarderai du côté de urBackup pour la sauvegarde de l'OS. Et de VM Backup pour le template.

 

Pour l'instant je regarde plutôt les latences de la VM avec latencymon, histoire de voir où est ce que ça peut merder niveau steam.

Du coup ça ma poussé à me payer une petite carte réseau en + (Intel i225-V) que je vais aussi mettre en passthrough car celle utilisée par mon NAS arrivait à saturer lorsque je télécharge.

 

Je suis aussi en train de bencher parsec en local avec une machine physique, il y a pas mal de paramètres avec lesquels jouer.

 

PS : J'ai enfin ajouté la nouvelle carte réseau, j'ai eu tout de même quelques difficultés :

1- unRAID a décidé d'utiliser la carte discrète par défaut ... j'ai donc du mettre en passthrough la carte réseau intégrée à ma CM ...

2- ... donc ça a foutu la grouille avec le NAT de ma Livebox 5 et des baux DHCP permanents que j'avais fait.

3- Par défault l'interface d'unRAID ne permet pas de supprimer l'interface virtuelle d'une VM, il faut soit éditer le fichier XML de configuration de la VM, soit passer par Virt-Manager.

 

Après quoi tout va bien.

Edited by hot22shot
Link to comment
  • 2 weeks later...

J'ai une VM windows 11 gaming accé direct sur ssd m2 pour l'os et les jeux steam sont sur ma baie donc hdd.

carte nvidia gtx 1060 avec dongle hdmi en passthrou.

16go de ram

6 coeurs alloué.

parsec en host et client.

Aucun problème pour jouer mais je ne suis pas un hardcore gamer.

Principalement des MMORPG et du rétrogaming.

 

Link to comment

 

15 hours ago, mathieu59970 said:

J'ai une VM windows 11 gaming accé direct sur ssd m2 pour l'os et les jeux steam sont sur ma baie donc hdd.

carte nvidia gtx 1060 avec dongle hdmi en passthrou.

16go de ram

6 coeurs alloué.

parsec en host et client.

Aucun problème pour jouer mais je ne suis pas un hardcore gamer.

Principalement des MMORPG et du rétrogaming.

 

 

Pas mal ! Du coup pas de lag avec des MMORPG ?

Link to comment

Merci hot22shot pour ce retour d'expérience. Je suis entrain de me monter un serveur NAS avec Unraid et je compte comme toi configurer une VM avec Windows 11 en passthrough. Du coup te serait-il possible de décrire succinctement comment tu as configuré ton disque NVME en passthrough directement sur la VM ? 

 

Merci pour ton retour.

Link to comment
16 minutes ago, chis34 said:

Merci hot22shot pour ce retour d'expérience. Je suis entrain de me monter un serveur NAS avec Unraid et je compte comme toi configurer une VM avec Windows 11 en passthrough. Du coup te serait-il possible de décrire succinctement comment tu as configuré ton disque NVME en passthrough directement sur la VM ? 

 

Merci pour ton retour.

Tu créé un nouveau pool de disque dans Unraid mais tu met que ton m2 et que tu appelera par exemple vm Windows 11.

Une fois créé, tu va créer un dossier partagé du nom de ton choix aussi et qui pointera sur le m2 vm Windows 11.

tu sélectionner le dossier partagé dans la config de ta vm pour y mettre le vdisk de ta vm Windows. Tu pourras aussi choisir le passthrou (Sata). 

On n'utilise plus le plugin Unassigned device depuis la mise à jour de Unraid car maintenant on peut créer plusieurs pool de disque ou d'un seul disque. 

  • Thanks 1
Link to comment

Si on peut toujours utiliser UD et si on souhaite faire un passthrough du disque c'est toujours possible. Probablement plus performant qu'un vdisk sur une Pool.

Et UD ne sert pas qu'à ça mais aussi à monter un dossier partagé réseau, un disque plug&play pour du backup, faire un preclear si on le souhaite, etc.

  • Thanks 1
Link to comment
17 hours ago, mathieu59970 said:

Tu créé un nouveau pool de disque dans Unraid mais tu met que ton m2 et que tu appelera par exemple vm Windows 11.

Une fois créé, tu va créer un dossier partagé du nom de ton choix aussi et qui pointera sur le m2 vm Windows 11.

tu sélectionner le dossier partagé dans la config de ta vm pour y mettre le vdisk de ta vm Windows. Tu pourras aussi choisir le passthrou (Sata). 

On n'utilise plus le plugin Unassigned device depuis la mise à jour de Unraid car maintenant on peut créer plusieurs pool de disque ou d'un seul disque. 

 

C'est pas comme ça que j'ai fait, ce que tu décrit ressemble plus à du vdisk.

 

@chis34 j'ai fait comme ça :

  • Dans la section Outils / Appareil du système tu sélectionne l'IOMMU Group qui correspond à ton disque et à son contrôleur :

image.thumb.png.7b921c3e0a262ffdd8a26c503e28a921.png

Par exemple ici mon contrôleur NVME, on ne voir pas le disque car unRaid ne peux le voir puisqu'il est géré par ma VM.

Pour que ta VM puisse accéder au disque en direct il faut aussi qu'elle ait accès à un contrôleur NVME, il faut donc bien repérer le bon contrôleur qui gère le disque que tu veux associer à ta VM.

En dessous on peut voir aussi une carte réseau que j'ai partagé de la même manière.

  • Puis tu clique sur 'Associer la sélection au VFIO au démarrage' :

image.png.f04bc9ac9a68616eb9822e6dbd1e1739.png

  • Reboot obligatoire pour la prise en compte.
  • Puis dans la configuration de la VM, une fois éteinte, il suffit de partager le disque tout en bas dans la partie Autre Périphériques PCI :

image.thumb.png.248d572901bdad4cce57d08c357cac61.png

 

Au prochain boot la VM détectera le(s) nouveau(x) périphérique(s) associés.

 

En fait c'est la même méthode quelque soir ce que l'on veut passer en passthrough : disques, carte réseau, carte graphique et autre.

C'est ultra simple en pratique.

image.png

Edited by hot22shot
  • Thanks 1
Link to comment
  • 2 weeks later...

Bon j'ai enfin commandé une CG, donc je vais pouvoir faire des benchs dans pas longtemps.

Par contre c'est une 3090 TI FE, j'espère que mon alim va tenir 🤞

 

EDIT : Après un long montage de mon serveur (repast du cpu, changement d'alim et montage de la cg), la carte est maintenant installée.

Par contre pour l'instant c'est pas glorieux, j'ai un topic de debug d'ouvert sur la partie VM du forum : https://forums.unraid.net/topic/129879-issue-with-windows-11-vm-rtx-3090-ti-passthrough/

 

Je repasserai ici mettre des infos en français quand ça sera stable.

 

Edited by hot22shot
Link to comment

Bonjour,

 

J'ai peut être le même problème.

 

Avec une RTX 3060 qui passe en code 43 dans le gestionnaire de périph de ma VM Win 10.

 

Et lorsque je tente d'installer le driver, comme toi, la VM passe hors ligne. Impossible de la contacter par RDP ou Parsec.

 

 

Edited by Beo
Link to comment

J'ai résolu mon problème, ça vient du fait que la carte a beaucoup de mémoire et qu'elle supporte le resizable bar, du coup le bios uefi n'arrive pas à l'adresser :

 

Quote

Can confirm that resizable bar works on a 3090, however the default mmio address space for edk2/ovmf is 32GB, since the bar size option doubles each time you need a 32GB BAR for a 3090 to fit the 24GB of ram (which you should see in lspci), this means that there isn't enough address space to fit the 3090's bar alongside other devices.

 

Il suffit de bidouiller le fichier XML pour augmenter un peut la limite à 64GB et ça passe.

Je viens d'installer les drivers et aucun autre soucis.

Link to comment

Quelques conseils pour les logiciels de streaming :

  • Achetez un plug dummy HDMI pour mettre au cul de la CG, ça évite d'avoir un écran branché pour rien si votre serveur unraid est dans le garage et c'est compatible toute résolution. Pour ma part j'ai pris ce modèle.
  • Il faut bien faire attention de ne pas streamer une session ouverte en RDP, en effet en RDP vous n'utilisez pas votre CG (ou alors partiellement en accélération du protocole RDP).
  • Pour mettre en place en login automatique sur la VM : https://learn.microsoft.com/fr-fr/sysinternals/downloads/autologon

 

Au niveau des softs :

  • nVidia Gamestream : intégré aux drivers nvidia, rien à installer mais uniquement utile si vous avez une shield.
  • Moonlight : version opensource de clients pour Gamestream, pas mal mais seulement compatible nvidia du coup.
  • Parsec.app : GPU agnostique, le logiciel client est à priori disponible sur un large panel d'OS/plateforme. Facile à installer le soft fait office à la fois de client et de serveur (sur les ordis supportés).

 

Un petit retour sur quelques tests :

  • Parsec depuis un Macbook vers ma VM, c'est nickel en 1440p.
  • Depuis un A300 avec un Ryzen 5 4650G en 4K, ça coince un peut, le 4650G n'arrive pas à suivre pour décoder le flux.
  • Enfin depuis ma Shield Pro branché sur une TV 1080p, j'ai testé un peut Gamestream, pareil c'est top.

 

Enfin pour ce qui est de la méthode pour mettre en place le passthrough :

  • C'est très dépendant de votre matériel : carte graphique bien sur mais aussi carte mère AMD/Intel, 1 ou +sieurs GPU, etc ...
  • D'une manière générale il faut que tout soit à jour (VM Windows, UEFI, ...)
  • Il vous faudra éditer le fichier XML de votre VM car tout n'est pas configurable via l'interface d'unRaid.
  • Le dump de vbios n'est pas toujours nécessaire mais ça ne coute rien de le faire donc je conseille de prendre le temps de le faire, SpaceInvaderOne a fait un script pour cela : https://github.com/SpaceinvaderOne/Dump_GPU_vBIOS.
Edited by hot22shot
  • Thanks 1
Link to comment

J'ai testé un peu plus la partie Software sur ma SHIELD Pro :

  • Parsec est peté sur Android (TV) : Pas de support de mon clavier (Logitech K400) ni de mon Gamepad (XBOX Wireless Controller).
  • Quand aux clients GameStream et Moonlight : je me fait déconnecté après quelques minutes de jeux (mais là les contrôles sont nickel).

Résultats très mitigé sur ma SHIELD donc.

Je vais essayer de creuser la connexion via Moonlight qui a l'air d'avoir le plus de promesses et s'agissant d'une application libre j'aurais peut être plus de support.

 

Après avoir bidouillé un peu avec le paramètre GPU scheduling (Enable Hardware Accelerated GPU scheduling) j'ai réussi à faire une longue session avec Moonlight.

Edited by hot22shot
Link to comment
  • 2 weeks later...

J'ai définitivement lâché Parsec sur la SHIELD c'est trop la galère et c'est la loterie pour le support des périphériques (clavier/souris).

Gamestream / Moonlight fonctionnent parfaitement.

 

J'ai aussi résolu mon soucis de stream 4K depuis mon A300 : le câble branché sur la carte réseau de ma VM était nase et plafonnait à 100MB après changement et passage au 1GB ça va beaucoup mieux.

  • Like 1
Link to comment
  • 2 weeks later...

J'ai définitivement adopté Moonlight pour jouer, d'ailleurs j'ai trouvé un soft pas mal :

Il permet, entre autre, de choisir une résolution avant de lancer la session de jeux, bien utile dans mon cas puisque j'ai plusieurs clients chacun avec sa propre résolution.

La résolution n'est pas tout, j'avais aussi des soucis de mise à l'échelle de l'interface Windows entre tous ces changements de résolution. J'ai donc trouvé un script qui permet de changer ça, par exemple pour mettre en 125% :

 

@ECHO OFF

explorer ms-settings:display
ping -n 2 127.0.0.1 > nul

:VBSDynamicBuild
SET TempVBSFile=%tmp%\~tmpSendKeysTemp.vbs
IF EXIST "%TempVBSFile%" DEL /F /Q "%TempVBSFile%"
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys "{TAB 6}{UP 5}{DOWN 1}" >>"%TempVBSFile%"
ECHO Wscript.Sleep 500 >>"%TempVBSFile%"
ECHO WshShell.SendKeys "%%{F4}" >>"%TempVBSFile%"
CSCRIPT //nologo "%TempVBSFile%"

explorer ms-settings:display
ping -n 2 127.0.0.1 > nul


CSCRIPT //nologo "%TempVBSFile%"
EXIT

 

 

Link to comment
  • 3 months later...

Alors c'est vrai que de prime abord c'est un peu la galère.

Parce que suivant ta configuration (1 ou +ieurs GPU, la marque du GPU, le type CPU) ce n'est pas forcément tout à fait la même marche à suivre.

C'est pour ça que tu ne trouveras de "recette" qui marche à tous les coups et que c'est donc un procédé qui reste pour l'instant artisanal.

 

SI tu n'arrives pas à installer le driver de ta CG c'est que le GPU est mal/ou pas détecté.

Mon conseil : va faire un tour dans la section https://forums.unraid.net/forum/51-vm-engine-kvm/ et repère quelqu'un qui a une configuration semblable à la tienne Intel/AMD.

Le mieux pour avancer serait que tu poste un thread dans cette même section en anglais bien sur, en partageant ta configuration, l'XML de ta VM.

 

Franchement ça vaut la peine de se prendre un peut la tête, je ne joue plus que comme ça.

Link to comment
On 2/17/2023 at 5:14 PM, hot22shot said:

Alors c'est vrai que de prime abord c'est un peu la galère.

Parce que suivant ta configuration (1 ou +ieurs GPU, la marque du GPU, le type CPU) ce n'est pas forcément tout à fait la même marche à suivre.

C'est pour ça que tu ne trouveras de "recette" qui marche à tous les coups et que c'est donc un procédé qui reste pour l'instant artisanal.

 

SI tu n'arrives pas à installer le driver de ta CG c'est que le GPU est mal/ou pas détecté.

Mon conseil : va faire un tour dans la section https://forums.unraid.net/forum/51-vm-engine-kvm/ et repère quelqu'un qui a une configuration semblable à la tienne Intel/AMD.

Le mieux pour avancer serait que tu poste un thread dans cette même section en anglais bien sur, en partageant ta configuration, l'XML de ta VM.

 

Franchement ça vaut la peine de se prendre un peut la tête, je ne joue plus que comme ça.

Bonjour hot22shot.
Merci pour ta réponse ! :)

Je viens de poster un message ici qui concerne les config pour les rx serie 6000 :


J'ai finalement réussi à faire tourner la VM comme il fallait avec les derniers pilotes et tout, mais j'ai un problème de crash au démarrage de la VM qui me fait planter tout unRAID :(

Merci pour ton aide !
Bon dimanche

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.