Interface de communication pour les réseaux InfiniBand 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
PLAN Présentation du projet Présentation du réseau InfiniBand Le protocole de communication Remote write L’implémentation de l’interface Conception Validation et tests de performance Exemple d’utilisation Perspectives
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
Architecture Infiniband
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
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 Fonctions rwapi_init et rwapi_finalise 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
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
Niveau de programmation
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 Messages normaux 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) Par interruption 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)
Exemple d’utilisation
Perspectives Implémentation du contrôle de messages par interruption Implémentation d’un mécanisme dédié de gestion des files d’émission
QUESTIONS?