Wie bekomme ich eine virtualisierte SR-IOV Infiniband-Schnittstelle?

9

Ich habe jetzt mehrere Tage damit verbracht und es geschafft, SR-IOV mit der Mellanox Infiniband-Karte unter Verwendung der neuesten Firmware zum Laufen zu bringen.

Die virtuellen Funktionen werden in Dom0 als angezeigt

06: 00.1 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion] 06: 00.2 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion] 06: 00.3 Netzwerkcontroller: Mellanox Technologies MT27500-Familie [Virtuelle ConnectX-3-Funktion ] 06: 00.4 Netzwerkcontroller: MT27500-Familie von Mellanox Technologies [Virtuelle ConnectX-3-Funktion]

Ich habe dann 06: 00.1 von Dom0 getrennt und es xen-pciback zugewiesen.

Ich habe dies an eine Xen-Testdomäne übergeben.

lspci im Test DomU zeigt:

00: 01.1 Netzwerkcontroller: MT27500-Familie von Mellanox Technologies [Virtuelle ConnectX-3-Funktion]

Ich habe die folgenden Module in DomU geladen

mlx4_ib
rdma_ucm
ib_umad
ib_uverbs
ib_ipoib

Die dmesg-Ausgabe für mlx4-Treiber zeigt:

[   11.956787] mlx4_core: Mellanox ConnectX core driver v1.1 (Dec, 2011)
[   11.956789] mlx4_core: Initializing 0000:00:01.1
[   11.956859] mlx4_core 0000:00:01.1: enabling device (0000 -> 0002)
[   11.957242] mlx4_core 0000:00:01.1: Xen PCI mapped GSI0 to IRQ30
[   11.957581] mlx4_core 0000:00:01.1: Detected virtual function - running in slave mode
[   11.957606] mlx4_core 0000:00:01.1: Sending reset
[   11.957699] mlx4_core 0000:00:01.1: Sending vhcr0
[   11.976090] mlx4_core 0000:00:01.1: HCA minimum page size:512
[   11.976672] mlx4_core 0000:00:01.1: Timestamping is not supported in slave mode.
[   12.068079] <mlx4_ib> mlx4_ib_add: mlx4_ib: Mellanox ConnectX InfiniBand driver v1.0 (April 4, 2008)
[   12.184072] mlx4_core 0000:00:01.1: mlx4_ib: multi-function enabled
[   12.184075] mlx4_core 0000:00:01.1: mlx4_ib: operating in qp1 tunnel mode

Ich habe sogar das ib0-Gerät angezeigt.

ib0       Link encap:UNSPEC  HWaddr 80-00-05-49-FE-80-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.10  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:2044  Metric:1
          RX packets:117303 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256 
          RX bytes:6576132 (6.5 MB)  TX bytes:0 (0.0 B)

Ich kann sogar lokal 10.10.10.10 pingen.

Diese Pings werden jedoch nicht auf dem Infiniband-Stoff gesendet.

Es scheint, weil die Verbindung unterbrochen ist. ibstat zeigt:

CA 'mlx4_0'
    CA type: MT4100
    Number of ports: 1
    Firmware version: 2.30.3000
    Hardware version: 0
    Node GUID: 0x001405005ef41f25
    System image GUID: 0x002590ffff175727
    Port 1:
        State: Down
        Physical state: LinkUp
        Rate: 10
        Base lid: 9
        LMC: 0
        SM lid: 1
        Capability mask: 0x02514868
        Port GUID: 0x0000000000000000

Wie bekomme ich es auf? Der DomU-Link ist UP, aber nicht der VF?


Und die Antwort finden Sie tatsächlich hier: Laut diesem Link: http://www.spinics.net/lists/linux-rdma/msg13307.html

Was brauche ich, damit der Port des Slave-VF aktiv wird? Ich verwende opensm 3.3.13 auf einer anderen Box. Ist das neu genug? (Benötigt SR-IOV SM-Unterstützung?)

Ja, wie Hal bemerkte, benötigen Sie mindestens opensm 3.3.14 ( http://marc.info/?l=linux-rdma&m=133819320432335&w=2 ), da dies die erste Version ist, die Alias-Guid et al. Unterstützt SRIOV, 3.3.15 ist ebenfalls erhältlich. Sie möchten also die 2. Version, die dies unterstützt. Grundsätzlich benötigen Sie einen IB-Link für die PPF und den Slave, um eine Alias-Guid für die SM zu registrieren. Wir (IL-Team) waren dienstags / mittwochs wegen eines Feiertags abwesend. Wir werden versuchen, Ihnen heute Abend weitere Einzelheiten mitzuteilen, und wenn nicht, bis morgen sicher.

Ich habe jetzt OpenSM aktualisiert und werde bald darüber berichten.


EDIT: OK, es funktioniert jetzt. Allerdings bekomme ich einen Log Blowout für opensm. Der OpenSM-Prozess schreibt Hunderte von Einträgen pro Sekunde des Formulars:

Sep 30 20:36:26 707784 [7DC1700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 707810 [7DC1700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708096 [8DC3700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708119 [8DC3700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708391 [FF5B0700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708421 [FF5B0700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708696 [3DB9700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708719 [3DB9700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID

Und die obigen Fehlermeldungen verschwanden, als ich neu startete und Dom0 mehr Speicher gab. Ich habe derzeit 2 GB mit ausgeschaltetem Autoballooning zugewiesen. Leider sind sie ohne ersichtlichen Grund zurück. So habe ich eine neue Frage gestellt, die das bezieht sich hier

Ich bin mir nicht sicher, warum es in dom0 funktioniert, aber in meinem Fall muss OpenSM auf dem Dom0 mit den VFs ausgeführt werden. Ich nehme an, das liegt daran, dass die auf Dom0 ausgeführte OpenSM-Instanz die VFs kennt und sie ankündigen kann, während ein Subnetzmanager auf einem anderen Knoten dies nicht tut. das ist meine Vermutung. Ich hoffe, dass der andere Xen-Knoten auch seine VFs aufnimmt. Das könnte zu einer anderen Frage werden. Im Moment funktioniert es mit einem einzelnen Xen-Knoten.

Matt
quelle
Was zeigt "sminfo"?
Danila Ladner
In Dom0. sminfo: sm deckel 1 sm guid 0x2590ffff1758d1, aktivitätszahl 40515 priorität 0 zustand 3 SMINFO_MASTER
Matt
Ok, ein Neustart und mehr Speicherplatz für Dom0 (2 GB) scheinen diese Fehler behoben zu haben. Ich bin mir nicht sicher, ob es mehr Speicher oder Neustart war, der es gelöst zu haben scheint.
Matt
Vielen Dank! das hat mich gerettet! Ich hatte einen SM auf dem Switch, aber das war nicht ausreichend. Nachdem ich die SM auf einem der Knoten gestartet habe (nachdem ich die ganze sysfs-Magie ausgeführt habe), habe ich jetzt IB in den VMs!
Jounathaen
1
@jounathaen - froh, dass jemand dies nützlich fand. Ich dachte damals, ich betrete Neuland. Gehen, wohin noch keiner gegangen war.
Matt

Antworten:

1

OpenSM muss auf dem Hypervisor-Host installiert und gestartet werden, um den Status anzuzeigen. Starten Sie dann OpenSM mit der Option: PORTS = "ALL".

Danila Ladner
quelle
1
OpenSM wird bereits auf einem anderen Host in der Fabric ausgeführt.
Matt
Weitere Informationen am Ende Ihrer ursprünglichen Frage hinzugefügt
Matt
In der Switchless-Konfiguration sollte OpenSM auf beiden Hosts ausgeführt werden.
Danila Ladner
Es gibt zwei Schalter. Obwohl ich nicht glaube, dass sie verwaltet werden
Matt
1
Warum Port GUID: 0x0000000000000000 ??? Hab es gerade gesehen. Es soll nicht 0 sein.
Danila Ladner