URL: https://linuxfr.org/users/reynum/journaux/3d-pour-vm Title: 3D pour VM Authors: reynum Date: 2014年12月08日T14:04:13+01:00 License: CC By-SA Tags: virgil, vfio, pci-passthrough et virtualisation_3d Score: 10 Voila maintenant un peu plus d'un an que je me pose les questions suivantes : - Comment peut on "facilement" passer les morceaux de CPU voire des architectures complètes (-cpu host de qemu) à des machines virtuelles ? et surtout pourquoi ne peut on pas faire de même avec les GPU ? - Pourquoi KVM (qemu) ne dispose t il pas d'une émulation/virtualisation d'une carte 3D ? En effet actuellement il existe pour des sommes très modiques (≈40-50€) des cartes avec 2Go de mémoire et un nombre impressionnant de processeurs de flux. En gros des puissances qui ferait pâlir les monstres d'il y a quelques années. Actuellement il existe dans les CPU une technologie qui permet de passer à une VM un périphérique matériel via les [VFIO Virtual Function I/O](https://www.kernel.org/doc/Documentation/vfio.txt) et ça fonctionne [plutôt bien](https://www.youtube.com/watch?v=37D2bRsthfI). En ce qui concerne l'accélération 3D on en avait déjà parlé [ici](https://linuxfr.org/users/chrisk/journaux/vga-passthrough-par-vfio-sur-libvirt-qemu-kvm-sous-debian-jessie-ca-fonctionne). Maintenant on trouve de plus en plus d'informations pour mettre en œuvre cette technique (géniale d'ailleurs) : http://www.pugetsystems.com/labs/articles/Multiheaded-NVIDIA-Gaming-using-Ubuntu-14-04-KVM-585/ https://bbs.archlinux.org/viewtopic.php?id=162768 http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM Par contre le "problème" majeur de cette technique c'est qu'il faut dédier une carte spécialement pour la ou les machines virtuelles que l'on veut lancer. De plus cette carte ne doit pas être chargée par le noyau au démarrage, elle est donc inutilisable en dehors des VM. Bon, je me mets en situation : Si je suis mon raisonnement précédent, une carte à 30€ maintenant équivaut en puissance à une carte à 600€ il y a 5 ans, donc j'en achète une, je la réserve à une VM XP et une seven pour pouvoir jouer à mes vieux (mais néanmoins très bon) jeux et tout va bien. Et puis un jour (plusieurs années après) crack!! cette carte grille et là un gros problème se pose, si je rachète une carte neuve il n'existera sûrement pas les drivers pour seven et encore moins XP, du coup mes deux VM se retrouveront inutilisables. Cette perspective ne me plaisant pas, l'idée d'une architecture virtuelle et accélérée matériellement (par n'importe quel driver) qui ne bougera pas et suffira largement pour faire tourner tous les jeux et logiciels 3D ayant existé sur les OS anciens vient naturellement à l'esprit. Et là c'est le drame ça n'existe pas pour KVM et n'est pas très au point pour VirtualBox. Donc je me dis, je vais poser la question sur LinuxFR, mais pour éviter de me prendre un ATFG (Ask The Fucking Google, évolution du RTFM) j'interroge avant tout mon moteur de recherche favori, et là je tombe sur [Virgil 3d project](http://virgil3d.github.io/) un projet de recherche initié par Dave Airlie dont le but est justement de créer un GPU 3D virtuel, [actuellement c'est encore expérimental](http://virgil3d.github.io/questions.html) (peut être le restera t il toujours) mais personnellement j'espère que non et je croise les orteils pour que Red Hat boost un peu le projet qui comblera (selon moi) un manque important dans Qemu-KVM. [Une vidéo du projet à la Linux conf 2014](https://www.youtube.com/watch?v=pSYQIyICwu4)