Bagaimana cara mendapatkan antarmuka SR-IOV Infiniband tervirtualisasi?

9

Saya telah menghabiskan beberapa hari untuk hal ini sekarang dan saya berhasil membuat SR-IOV bekerja dengan kartu Mellanox Infiniband menggunakan firmware terbaru.

Fungsi Virtual muncul di Dom0 sebagai

06: 00.1 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3] 06: 00.2 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3] 06: 00.3 Pengontrol jaringan: Mellanox Technologies MT27500 Family [ConnectX-3 Fungsi Virtual ] 06: 00.4 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3]

Saya kemudian terlepas 06: 00.1 dari Dom0 dan menugaskannya ke xen-pciback.

Saya telah melewati ini ke domain uji Xen.

lspci di dalam DomU tes menunjukkan:

00: 01.1 Pengontrol jaringan: Mellanox Technologies MT27500 Family [Fungsi Virtual ConnectX-3]

Saya memiliki modul-modul berikut dimuat di DomU

mlx4_ib
rdma_ucm
ib_umad
ib_uverbs
ib_ipoib

Output dmesg untuk driver mlx4 menunjukkan:

[   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

Saya bahkan punya perangkat ib0 yang muncul.

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)

Saya bahkan dapat melakukan ping lokal 10.10.10.10.

Namun, ping itu tidak dikirim pada kain infiniband.

Tampaknya karena tautannya sedang down. ibstat menunjukkan:

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

Bagaimana saya mendapatkannya? tautan domU adalah UP tetapi bukan yang VF?


Dan jawabannya sebenarnya ditemukan di sini: Menurut tautan ini: http://www.spinics.net/lists/linux-rdma/msg13307.html

Apa yang saya perlukan agar port budak VF menjadi aktif? Saya menjalankan opensm 3.3.13 pada kotak yang berbeda, apakah itu cukup baru? (apakah SR-IOV memerlukan dukungan SM?)

Ya, seperti yang dicatat Hal, setidaknya Anda memerlukan opensm 3.3.14 ( http://marc.info/?l=linux-rdma&m=133819320432335&w=2 ) karena ini adalah versi pertama yang mendukung barang-barang alias-guid et al yang diperlukan untuk SRIOV, 3.3.15 juga keluar sekarang, jadi Anda ingin versi ke-2 yang mendukung ini ... pada dasarnya Anda memerlukan tautan IB untuk PPF dan slave untuk mendapatkan pemandu alias terdaftar untuknya @ SM. Kami (tim IL) tidak aktif pada hari Selasa / Rabu pada hari libur, akan mencoba memberi Anda detail lebih lanjut malam ini dan jika tidak, besok, tentu saja.

Saya sekarang telah meningkatkan OpenSM dan akan segera melaporkan kembali.


EDIT: OK, sekarang sudah berfungsi. Namun saya mendapatkan semburan log untuk openm. Proses OpenSM menulis ratusan entri per detik dari formulir:

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

Dan pesan kesalahan di atas hilang ketika saya reboot dan memberi Dom0 lebih banyak memori. Saat ini saya memiliki 2GB yang dialokasikan untuk itu dengan menonaktifkan autoballooning. Sayangnya, mereka kembali tanpa alasan yang jelas. Jadi saya telah mengajukan pertanyaan baru yang berhubungan dengan itu di sini

Saya tidak begitu yakin mengapa ia bekerja di dom0 tetapi dalam kasus saya, saya harus menjalankan OpenSM di Dom0 yang memiliki VF. Saya kira ini karena contoh OpenSM yang berjalan di Dom0 tahu tentang VF dan dapat mengiklankannya sementara manajer subnet pada node lain tidak? itu dugaanku. Saya berharap node xen lainnya akan mengambil itu VF juga. Itu mungkin akhirnya menjadi pertanyaan lain. Untuk saat ini ia bekerja dengan satu simpul Xen.

Mat
sumber
Apa yang ditampilkan "sminfo"?
Danila Ladner
Di Dom0. sminfo: sm lid 1 sm guid 0x2590ffff1758d1, penghitungan aktivitas 40515 prioritas 0 status 3 SMINFO_MASTER
Matt
Ok, me-reboot dan memberikan Dom0 lebih banyak memori (2GB) tampaknya telah membuat kesalahan itu hilang. Saya tidak yakin apakah itu lebih banyak memori atau reboot yang tampaknya telah menyelesaikannya.
Mat
Terima kasih banyak! ini menyelamatkan saya! Saya memiliki SM yang berjalan di sakelar, tetapi ini tidak cukup. Setelah saya memulai SM pada salah satu node (setelah melakukan seluruh sihir sysfs) saya sekarang memiliki IB di VM!
Jounathaen
1
@jounathaen - senang ada yang menganggap ini berguna. Saya pikir pada saat itu saya sedang membuka jalan baru. Pergi ke tempat yang belum pernah dikunjungi sebelumnya.
Matt

Jawaban:

1

OpenSM harus diinstal dan mulai pada host hypervisor untuk membawa negara. Kemudian mulai jalankan OpenSM dengan opsi: PORTS = "ALL".

Danila Ladner
sumber
1
OpenSM sudah berjalan di host lain di fabric.
Mat
Info lebih lanjut ditambahkan ke bagian bawah pertanyaan asli Anda
Matt
Dalam konfigurasi switchless, OpenSM harus dijalankan pada kedua host.
Danila Ladner
Ada dua sakelar. Meskipun saya tidak berpikir mereka berhasil
Matt
1
Mengapa Port GUID: 0x0000000000000000 ??? Baru saja melihatnya. Seharusnya tidak menjadi 0.
Danila Ladner