Accélération des machines virtuelles par virtualisation complète des GPUs
Les unités de traitement graphiques (GPU) sont aujourd'hui utilisées non seulement pour effectuer des tâches graphiques mais aussi pour exécuter des applications à usage général pour réduire la charge de travail de l'unité centrale de traitement (CPU). Les systèmes SoC modernes intègrent désormais un GPU combiné à des CPUs. La virtualisation est devenue une technologie essentielle dans plusieurs domaines d'application, permettant ainsi à des machines virtuelles de bénéficier d'une accélération de GPU, non seulement pour améliorer l'expérience graphique dans des systèmes virtualisés mais aussi pour libérer des ressources CPU pour d'autres tâches.
L'utilisation de la virtualisation complète de la GPU dans des systèmes sur puce (SoC) de nouvelle génération facilite l'adoption du SoC lui-même dans plusieurs segments de marché, y compris les réseaux (Network Functions Virtualization - NFV), High Performance Computing (HPC), l'automobile et les objets connectés, la maison intelligente et les passerelles intelligentes, les smart-cells en télécommunication et les centres de données.
Virtualisation par affectation directe de GPU via VFIO
Des GPUs existantes peuvent être affectés efficacement à des machines virtuelles avec la soi-disant virtualisation par affectation directe via VFIO. Virtual Open Systems a développé le dispositif VFIO (Virtual Function I/O) pour périphériques de plateforme ARM, permettant ainsi à des périphériques d'hôte d'être reliés directement à une machine virtuelle. Grâce à VFIO, aucune intervention de l'hyperviseur n'est nécessaire pour gérer les interactions entre une machine virtuelle et le périphérique physique, fournissant une performance quasi native dans la virtualisation des périphériques. Par ailleurs, avec une telle approche le pilote natif du périphérique peut être utilisé tel quel dans le système d'exploitation d'invité. Les registres et les interruptions sont directement ré-dirigés vers la machine virtuelle, tandis que les accès DMA sont sécurisés par un IOMMU, ce qui garantit à ce que la GPU n'accède qu'à la zone de mémoire autorisée.
Architecture haut niveau de la virtualisation de GPU basée sur VFIO
La structure de VFIO pour ARM a besoin que le périphérique soit placé derrière un IOMMU, pour qu'il puisse être lié à une machine virtuelle. Ayant été directement impliqué dans le développement de VFIO sur ARM en logiciel libre pour les périphériques de la plateforme ARM, Virtual Open Systems fournit des solutions sur mesure basées sur VFIO pour l'activation de la virtualisation d'accélérateurs et de GPU:
- Développement pour interfaces IOMMU
- Support de périphériques en QEMU
- Développement de pilotes en espace utilisateur
- Solutions de virtualisation sur mesure
Virtualisation complète de GPU assistée par couche matérielle pour GPU virtuelle partagée (vGPU)
De plus en plus des GPU utilisent des extensions matérielles pour améliorer les fonctionnalités de virtualisation (e.g., par affectation directe à plusieurs machines virtuelles). Une couche matériel GPU crée des interfaces de GPU virtuelle (vGPU), fournissant une abstraction de GPU physiques multiples. Ces vGPUs peuvent être liés chacun à une machine virtuelle différente via VFIO, permettant ainsi une virtualisation complète de GPU à haute performance. En outre, les machines virtuelles peuvent encore utiliser le pilote natif du périphérique.
Architecture haut niveau d'une virtualisation complète par VFIO d'un GPU assisté par couche matérielle
De même, pour la virtualisation complète de GPU Virtual Open Systems offre des services professionnels de développement personnalisé pour une mise en place de la meilleure solution de virtualisation autour des GPUs avec extensions matérielles de virtualisation:
- Développement d'interfaces IOMMU personnalisées
- Développement QEMU pour des interfaces de vGPUs
- Mise en oeuvre de composants personnalisés de gestion de vGPU, pour gérer l'ensemble du cycle de vie des interfaces vGPU
- Affectation d'interfaces vGPU vers les machines virtuelles par le biais de VFIO
- Support pour des mécanismes d'interruption (e.g., une seule interruption physique est partagée par tous vGPUs) et leur intégration dans VFIO et QEMU