Alexander - stock.adobe.com

Comment attribuer des GPU aux VMs avec le mode vGPU de VMware

Ce guide explique comment attribuer la bonne quantité de GPUs pour qu’ils soient correctement pris en charge par les machines virtuelles de VMware.

Activer la prise en charge des GPUs dans les VMs permet aux applications virtualisées de gérer efficacement les calculs exigeants pour des tâches comme la visualisation de données en temps réel ou même l’accélération graphique des bureaux virtuels. Les hyperviseurs gèrent les GPU soit en mode « pass-through », soit en mode « virtual GPU » (vGPU).

Mais cette prise en charge n’est pas automatique. Elle doit d’abord être manuellement ajoutée aux configurations des VMs. Passons en revue les étapes à suivre pour inclure les GPU dans les hyperviseurs, notamment VMware.

Qu’est-ce que le pass-through GPU ?

Un mode pass-through permet l’accès, le contrôle et l’utilisation d’un périphérique de manière entière. Lorsqu’un GPU fonctionne en mode pass-through, l’hyperviseur attribue un GPU – l’intégralité de ses cœurs – à une seule VM. La VM a alors une utilisation complète du GPU, de sa puissance de traitement et de sa mémoire graphique. Cette technique est parfois appelée accélération graphique dédiée virtuelle (vDGA). Ici, les autres VMs ne peuvent pas accéder à ce GPU ni en bénéficier.

Néanmoins, les adaptateurs graphiques modernes prennent souvent en charge plusieurs puces GPU, et chaque puce GPU peut être affectée à une VM différente. Par exemple, la carte Nvidia M6 a un GPU physique, la Nvidia M60 en a deux et la Nvidia M10 en a quatre. Une entreprise peut déployer de nombreux serveurs physiques, chacun équipé d’un adaptateur graphique multi-GPU, afin de fournir un support GPU à de nombreuses VM.

Le mode Pass-through est idéal pour les VMs qui exécutent les applications les plus exigeantes ou les plus gourmandes en ressources graphiques. Il offre les meilleures performances et présente un excellent rapport qualité-prix si de nombreux utilisateurs partagent l’utilisation de cette VM.

Microsoft Hyper-V, Citrix XenServer et VMware ESXi prennent tous en charge le mode pass-through.

Comment utiliser vGPU ?

L’autre moyen de virtualiser les GPUs est le mode vGPU. Cette approche permet à plusieurs VMs de partager les ressources du GPU par fraction de temps. Par exemple, si un GPU est virtualisé en 10 vGPUs, et que chaque vGPU est attribué à l’une des 10 VMs, chaque VM aura accès au GPU – et à ses cœurs CUDA – pendant 10 % du temps. Cette technique est parfois appelée accélération graphique partagée virtuelle, ou vSGA.

La relation de base entre le GPU, l’hyperviseur et les VMs est illustrée dans le diagramme ci-dessous.

Graphique montrant la relation entre le GPU, l'hyperviseur et les VMs dans un écosystème Nvidia

Hyper-V ne prend pas encore en charge les vGPUs au moment de l’écriture de cet article. Citrix XenServer et VMware ESXi le font. Un pilote graphique dans chaque VM connecte ensuite l’application de la VM au vGPU.

La mémoire graphique n’est pas partageable, chaque VM a accès à une fraction dédiée. Par exemple, si la carte graphique dispose de 32 Go et est répartie entre 10 paires VM-vGPU, chaque vGPU aura accès à 3,2 Go. Ce fonctionnement impose une limite pratique au nombre de VMs qui peuvent partager un GPU. Plus le volume de machines virtuelles qui partagent un GPU est important et plus les demandes graphiques de ces machines virtuelles sont élevées, moins les performances des vGPUs sont bonnes.

Les administrateurs peuvent ajuster les performances en configurant les ressources vGPU. Cela permet d’allouer plus ou moins de « tranches » de temps à une machine virtuelle, de sorte que les machines virtuelles les plus exigeantes bénéficient de plus de temps de fonctionnement du GPU, tandis que les machines virtuelles moins exigeantes ou de test bénéficient de moins de temps de fonctionnement du GPU.

Le plus souvent, le mode vGPU sert à gérer des tâches graphiques légères de tous les jours, telles que l’accélération des éléments graphiques dans un bureau distant, comme c’est le cas dans les environnements de VDI. Dans cette configuration un grand nombre de postes de travail virtualisés utilisent un nombre limité de GPUs.

Comment assigner et activer les vGPUs dans les VMs ?

Voici le processus général de configuration des vGPU Nvidia avec VMware vSphere :

1/ Arrêtez l’hôte ESXi.

2/ Installez le dernier package du gestionnaire de GPU virtuel Nvidia pour vSphere.

3/ Utilisez l’outil vSphere Web Client pour vous connecter à vCenter Server, puis cliquez sur Configure > Graphics > Host Graphics > Edit pour changer le type d’affichage graphique par défaut en vGPU et, ce, avant même de configurer un vGPU.

4/ Acceptez les modifications de sorte que le type d’affichage graphique soit configuré en Shared Direct.

5/ Utilisez l’onglet Périphériques graphiques pour vérifier la configuration de chaque GPU où des vGPUs seront configurés. Reconfigurez tous les GPUs qui sont encore « Shared » pour qu’ils deviennent à leur tour « Shared Direct ».

6/ Redémarrez le serveur ESXi.

La console de la VM dans le client Web VMware vSphere n’est pas disponible pour les VMs exécutant un vGPU. Il faut donc disposer d’un autre moyen d’accès à la VM, par exemple VMware Horizon ou VNC Server, avant de configurer un vGPU.

Pour configurer une VM vSphere avec un vGPU Nvidia, suivez ces étapes :

1/ Arrêtez la VM en question.

2/ Ouvrez l’interface Web de vCenter.

3/ Cliquez avec le bouton droit de la souris sur la VM souhaitée et choisissez le bouton Modifier les paramètres.

4/ Sélectionnez l’onglet Matériel virtuel.

5/ Dans la liste Nouveau périphérique, sélectionnez Périphérique PCI partagé et cliquez sur Ajouter. Le champ du périphérique PCI devrait déjà afficher Nvidia GRID vGPU.

6/ Utilisez le menu déroulant GPU Profile pour sélectionner le type de vGPU à configurer et sélectionnez OK.

7/ Utilisez l’interface Web de vCenter pour vérifier que les VMs exécutant un vGPU ont toute la mémoire invitée réservée.

8/ Acceptez toutes les modifications et démarrez la VM reconfigurée.

9/ Utilisez VMware Horizon ou VNC pour accéder à la VM.

Enfin, installez le pilote graphique, tel que le pilote Nvidia vGPU, dans la VM, afin que celle-ci puisse interagir avec le GPU. Prêtez attention à bien utiliser le pilote graphique prévu pour le système d’exploitation exécuté dans la VM.

Comment activer le GPU pass-through dans les VMs ?

VMware vSphere permet l’utilisation de vDGA, qui fournit un accès direct à un GPU entier. Le processus général de configuration d’une VM pour utiliser un GPU en mode pass-through comprend les étapes suivantes :

1/ Mettez la VM hors tension.

2/ Ouvrez l’interface Web de vCenter.

3/ Sélectionnez l’hôte ESXi et choisissez Paramètres.

4/ Localisez le menu Hardware, choisissez PCI Devices et sélectionnez Edit.

5/ Sélectionnez tous les GPU Nvidia et cliquez sur OK.

6/ Redémarrez l’hôte ESXi.

7/ Revenez à l’interface Web de vCenter, cliquez avec le bouton droit de la souris sur la VM souhaitée et sélectionnez Edit Settings.

8/ Dans le menu Nouveau périphérique, choisissez Périphérique PCI et sélectionnez Ajouter.

9/ Sélectionnez le GPU dans la liste déroulante New Device.

10/ Choisissez de réserver toute la mémoire et cliquez sur OK.

11/ Redémarrez la VM.

Une fois la VM configurée avec un GPU en mode pass-through ou vDGA, installez le pilote graphique, tel que le pilote Nvidia vGPU, dans le système d’exploitation invité de la VM.

Comment mesurer les performances du GPU ?

Les GPUs sont chers et leur utilisation est limitée. Les administrateurs peuvent avoir besoin d’évaluer ou de justifier l’allocation des ressources GPU pour s’assurer qu’une VM – son application, surtout – tire les bénéfices attendus du GPU. Dans le cas contraire, les administrateurs informatiques peuvent réaffecter le GPU à une autre VM. Heureusement, les équipes IT ont le choix entre plusieurs outils pour évaluer les performances des GPUs physiques et des vGPUs à partir de l’hyperviseur et dans les VMs invitées individuelles.

Par exemple, Nvidia fournit l’utilitaire nvidia-smi qui surveille les performances des GPU à partir de n’importe quel hyperviseur pris en charge et de toute VM qui exécute un Windows ou un Linux 64 bits. L’outil nvidia-smi fournit des informations comme l’ID et le nom du GPU, le type de GPU, les versions des pilotes graphiques, les limites de fréquence d’images, l’utilisation de la mémoire framebuffer et d’autres détails exprimés en pourcentage de la capacité du GPU utilisée par la VM.

Les administrateurs peuvent également utiliser d’autres outils courants tels que Windows Performance Monitor ou Windows Management Instrumentation pour les VM invitées qui exécutent Windows.

Notez que, en mode pass-through, les équipes IT ne peuvent surveiller les performances du GPU qu’à partir de la VM invitée utilisant le GPU, et non à partir de l’hyperviseur.

Pour approfondir sur Administration de systèmes