<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> <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'>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'>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'>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>

Un Mécanisme à Mémoire Partagée Zéro-Copie pour VM ARM: vosyshmem

vosyshmem est un mécanisme de mémoire partagée zero-copie de haute performance pour machines virtuelles KVM sur ARM

La virtualisation est désormais une technologie omniprésente, utilisée dans de nombreux scénarios applicatifs pour fonctionnalités différenciées. De plus en plus de machines virtuelles peuvent être activées au dessus d'une couche d'hyperviseur, nécessitant des mécanismes de communication efficaces entre machines virtuelles et hôte.

En effet dans un environnement hautement virtualisé, comme par exemple un système de calcul haute performance (HPC), des plates-formes réseau (NFV, SDN, etc.) ou des serveurs, les machines virtuelles ont des interactions fréquentes et intensives entre elles. D'autre part, dans des systèmes embarqués, en raison de ressources plus limitées, il est rare de trouver plus de deux machines virtuelles en cours d'exécution en même temps; ici les principales interactions du système invité sont avec le hôte.

Dans tous ces scénarios, il y a toujours une surcharge importante (par exemple en raison de la mise en œuvre de protocoles de réseau, de pilotes de périphériques etc.) qui peut être évitée par l'utilisation d'une mémoire partagée zéro-copie entre différents systèmes d'exploitation (i.e. les machines virtuelles et l'hôte) s'exécutant au dessus d'une même plate-forme matérielle.

Architecture du composant vosyshmem, un mécanisme de mémoire partagée zero-copie développé par Virtual Open Systems"

Architecture de communication entre-VMs à mémoire partagée (vosyshmem)

Pour résoudre ce problème et accélérer les performances des machines virtuelles sur architectures ARM, Virtual Open Systems a développé un mécanisme de communication entre-VM à mémoire partagée (vosyshmem) de type zéro-copie, qui permet aux applications s'exécutant dans une machine virtuelle en espace utilisateur d'accéder directement à une zone de mémoire partagée avec d'autres applications s'exécutant dans l'hôte ou dans un autre espace utilisateur d'invité.

Mémoire partagée haute performance avec vosyshmem pour HPC, NFV, embarqué

Habituellement, pour déplacer des données à partir d'une machine virtuelle à une autre, de nombreuses copies de la même zone de mémoire sont nécessaires. Par exemple, quand une application s'exécutant su un invité A doit communiquer avec un invité B, elle écrit des données dans une mémoire tampon dans l'espace utilisateur. Cette mémoire tampon est ensuite copiée dans l'espace noyau de l'invité A, puis dans l'espace utilisateur de l'hôte. À ce stade, l'invité B est capable de lire les données à partir de l'espace utilisateur de l'hôte (dans l'espace du noyau de l'invité B) qui seront finalement copiées dans l'espace utilisateur de l'application en cours d'exécution dans l'invité B. Il est évident que ce nombre élevé d'opérations de copies mémoire provoque un véritable goulot d'étranglement pour les performances des applications en cours d'exécution.

La mise en œuvre du composant logiciel vosyshmem de Virtual Open Systems se base sur un mécanisme de mémoire partagée de type zéro-copie, qui permet aux applications s'exécutant dans une machine virtuelle d'accéder directement à la même zone de mémoire d'un programme en cours d'exécution dans un autre invité ou dans l'hôte lui-même. Un programme d'une machine virtuelle peut facilement communiquer avec une application s'exécutant dans l'hôte ainsi que avec un logiciel actif dans un autre invité, indépendamment des systèmes d'exploitation concernés. En outre, vosyshmem supporte un système de notifications pour l'activation des événements et la gestion des interruptions. Ceci est une fonctionnalité importante pour réduire la charge de travail CPU (et par conséquent la consommation d'énergie), tout en assurant une performance optimale.

Il s'agit donc d'un mécanisme de mémoire partagée pour viser une performance optimale combinée avec un haut degré de sécurité, qui peut être utilisé non seulement pour partager des données, mais aussi comme élément logiciel de base pour de nombreuses applications telles que API Remoting, Remote Procedure Call (RPC), des solutions E/S à base de mémoire partagée (i.e. sockets) et des fonctions de réseaux virtuels (VNF) pour NFV.