Cette section indique comment identifier les fonctions physiques et virtuelles InfiniBand et mettre en corrélation les vues Oracle Solaris et Logical Domains Manager des fonctions physiques et virtuelles InfiniBand.
L'exemple suivant illustre différentes manières d'afficher les informations relatives à la fonction physique /SYS/MB/RISER1/PCIE4/IOVIB.PF0. La présence de la chaîne IOVIB dans le nom de fonction physique indique qu'il s'agit d'un périphérique SR-IOV InfiniBand.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ pci_0 BUS pci_0 primary IOV niu_0 NIU niu_0 primary /SYS/MB/RISER0/PCIE0 PCIE pci_0 primary EMP /SYS/MB/RISER1/PCIE1 PCIE pci_0 primary EMP /SYS/MB/RISER2/PCIE2 PCIE pci_0 primary EMP /SYS/MB/RISER0/PCIE3 PCIE pci_0 primary OCC /SYS/MB/RISER1/PCIE4 PCIE pci_0 primary OCC /SYS/MB/RISER2/PCIE5 PCIE pci_0 primary EMP /SYS/MB/SASHBA0 PCIE pci_0 primary OCC /SYS/MB/SASHBA1 PCIE pci_0 primary OCC /SYS/MB/NET0 PCIE pci_0 primary OCC /SYS/MB/NET2 PCIE pci_0 primary OCC /SYS/MB/RISER0/PCIE3/IOVIB.PF0 PF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET0/IOVNET.PF1 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF0 PF pci_0 primary /SYS/MB/NET2/IOVNET.PF1 PF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF0 VF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF1 VF pci_0 primary /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF2 VF pci_0 iodom1 /SYS/MB/RISER0/PCIE3/IOVIB.PF0.VF3 VF pci_0 iodom1 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1
La commande ldm list-io -l fournit des informations plus détaillées sur le périphérique de fonction physique spécifié, /SYS/MB/RISER1/PCIE4/IOVIB.PF0. La valeur maxvfs indique que le nombre maximal de fonctions virtuelles pris en charge par le périphérique physique est 64. Pour chaque fonction virtuelle associée à la fonction physique, la sortie affiche ce qui suit :
Nom de fonction
Type de fonction
Nom de bus
Nom de domaine
Etat facultatif de la fonction
Chemin de périphérique
Cette sortie, ldm list-io -l, montre que VF0 et VF1 sont assignés au domaine primary et que VF2 et VF3 sont assignés au domaine d'E/S iodom1.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,1] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,2] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,3] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,4]
Cette section indique comment identifier les périphériques SR-IOV InfiniBand sur un système Oracle Solaris 11 et un système Oracle Solaris 10.
Servez-vous de la commande ldm list-io -l pour afficher le nom du chemin d'accès de périphérique Oracle Solaris associé à chaque fonction physique et virtuelle.
primary# ldm list-io -l /SYS/MB/RISER1/PCIE4/IOVIB.PF0 NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ /SYS/MB/RISER1/PCIE4/IOVIB.PF0 PF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0] maxvfs = 64 /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF0 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,1] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF1 VF pci_0 primary [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,2] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF2 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,3] /SYS/MB/RISER1/PCIE4/IOVIB.PF0.VF3 VF pci_0 iodom1 [pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0,4]
Oracle Solaris 11 :
Exécutez la commande dladm show-phys -L d'Oracle Solaris 11 pour faire correspondre chaque instance IPoIB (IP over InfiniBand) à sa carte physique. Par exemple, la commande suivante met en évidence les instances IPoIB qui utilisent la carte se trouvant dans l'emplacement PCIE4, qui est la même carte que celle de l'exemple ldm list-io -l ci-dessus.
primary# dladm show-phys -L | grep PCIE4 net5 ibp0 PCIE4/PORT1 net6 ibp1 PCIE4/PORT2 net19 ibp8 PCIE4/PORT1 net9 ibp9 PCIE4/PORT2 net18 ibp4 PCIE4/PORT1 net11 ibp5 PCIE4/PORT2
Chaque adaptateur de canal hôte (HCA, Host Channel Adapter) InfiniBand possède un ID unique, appelé GUID. Chaque port possède également un GUID (en général, un HCA est doté de deux ports). Un GUID de HCA InfiniBand identifie l'adaptateur de façon unique. Les GUID des ports identifient chaque port de HCA de façon unique et jouent un rôle semblable à celui de l'adresse MAC d'un périphérique réseau. Ces GUID à 16 chiffres sont utilisés par les outils de gestion et de diagnostic InfiniBand.
Exécutez la commande dladm show-ib d'Oracle Solaris 11 pour obtenir les informations de GUID des périphériques SR-IOV InfiniBand. Les fonctions physiques et virtuelles d'un même périphérique ont des valeurs de GUID de HCA proches. Le 11e chiffre hexadécimal du GUID de HCA indique la relation entre une fonction physique et ses fonctions virtuelles. Notez que les zéros de tête sont supprimés dans les colonnes HCAGUID et PORTGUID.
Par exemple, la fonction physique PF0 est accompagnée de deux fonctions virtuelles, VF0 et VF1, qui sont affectées au domaine primary. Le 11e chiffre hexadécimal de chaque fonction virtuelle est incrémenté de un par rapport à celui de la fonction physique correspondante. Ainsi, si le GUID de PF0 est 8, les GUID de VF0 et de VF1 sont respectivement 9 et A.
La sortie de la commande dladm show-ib ci-après indique que les liens net5 et net6 appartiennent à la fonction physique PF0. Les liens net19 et net9 appartiennent à VF0 du même périphérique tandis que net18 et net11 appartiennent à VF1.
primary# dladm show-ib LINK HCAGUID PORTGUID PORT STATE PKEYS net6 21280001A17F56 21280001A17F58 2 up FFFF net5 21280001A17F56 21280001A17F57 1 up FFFF net19 21290001A17F56 14050000000001 1 up FFFF net9 21290001A17F56 14050000000008 2 up FFFF net18 212A0001A17F56 14050000000002 1 up FFFF net11 212A0001A17F56 14050000000009 2 up FFFF
Le périphérique de la sortie dladm show-phys d'Oracle Solaris 11 suivante indique la relation entre les liens et les périphériques de port InfiniBand sous-jacents (ibpX).
primary# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE ... net6 Infiniband up 32000 unknown ibp1 net5 Infiniband up 32000 unknown ibp0 net19 Infiniband up 32000 unknown ibp8 net9 Infiniband up 32000 unknown ibp9 net18 Infiniband up 32000 unknown ibp4 net11 Infiniband up 32000 unknown ibp5
Exécutez la commande ls -l pour afficher les chemins d'accès de périphérique des ports InfiniBand (IB port). Un périphérique IB port est subordonné à un chemin d'accès de périphérique visible dans la sortie de la commande ldm list-io -l. Une fonction physique possède une adresse d'unité en une partie, par exemple pciex15b3,673c@0, tandis que les fonctions virtuelles ont des adresses d'unité en deux parties, par exemple pciex15b3,1002@0,2. La valeur de la seconde partie de l'adresse d'unité est égale au numéro de la fonction virtuelle additionné de un. (Dans ce cas, le deuxième composant est 2, ce qui signifie que ce périphérique correspond à la fonction virtuelle 1.) La sortie suivante indique que /dev/ibp0 est une fonction physique et /dev/ibp5 une fonction virtuelle.
primary# ls -l /dev/ibp0 lrwxrwxrwx 1 root root 83 Apr 18 12:02 /dev/ibp0 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,673c@0/hermon@0/ibport@1,0,ipib:ibp0 primary# ls -l /dev/ibp5 lrwxrwxrwx 1 root root 85 Apr 22 23:29 /dev/ibp5 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,2/hermon@3/ibport@2,0,ipib:ibp5
Vous pouvez utiliser la commande ibv_devices pour afficher le nom du périphérique OpenFabrics ainsi que le GUID du noeud (HCA). Lorsque des fonctions virtuelles sont présentes, la colonne Type indique si la fonction est physique ou virtuelle.
primary# ibv_devices device node GUID type ------ ---------------- ---- mlx4_4 0002c90300a38910 PF mlx4_5 0021280001a17f56 PF mlx4_0 0002cb0300a38910 VF mlx4_1 0002ca0300a38910 VF mlx4_2 00212a0001a17f56 VF mlx4_3 0021290001a17f56 VF
Oracle Solaris 10 :
Dans un domaine d'E/S invité Oracle Solaris 10, exécutez la commande dladm show-dev pour afficher les instances IPoIB, qui portent un nom de la forme : ibdxx.
# dladm show-dev vnet0 link: up speed: 0 Mbps duplex: unknown ibd0 link: up speed: 32000 Mbps duplex: unknown ibd1 link: up speed: 32000 Mbps duplex: unknown ibd2 link: up speed: 32000 Mbps duplex: unknown ibd3 link: up speed: 32000 Mbps duplex: unknown
La commande ls -l appliquée aux noms de chemins d'accès de HCA se trouvant dans le répertoire /devices/ permet d'extraire un HCA et les GUID de HCA correspondants.
# ls -l /devices/ib\:[0-9]* crw-r--r-- 1 root sys 67, 0 Jun 12 16:27 /devices/ib:212B0001A17F56 crw-r--r-- 1 root sys 67, 0 Jun 12 16:27 /devices/ib:212C0001A17F56
Les GUID figurant dans la sortie de la commande ibv_devices (notez le 11e chiffre hexadécimal, les lettres "B" et "C" dans ce cas) indiquent qu'il s'agit de fonctions virtuelles affectées au domaine Oracle Solaris 10. Vous pouvez obtenir davantage d'informations sur les instances IPoIB en exécutant la commande ls -l sur les noms de chemins d'accès IPoIB /dev.
# ls -l /dev/ibd* lrwxrwxrwx 1 root other 29 May 23 16:26 /dev/ibd -> ../devices/pseudo/clone@0:ibd lrwxrwxrwx 1 root root 89 May 31 10:52 /dev/ibd0 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,3/hermon@0/ibport@1,ffff,ipib:ibd0 lrwxrwxrwx 1 root root 89 May 31 10:52 /dev/ibd1 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,3/hermon@0/ibport@2,ffff,ipib:ibd1 lrwxrwxrwx 1 root root 89 Jun 12 18:36 /dev/ibd2 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,4/hermon@1/ibport@1,ffff,ipib:ibd2 lrwxrwxrwx 1 root root 89 Jun 12 18:36 /dev/ibd3 -> ../devices/pci@400/pci@1/pci@0/pci@0/pciex15b3,1002@0,4/hermon@1/ibport@2,ffff,ipib:ibd3
Chaque chemin d'accès commence par le chemin d'accès de périphérique indiqué dans la sortie ldm list-io -l. Les fonctions virtuelles telles que pciex15b3,1002@0,4 ont une adresse d'unité en deux parties où la valeur de la deuxième partie est égale à celle de la fonction virtuelle (VF3 dans ce cas) additionnée de un.
Le périphérique ibport possède une adresse d'unité en trois parties suivie de deux points puis du nom d'instance du périphérique IPoIB. La première partie de l'adresse d'unité correspond au numéro de port. La deuxième partie contient la valeur hexadécimale de la clé de partition (P-key). Notez que les valeurs P-key InfiniBand sont similaires aux VLAN pour Ethernet. La troisième partie est la chaîne ipib.
La sortie de la commande ls -l /dev/ibd3 montre que l'instance IPoIB ibd3 utilise le port 2 et la valeur de P-key ffff.