• Aucun résultat trouvé

Coût de lancement de tâches MPI sur une grappe, en mode natif et virtualisé

On constate que les temps de lancement mesurés dans les deux cas sont similaires. Lorsque le nombre de tâches reste raisonnable devant le nombre de coeurs disponibles sur la machine - jusqu’à 8 tâches par coeur - il est même légèrement plus rapide de lancer les tâches dans des machines virtuelles avec VMPI que de les lancer sur l’hôte avec OpenMPI. Ce résultat met en évidence l’efficacité du fork de machines virtuelles.

5.2.1.3 Fork distribué

Ce test d’instanciation de machines virtuelles est similaire au précédent à la différence près que les machines virtuelles sont distribuées sur une grappe de machines physiques. Nous faisons varier le nombre de machines physiques utilisées au sein de la grappe Fortoy, et créons autant de tâches MPI que de coeur. Nous présentons les temps obtenus par OpenMPI et VMPI sur la figure 5.2. Chaque test est effectué 10 fois et le meilleur temps est conservé.

On constate que les temps de lancement des tâches MPI sont similaires dans les cas natifs et virtualisés. Cela montre que le coût de réplication des machines virtuelles sur une grappe n’est pas pénalisant. Cependant l’allure de la courbe révèle que l’implémentation de notre fork dis- tribué devra être améliorée pour passer efficacement à l’échelle puisque son coût augmente rapidement avec le nombre de machines hôtes impliquées. En effet, actuellement, les données permettant de créer les machines virtuelles filles sont envoyées séquentiellement à tous les hôtes à partir de l’hôte hébergeant la machine virtuelle mère. Un algorithme de diffusion distri- bué basé sur un arbre permettrait de minimiser le temps de transfert quand le nombre d’hôtes augmente.

5.2.2 Communications

Les tests présentés dans cette section visent à mettre en évidence les performances des commu- nications utilisant notre périphérique virtuel. Nous nous focalisons sur les performances des diverses primitives de communication MPI et utilisons pour cela la suite de tests IMB (pour

5.2. Micro-évaluations 101 Intel MPI Benchmarks). Nous présentons tout d’abord les performances brutes de latence et de bande passante obtenues lors de communications point-à-point, puis nous nous intéressons aux communications collectives. Nous distinguons en outre, pour chaque test, le cas où toutes les communications ont lieu en mémoire partagée du cas où les machines virtuelles sont distri- buées sur plusieurs noeuds de la grappe.

Les différentes valeurs reportées dans cette section sont les valeurs brutes obtenues lors d’une exécution d’IMB. En effet cette suite de tests fournit d’elle même des temps d’exécution moyen- nés sur un grand nombre d’opérations. Notons par ailleurs que nous exécutons ces tests avec le paramètre -off_cache proposé par IMB. Ce paramètre permet de faire varier les zones mémoire qui sont utilisées pour les échanges de messages afin que celles-ci ne soient pas systémati- quement en cache préalablement aux transferts. On obtient ainsi des conditions de test plus proches de celles rencontrées dans des applications réelles.

5.2.2.1 Communications point-à-point

Pour évaluer les performances des communications point-à-point, nous utilisons le test clas- sique PingPong. Dans ce test, deux tâches s’échangent tour à tour un message d’une taille donnée, et la latence reportée correspond à la moitié du temps nécessaire à un aller-retour du message. La bande passante est simplement obtenue en divisant la taille du message par la latence.

Communications en mémoire partagée

La figure 5.3 présente les résultats obtenus sur la machine Nehalem. Nous comparons les per- formances obtenues pour le test PingPong lorsque les tâches sont exécutées dans 3 environne- ments différents.

– Les courbes intitulées openmpi-shm correspondent à une exécution des tâches MPI sur l’hôte, avec la bibliothèque OpenMPI.

– Les courbes intitulées openmpi-vhostnet correspondent à l’exécution de deux tâches MPI dans deux machines virtuelles co-hébergées. Ces machines virtuelles utilisent KVM et QEMU en composant en espace utilisateur et communiquent avec le périphérique Ethernet para- virtualisé le plus efficace proposé actuellement par QEMU. Les tâches MPI utilisent dans ce cas aussi la bibliothèque OpenMPI pour exploiter le périphérique Ethernet virtuel. Notons que ce périphérique nécessite un noyau Linux hôte récent (le module vhost-net n’est apparu que dans la version 2.6.34) ainsi que les droits administratifs nécessaires à la création d’un pont réseau. Nous n’avons donc pu le tester que sur notre machine de développement – Enfin les courbes intitulées vmpi, correspondent à l’exécution de tâches dans des machines

virtuelles co-hébergées utilisant notre périphérique de communication et la bibliothèque VMPI.

Quelle que soit la quantité de données transférée, on constate que l’utilisation d’un périphé- rique Ethernet virtuel impose un surcoût très important par rapport à des solutions mettant directement à profit la mémoire partagée pour les échanges de messages. Ce résultat souligne donc la nécessité d’introduire un périphérique virtuel nouveau pour pouvoir exécuter efficace- ment des applications MPI dans des machines virtuelles.

Notre périphérique virtuel permet quant à lui d’atteindre des latences et bandes passantes similaires à ce que l’on obtient en exécutant les tâches sur l’hôte. Pour des messages de grande taille la bande passante atteinte est même sensiblement meilleure.

0 10 20 30 40 50 60 1 4 16 64 256 1024 Durée (µs)

Taille du message (octets)

openmpi−shm openmpi−vhostnet vmpi (a) Latence 0 500 1000 1500 2000 2500 3000 3500 4000 1 32 1024 32K 1M 4M Bande passante (MB/s)

Taille du message (octets) openmpi−shm

openmpi−vhostnet vmpi

(b) Bande passante