Le passage d’une GPU physique à une machine virtuelle permet au système invité d’accéder directement à la carte graphique, sans dépendre d’une GPU virtualisée classique. Dans des environnements basés sur Oracle Linux KVM et Oracle Linux Virtualization Manager (OLVM), cette configuration peut s’avérer utile pour des charges de travail en intelligence artificielle (IA), apprentissage automatique (ML), rendu 3D, conception assistée par ordinateur (CAO), infrastructures de bureaux virtuels (VDI) et applications graphiques intensives.
Les clés du passthrough GPU sous Oracle Linux en 20 secondes
- La technique assigne une GPU physique à une machine virtuelle pour lui permettre d’utiliser ses ressources directement.
- Elle nécessite une virtualisation matérielle, IOMMU activé, et une GPU dédiée que l’hôte ne utilise pas pour ses sorties graphiques.
- VFIO permet d’isoler et d’assigner le dispositif PCI à la machine virtuelle.
- OLVM gère l’intégration de l’hôte et l’attribution de la GPU via son interface.
- Le processus se termine par l’installation des pilotes dans le système invité et des tests de fonctionnement.
Cette configuration implique des modifications dans le BIOS, des ajustements du noyau Linux, et l’attribution du périphérique depuis OLVM. Bien que l’infographie présente un parcours de douze étapes, les commandes et options spécifiques doivent être adaptées au matériel, à la version d’Oracle Linux, au pilote graphique, et à la configuration de la virtualisation.
Prérequis pour l’hôte avant d’assigner la GPU
Le premier besoin est de disposer d’un hôte Oracle Linux compatible KVM avec OLVM déployé et opérationnel. Il faut également un processeur supportant la virtualisation matérielle (Intel VT-d ou AMD-Vi) et une GPU pouvant être réservée à la machine virtuelle. Si le système hôte doit utiliser cette carte pour l’affichage, une autre solution d’accès doit être en place avant de l’isoler.
La préparation commence dans le BIOS ou UEFI. Sur plateformes Intel, il faut activer Intel VT-d, tandis que sur AMD, on utilise AMD-Vi. Ces technologies fournissent les fonctions d’entrée/sortie nécessaires pour que le système puisse assigner des périphériques physiques aux machines virtuelles avec isolation mémoire.
Ensuite, il faut configurer IOMMU dans Oracle Linux en modifiant les paramètres de démarrage du noyau. L’infographie suggère d’éditer /etc/default/grub, d’ajouter les options spécifiques à la plateforme et de régénérer la configuration de GRUB. Pour Intel, cela inclut intel_iommu=on ; pour AMD, amd_iommu=on, accompagné de iommu=pt dans l’exemple fourni.
La configuration doit être adaptée à la plateforme et au mode de démarrage utilisé. Avant de redémarrer, il est conseillé de sauvegarder les fichiers modifiés et de vérifier que l’entrée de GRUB est correcte et active.
Après le redémarrage, la vérification que IOMMU est actif se fait en consultant les messages du noyau via dmesg, en filtrant les références à IOMMU et DMA Remapping. Si ces messages ne sont pas présents, il faut résoudre cette étape avant de continuer avec VFIO.
Isoler la GPU avec VFIO
Avec IOMMU opérationnel, il faut localiser la GPU et, si nécessaire, sa fonction audio. De nombreuses cartes graphiques présentent plusieurs dispositifs PCI : le contrôleur graphique et le module audio HDMI ou DisplayPort apparaissent séparément. L’outil lspci permet de les repérer et de noter leurs adresses PCI.
Par la suite, on examine les groupes IOMMU. Ces groupes déterminent quels dispositifs peuvent être isolés et assignés comme une unité. La GPU et ses fonctions associées doivent pouvoir être isolées de façon compatible avec les exigences d’isolation. Si le groupe comprend d’autres périphériques non séparables, il faut revoir la topologie PCI de la plateforme.
L’étape suivante consiste à associer le périphérique au contrôleur vfio-pci plutôt qu’à celui par défaut du système hôte. La documentation montre comment enregistrer l’identifiant du fabricant et du dispositif dans la configuration VFIO, puis vérifier à quel contrôleur la GPU est liée après cette opération.
Les identifiants utilisés dans les exemples doivent être vérifiés pour chaque matériel, car ils peuvent varier selon la carte graphique. Des identifiants incorrects empêcheront la réservation correcte du dispositif. Si la carte possède d’autres fonctions, comme l’audio, celles-ci doivent être traitées séparément.
Pour assurer la persistance de cette assignation après redémarrage, il est conseillé de sauvegarder la configuration dans /etc/modprobe.d/vfio.conf et de régénérer l’image initramfs. La procédure exacte dépend de la version d’Oracle Linux et de la gestion du démarrage. Après le reboot, une vérification doit confirmer que chaque PCI est bien associé au contrôleur prévu.
Intégrer le périphérique dans OLVM et tester la VM
Une fois que l’hôte détecte la GPU, il faut s’assurer qu’OLVM la reconnaît. Depuis Oracle Linux Virtualization Manager, il faut aller dans Compute → Hosts → New Host pour ajouter un nouveau serveur si ce n’est pas encore fait. Ensuite, dans la fiche de l’hôte, vérifier que la GPU et, le cas échéant, sa fonction audio apparaissent dans la liste des périphériques.
Le processus se poursuit depuis Compute → Virtual Machines. On sélectionne la VM, on ouvre sa configuration et on accède à Host Devices pour ajouter le périphérique PCI. On choisit la GPU, puis, si nécessaire, sa fonction audio. Les options « Enable » et « Start in VM » doivent être configurées selon la version d’OLVM utilisée.
Noms des options ou emplacements de menus pouvant différer selon la version, il est recommandé de consulter la documentation spécifique avant de déployer en production.
Une fois le périphérique assigné, on démarre la VM et on accède au système invité. Sur RHEL ou Oracle Linux, il est conseillé d’installer les pilotes graphiques avec le gestionnaire de paquets, en choisissant le package approprié selon le fabricant, la version du système, et la méthode d’installation. Pour Windows, utiliser les pilotes officiels NVIDIA ou AMD.
L’étape de validation ne doit pas se limiter à vérifier le démarrage de la VM. Avec une GPU NVIDIA, par exemple, nvidia-smi permet de confirmer la reconnaissance du matériel par le contrôleur. Il est aussi utile d’utiliser des outils graphiques comme glxinfo pour tester le rendu OpenGL si pertinent.
Enfin, il est judicieux de lancer une application ou un test de performance représentatif de la charge prévue et de surveiller la stabilité du système hôte et de la VM. La réservation directe peut réduire la surcharge liée à la virtualisation graphique, mais le résultat dépend de la compatibilité entre GPU, pilotes, application, et configuration système.
Problèmes courants et recommandations pour la production
Si la VM ne démarre pas après l’assignation de la GPU, il est conseillé de consulter les logs du système, notamment avec journalctl. Si le dispositif n’apparaît pas dans le système invité, vérifier que la GPU est correctement liée à VFIO, que les groupes IOMMU sont adéquats, et que OLVM détecte le périphérique.
En cas d’erreur 43 sous Windows, il s’agit souvent d’un problème de pilotes ou de configuration. Vérifier la configuration de la GPU, la version des pilotes, et l’état du système. Il faut aussi identifier la cause précise avant de modifier la configuration, car il n’existe pas de solution unique applicable à tous les scénarios.
Risques additionnels : la perte d’accès à la console hôte si la seule GPU est assignée à la VM. Il est donc recommandé d’avoir une GPU secondaire ou un accès distant (SSH, KVM IP, gestion via IPMI ou iLO). S’assurer également que le système est à jour, sauvegarder les VM avant modifications, et vérifier les groupes IOMMU en amont.
Le passthrough GPU offre un accès direct à une carte graphique pour une VM, avec de réels avantages pour les charges nécessitant une accélération matérielle. Cependant, il exige une réservation du dispositif, une vérification de l’isolation, et une gestion cohérente entre l’hôte, OLVM, et le système invité. Ce guide propose une approche générale, mais chaque environnement peut nécessiter des ajustements spécifiques.
Questions fréquentes
Qu’est-ce que le passthrough GPU sous KVM ?
C’est une technique qui consiste à assigne une GPU physique à une machine virtuelle, permettant à celle-ci de l’utiliser directement. Elle est souvent employée pour des charges graphiques ou de calcul nécessitant une accélération matérielle.
Quel est le rôle de l’IOMMU ?
L’IOMMU gère l’accès des périphériques à la mémoire et assure l’isolation nécessaire pour l’assignation de hardware PCI aux VM. Sur Intel, on la qualifie de VT-d ; sur AMD, AMD-Vi.
À quoi sert VFIO sur Oracle Linux ?
VFIO permet d’attacher et d’exposer des dispositifs physiques à des VM de manière contrôlée. Elle est utilisée pour réserver la GPU et empêcher l’hôte de la gérer via ses pilotes graphiques standards.
Comment vérifier que la GPU fonctionne dans la VM ?
Sous NVIDIA, par exemple, nvidia-smi montre si le contrôleur reconnaît la carte. Il est aussi utile d’exécuter une application ou un test représentatif et de vérifier la stabilité et la performance dans l’invité.