<div class='slidealt'>Expérimentez des extensions de <a title='virtualisation pour plateformes hétérogènes à base de processeurs ARM' href='/fr/produits/'>virtualisation KVM</a></div> <div class='slidealt'>Faites appelle à des <a title='services de full virtualisation pour kvm sur coeur ARM' href='/fr/services/'>services de virtualisation sur mesure</a></div> <div class='slidealt'>Virtualisation KVM des E/S's pour coeurs ARMv7, ARMv8 <a title='extensions de virtualisation de plateforme VFIO des E/S par kvm sur arm en logiciel libre' href='/fr/solutions/guides/vfio-sur-arm/'>par extensions VFIO/IOMMU</a></div> <div class='slidealt'>Projets de recherche de virtualisation <a title='kvm en logiciel libre pour ARM multicoeur' href='/fr/innovation/'>pour les systèmes embarqués et le cloud</a></div> <div class='slidealt'>Solutions de virtualisation pour systèmes <a title='solutions en logiciels libres de virtualisation pour ARMv7-ARMv8' href='/fr/solutions/'>hétérogènes multicoeur ARM</a></div>

Interface générique de virtualisation des accélérateurs

modèle de virtualisation d'accélérateurs pour architecture ARM

De plus en plus de systèmes embarqués hétérogènes à architecture ARM sont composés de processeurs puissants associés à des accélérateurs programmables à haute efficacité énergétique. La virtualisation des processeurs est une technologie qui est plus mature que la virtualisation des accélérateurs, cela est dû à l'introduction tardive des extensions pour la virtualisation dans les accélérateurs matériels. La diminue le coût global en partageant le matériel, et donc améliore la répartition de charge de calcul ainsi que la flexibilité du système.

Les dernières améliorations en matière d'accélérateurs supportant la virtualisation matérielle, associées à et aux extensions de virtualisation pour les processeurs, permet une perte de performance négligeable en comparaison des performances natives. Il y a de nombreux types d'accélérateurs qui peuvent être virtualisés (comme les GPUs, les FPGAs, etc.). Une architecture logicielle de virtualisation commune permettrait donc de réduire la fragmentation logicielle mais également de diminuer les coûts de maintenance. Virtual Open Systems a ainsi développé une interface générique de virtualisation, basée sur VFIO, pour rassembler tous les accélérateurs possibles autour de la même architecture de virtualisation.

Description d'une architecture commune pour la virtualisation des accélérateurs

L'interface générique de virtualisation dissocie la partie virtualisation qui est open-source de la partie constructeur qui est spécifique à l'accélérateur (driver matériel). Cette architecture ainsi que les éléments qui la composent sont représentés sur la figure ci-dessous.

Architecture haut niveau de virtualisation d'accélérateurs

Architecture haut niveau de la virtualisation d'accélérateurs

L'architecture de virtualisation est composée des trois composants principaux suivant:

  • Le Virtual Accelerator (vACC) Manager est en charge de la liaison entre les interfaces de l'accélérateur et les machines virtuelles, par l'intermédiaire de VFIO. Cette liaison est réalisée à travers l'interface de virtualisation de chaque accélérateur. Ce composant est capable de gérer plusieurs type d'accélérateur (GPUs, FPGAs ou tout autre type d'accélérateur); en effet la communication avec le matériel s'effectue par l'interface de virtualisation, or celle-ci permet au vACC manager de n'avoir besoin d'aucune information spécifique à l'accélérateur pour fonctionner. Pour permettre cette abstraction, chaque accélérateur est représenté dans le vACC manager comme un accélérateur virtuel (vACC) dont la structure est commune à tous les accélérateurs, et qui comporte plusieurs sous-éléments virtuels ("virtual contexts", vCTXs). Ces sous-éléments représentent généralement les unités de calcul qui seront associées aux machines virtuelles. Cependant, une unité de calcul pourra être associée directement à une machine virtuelle ou, multiplexée entre plusieurs. Ce détail d'architecture est généralement transparent pour l'interface de virtualisation grâce au driver de l'accélérateur.
  • L'Interface de Virtualisation définit plusieurs fonction à implémenter pour manipuler les accélérateur supportant la virtualisation (GPU, FPGA, etc.). Les fonctions ont été définies en présupposant des spécificités pour les accélérateurs supportant la virtualisation. L'interface de virtualisation comprend des méthodes pour créer et détruire des sous-éléments virtuels (vCTXs). Elles peuvent être utilisées dès que l'accélérateur a été enregistré par son driver dans le vACC manager.
  • Le driver matériel du constructeur est un driver Linux qui contient, comme un driver classique, du code spécifique au matériel, mais aussi l'implémentation des fonctions définies par l'interface de virtualisation. Le driver d'un composant ayant pour but d'utiliser l'interface de virtualisation devra préalablement s'enregistrer dans le vACC manager. Cela est généralement effectué dans la fonction "probe" du driver, le reste du code restant inchangé, par rapport à un driver traditionnel. Ce driver implémentant les fonctions supplémentaires nécessaire à l'utilisation l'interface de virtualisation communiquera ces dernières lors de l'enregistrement de l'accélérateur dans le vACC manager.

Dans la figure ci-dessous, on peut voir le fonctionnement global du système, montrant l'interface entre le matériel et le logiciel. L'accélérateur représenté est composé de plusieurs sous-éléments matériel (unités de calcul) qui peuvent chacune exécuter des tâches en parallèle. Ce schéma reflète l'architecture actuelle de la plupart des composants supportant la virtualisation (comme les GPUs). Cette architecture permet à plusieurs machines virtuelles de soumettre plusieurs tâches concurrentes à l'accélérateur, tout en conservant des performances quasi natives.

*Environnement de fonctionnement de la virtualisation des accélérateurs

Environnement de fonctionnement de la virtualisation des accélérateurs

De plus, et pour démontrer que l'interface de virtualisation est complètement dissociée de tout matériel spécifique, Virtual Open Systems a créé un modèle d'accélérateur générique qui a été écrit dans le langage LISA+. Ce modèle a été intégré à la plateforme d'émulation ARM Fast Models. Il a été créé pour faciliter la diffusion de l'interface de virtualisation au travers d'un exemple simple; les architectes matériels ont maintenant un outil pour tester cette interface sans avoir besoin de créer leur propre matériel supportant la virtualisation.

L'interface générique de virtualisation présentée ici est du plus grand intérêt pour l'informatique haute performance (HPC) car elle permet d'ajuster la charge de calcul, d'augmenter la souplesse du système et de minimiser les coûts, dans un environnement où les applications tireraient partie des accélérateurs pour diminuer le temps de calcul. Ce travail est également intéressant pour tous les autres secteurs de l'embarqué où des environnements virtuels nécessitent beaucoup de ressources graphiques.

Interface générique de virtualisation des accélérateurs: code source

Ce travail a été réalisé dans le cadre du projet européen FP7 SAVE. Tous les composants mentionnés précédemment sont accessibles depuis le site web de Virtual Open Systems. La partie logicielle décrite ainsi que le modèle générique d'accélérateur en LISA+ peuvent être téléchargés, une fois inscrit, à l'URL: http://www.virtualopensystems.com/downloads/products/accelerators_virtualization_interface/vosys-virt-intf.zip

Inscrivez-vous/Connectez-vous pour télécharger des ressources

L'accès au téléchargement des ressources nécessitent que l'utilisateur soit connecté. L'inscription sur le site web du Virtual Open Systems est par conséquent obligatoire. Le téléchargement des ressources peut être fait également par les outils wget et curl après l'opération d'enregistrement, comme il suit pour wget:

$ wget --save-cookies cookies.txt --post-data 'username=youruname&password=yourpw' \
                                               http://www.virtualopensystems.com/logintrml/
$ wget --load-cookies cookies.txt http://www.virtualopensystems.com/path_to_resource

Et pour curl:

$ curl -d "username=youruname&password=yourpw" --dump-header headers \
                                               http://www.virtualopensystems.com/logintrml/
$ curl -L -b headers http://www.virtualopensystems.com/path_to_resource > resource

A propos de Virtual Open Systems

Virtual Open Systems est une startup innovante et dynamique spécialisée dans les solutions open source de virtualisation pour Linux/Android, le cloud computing, NFV networking et solutions vSwitch, mixed-criticality systems, virtualisation d'accelerateurs, etc. Virtual Open Systems fournit des solutions efficaces afin d'aider les clients à optimiser les coûts du système et à réduire le cycle de développement des produits pour l'introduction sur le marché, tout en améliorant le contrôle et la sécurité.

Virtual Open Systems propose du conseil technique et des services de support pour le développement et l'intégration de solutions de virtualisation Linux/Android, spécialisés sur la Machine Virtuelle du noyau (KVM) Linux pour les systèmes embarqués multi-coeur et les serveurs basés sur ARM.

Les services de portage et de développement de virtualisation

Aujourd'hui, la plupart des nouvelles générations de plates-formes SoC sont basées sur ARM, qui est une architecture innovante, pour des systèmes à criticité mixte de l'automotive, drones et marché industriel, pour les appareils grand public, smartphones, les objets connectés à internet, les serveurs des centres de données, les voitures connectées, pouvant utiliser la virtualisation native pour introduire de nouveaux types d'applications et de services ou comme un moyen d'améliorer la sécurité et de diminuer la consommation d'énergie.

Virtual Open Systems, tout en élargissant un savoir-faire solide basé sur la virtualisation des architectures ARM pour les développements logiciels libres, fournit des extensions de virtualisation et des services de portage sur des SoCs ARM. Pour toutes questions liées à la société, les produits de virtualisation et les services de portage personnalisé vous pouvez nous contacter.