480 likes | 609 Views
Projet de fin d’études. Interface de communication pour les réseaux InfiniBand. Etudiants Encadrants Responsable Aïchatou RABBA Eric RENAULT Guy BERNARD Nadir GHEZALI Ouissem BEN FREDJ OPTION ASR 2005/2006. Objectif du projet. Etude du réseau InfiniBand Etude du Remote Write
E N D
Projet de fin d’études Interface de communication pour les réseaux InfiniBand EtudiantsEncadrantsResponsable Aïchatou RABBA Eric RENAULT Guy BERNARD Nadir GHEZALI Ouissem BEN FREDJ OPTION ASR 2005/2006
Objectif du projet • Etude du réseau InfiniBand • Etude du Remote Write • Implémentation d’une interface de communication pour le Remote Write sur InfiniBand
InfiniBand • Présentation • Architecture • Quelques concepts • Gestion des communications • Types de transferts
Présentation • Architecture d’interconnexion à haut débit • Alternative performante aux architectures d’E/S à bus partagé classiques (Bus PCI,..) • Spécifié initialement par l’ IBTA (InfiniBand Trade Association) en 1999 • Haut débit pouvant atteindre 30 Gbs en fonction de la largeur du lien (1x, 4x, 12x) • Faible latence
InfiniBand • Présentation • Architecture • Quelques concepts • Gestion des communications • Types de transferts
Architecture • Subnet et Subnet Manager • Switchs et Routers • HCA (Host Channel Adapter) • TCA (Target Channel Adapter) • Liens physiques
InfiniBand • Présentation • Architecture • Quelques concepts • Gestion des communications • Types de transferts
Quelques concepts • RDMA (Remote Direct Memory Access) • Accès direct à des zones mémoires distantes Sans l’intervention du processeur • Absence de recopies successives dans des tampons mémoires (zero-copy) • N’utilise pas les appels systèmes du noyau (OS-Bypass)
Quelques concepts Transfert de données zéro-copie avec OS-bypass sur un réseau de grappe
InfiniBand • Présentation • Architecture • Quelques concepts • Gestion des communications • Types de transferts
Gestion des communications • Utilisation des queues d’envoi et de réception (Queue Pairs) • Chaque QP est composée d’un queue d’envoi (Send Queue) et d’une Queue de réception (Receive Queue) • L’envoi ou la réception des messages se fait par l’ajout d’un descripteur (Work Request) dans la queue appropriée. • Génération d’une CQE (Completion Queue Entry) après chaque envoi ou réception effective de messages
Gestion des communications • Types de services de transferts • RC : Reliable Connect • RD : Reliable Datagram • UC : Unreliable Connect • UD : Unreliable Datagram Le type de transfert est spécifié lors de la création des QPs
InfiniBand • Présentation • Architecture • Quelques concepts • Gestion des communications • Types de transferts
Types de transferts • RMDA Read
Types de transferts • RMDA Write
Types de transferts • Send
Types de transferts Send inlined
Remote Write • Description • Interface RWAPI (Remote Write API) • Modèle de programmation
Description • Protocole de communication sans recopie intermédiaire • Objectif : minimiser la latence, et maximiser la bande passante utile
Remote Write • Description • Interface RWAPI (Remote Write API) • Modèle de programmation
Remote Write API • Initialisation des ressources Fonctions rwapi_init et rwapi_finalise • Gestion de la topologie Fonctions rwapi_size et rwapi_rank • Allocation mémoire Fonctions rwapi_alloc et rwapi_free • Envoi de messages Fonctions rwapi_ssend et rwapi_send • Contrôle des messages Fonctions rwapi_issent et rwapi_receive • Contrôle des messages par interruption fonctions rwapi_rhandler et rwapi_shandler
Remote Write • Description • Interface RWAPI (Remote Write API) • Modèle de programmation
Conception • Contexte de programmation • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Notification (poll) • Par interruption
Objectif de la conception • Parallèle entre InfiniBand et RWAPI. • Définition des pré requis aux communications entre processus • Choix approprié des paramètres et opérations propres à InfiniBand • Choix du type de transfert
Conception • Contexte de programmation • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Poll • Par interruption
Choix du type de transfert Type de transfert choisi : RC
Conception • Contexte de programmation • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Poll • Par interruption
Initialisation • fonction rwapi_init • Appel préalable a rwapi_init par chaque nœud nécessaire • Création et initialisation des ressources InfiniBand : QPs, Domaines de protection, allocation et enregistrement des zones mémoire auprès du HCA … • Gestion de la topologie
Conception • Contexte • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Poll • Par interruption
Gestion de la topologie • Utilisation d’un Spawner (SSH) pour la répartition de l’exécution sur les nœuds voulus • Création des QPs au niveau de chaque nœud • Utilisation du réseau IP comme réseau de contrôle • Etablissement des connexions et synchronisation des QPs
Gestion de la topologie réseau de trois nœuds
Conception • Contexte de programmation • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Poll • Par interruption
Envoi des messages • Messages courts • rwapi_ssend • 8 octets • N’utilise pas d’adresse physique distante • Utilisation du SEND (inlined / non inlined) d’InfiniBand • Messages normaux • Utilise le RDMA_WRITE • rwapi_send • Connaissance a priori des adresses virtuelles et physiques distantes nécessaire • Messages pouvant atteindre 2 Go
Conception • Contexte de programmation • Choix du type de transfert • Initialisation • Gestion de la topologie • Envoi des messages • Messages courts • Messages normaux • Contrôle des messages • Par Poll • Par interruption
Contrôle des messages • Par notification (poll) • Vérification de la présence d’une nouvelle entrée dans les queues de complétion d’envoi (SCQ avec rwapi_issent) ou de réception (RCQ avec rwapi_receive) • Par interruption • Utilisation d’un drapeau spécifique à l’envoi • Appel des fonctions rwapi_shandler et rwapi_rhandler selon le drapeau spécifié
Validation et tests de performance • Latence (One Way Latency) Nombre d’itérations:1000000 Taille du message:8 octets • Avec rwapi_ssend: 3,16 µs • Avec rwapi_send: 1,82 µs
Validation et tests de performance • Bande passante (test avec la fonction rwapi_send)
Perspectives • Implémentation du contrôle de messages par interruption • Implémentation d’un mécanisme dédié de gestion des files d’émission