Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.5. Testing d'anciennes opérations RDMA InfiniBand

Note

Cette section s'applique uniquement aux périphériques InfiniBand. Depuis que les périphériques iWARP et RCI/IBoE sont basés IP, les utilisateurs doivent procéder à la section sur les tests d'opérations, une fois qu'IPoIB aura été configuré et les périphériques auront des adresses IP.
Une fois que le service rdma est activé, que le service opensm (si nécessaire) est activé, et que la bibliothèque de l'espace utilisateur appropriée au matériel spécifique a été installée, les opération de rdma espace utilisateur devraient être rendues possibles. Les programmes de test simples, grâce au paquet libibverbs-utils, sont utiles pour vérifier que les opérations RDMA fonctionnent correctement. Le programme ibv_devices indiquera quels périphériques sont présents dans le système, et la commande ibv_devinfo donnera des informations détaillées sur chaque périphérique. Exemple :
~]$ ibv_devices
    device                 node GUID
    ------              ----------------
    mlx4_0              0002c903003178f0
    mlx4_1              f4521403007bcba0
~]$ ibv_devinfo -d mlx4_1
hca_id: mlx4_1
        transport:                      InfiniBand (0)
        fw_ver:                         2.30.8000
        node_guid:                      f452:1403:007b:cba0
        sys_image_guid:                 f452:1403:007b:cba3
        vendor_id:                      0x02c9
        vendor_part_id:                 4099
        hw_ver:                         0x0
        board_id:                       MT_1090120019
        phys_port_cnt:                  2
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             2048 (4)
                        sm_lid:                 2
                        port_lid:               2
                        port_lmc:               0x01
                        link_layer:             InfiniBand

                port:   2
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet
~]$ ibstat mlx4_1
CA 'mlx4_1'
        CA type: MT4099
        Number of ports: 2
        Firmware version: 2.30.8000
        Hardware version: 0
        Node GUID: 0xf4521403007bcba0
        System image GUID: 0xf4521403007bcba3
        Port 1:
                State: Active
                Physical state: LinkUp
                Rate: 56
                Base lid: 2
                LMC: 1
                SM lid: 2
                Capability mask: 0x0251486a
                Port GUID: 0xf4521403007bcba1
                Link layer: InfiniBand
        Port 2:
                State: Active
                Physical state: LinkUp
                Rate: 40
                Base lid: 0
                LMC: 0
                SM lid: 0
                Capability mask: 0x04010000
                Port GUID: 0xf65214fffe7bcba2
                Link layer: Ethernet
Les sorties de commande de ibv_devinfo et de ibstat rendent des informations légèrement différentes (ainsi, le port MTU est présent dans ibv_devinfo mais pas dans la sortie de ibstat, et le port GUID est présent dans la sortie de ibstat, mais pas dans celle de ibv_devinfo) et certaines choses sont nommées différemment (par exemple, le local identifier (LID) de base dans la sortie ibstat correspond au port_lid de la sortie de ibv_devinfo)
Les programmes ping simples, comme ibping du paquet infiniband-diags, peuvent être utilisés pour tester la connectivité RDMA. Le programme ibping utilise un modèle client/serveur. Vous devez d'abord démarrer un serveur ibping sur une seule machine, puis exécuter ibping en tant que client sur une autre machine et lui demander de se connecter au serveur ibping. Comme nous sommes désireux de tester la fonctionnalité RDMA de base, nous avons besoin d'utiliser une méthode de résolution d'adresse spécifique RDMA, plutôt que d'adresses IP pour spécifier le serveur.
Sur le serveur, les utilisateurs peuvent utiliser les commandes ibv_devinfo et ibstat pour afficher le port_lid (lid de Base) et le Port GUID du port qu'ils veulent tester (en supposant que le port 1 de l'interface ci-dessus, le port_lid / Base LID corresponde à 2 et le Port GUID à 0xf4521403007bcba1)). Puis, lancer ibping avec les options nécessaires pour lier spécifiquement la carte et le port à tester; et aussi, en spécifiant ibping, on doit exécuter en mode serveur. Vous pourrez apercevoir les options disponibles à ibping en ajoutant les options -? ou --aider, mais dans ce cas, il faudra soit l'option -S ou --Server et pour relier la carte au port, il faudra soit -C ou --Ca et -P ou --Port. Remarque : dans cette instance, le port ne désigne pas un numéro de port de réseau, mais désigne le numéro de port physique situé sur la carte lorsque vous utilisez une carte multi-ports. Pour tester la connectivité de la structure RDMA en utilisant, par exemple, le deuxième port d'une carte multiport, vous devrez instruireibping de se lier au port 2 sur la carte. Lorsque vous utilisez une carte à port unique, ou si vous tester le premier port sur une carte, cette option n'est pas nécessaire. Exemple :
~]$ ibping -S -C mlx4_1 -P 1
Passez alors à la machine client et exécuter ibping. Prenez note de chaque port GUID du port auquel le programme ibping est lié, ou l' identificateur local (LID de l'anglais Local Indentifier) du port auquel le programme ibping est lié. Aussi, notez quelle carte et quel port de la machine client sont physiquement connectés au même réseau que la carte et le port qui était liés au serveur. Par exemple, si le second port de la première carte était lié au serveur, et que le port était connecté à une structure RDMA secondaire, alors, spécifier sur le client quelle carte ou port sont nécessaires pour être connecté également à cette structure secondaire. Une fois que ces choses sont connues, exécutez le programme ibping en tant que client et connectez-vous au serveur en utilisant soit le LID ou le GUID du port trouvé sur le serveur comme étant l'adresse à laquelle se connecter. Exemple :
~]$ ibping -c 10000 -f -C mlx4_0 -P 1 -L 2
--- rdma-host.example.com.(none) (Lid 2) ibping statistics ---
10000 packets transmitted, 10000 received, 0% packet loss, time 816 ms
rtt min/avg/max = 0.032/0.081/0.446 ms
ou
~]$ ibping -c 10000 -f -C mlx4_0 -P 1 -G 0xf4521403007bcba1 \
--- rdma-host.example.com.(none) (Lid 2) ibping statistics ---
10000 packets transmitted, 10000 received, 0% packet loss, time 769 ms
rtt min/avg/max = 0.027/0.076/0.278 ms
Cette sortie vérifie que les communications RDMA end-to-end fonctionnent pour les applications d'espace utilisateur.
L'erreur suivante peut être vue :
~]$ ibv_devinfo
libibverbs: Warning: no userspace device-specific driver found for /sys/class/infiniband_verbs/uverbs0
No IB devices found
Cette erreur indique que la bibliothèque de l'espace utilisateur nécessaire n'est pas installée. L'administrateur doit installer une des bibliothèques répertoriées de l'espace utilisateur (selon leur matériel) dans la section Section 9.2, « Paquets de logiciels relatifs à InfiniBand et à RDMA ». En de rares occasions, cela peut se produire si un utilisateur installe le mauvais type d'arch pour le pilote ou pour libibverbs. Par exemple, si libibverbs est d'arch x86_64 et que libmlx4 est installé, mais est de type i686, alors cette erreur peut se produire.

Note

De nombreux exemples d'applications préfèrent utiliser des adresses ou des noms d'hôte au lieu de LID pour ouvrir une communication entre le serveur et le client. Pour ces applications, il faut définir les IPoIB avant de tenter de tester des communications RDMA end-to-end. L'application ibping est inhabituelle car elle accepte des LID simples comme forme d'adressage, et cela lui permet de constituer un test simple qui élimine les éventuels problèmes d'adressage d'IPoIB des scénarios de test et nous donne donc une vue plus isolée pour savoir si oui ou non, les communications RDMA simples fonctionnement.