Am 10 servere cu două procesoare fiecare și un Mellanox 100G Infiniband NIC per procesor. Fiecare NIC este conectat la un singur switch Mellanox 36 porturi 100G IB.
Aplicația mea RDMA rulează ca un proces pentru fiecare nod NUMA și se leagă de NIC-ul local pentru a evita traficul între CPU. Fiecare nod/proces trebuie să se conecteze la orice alt nod folosind modul RC.
Problema cu care am întâlnit este că se pare că rutarea implicită OpenSM mă obligă să folosesc o anumită NIC pentru a ajunge la un anumit nod țintă. Deci, ar trebui să folosesc ambele NIC-uri de la ambele noduri NUMA pentru a ajunge la toate celelalte noduri. Asta înseamnă că aș avea nevoie și de două PD-uri, trebuind să înregistrez toată memoria de două ori.
Există vreo modalitate de a permite unei singure NIC să se poată conecta la orice alt NIC/port din rețea?
În esență, aș dori să-l fac pe OpenSM să creadă că fiecare NIC este pe propriul său server, de exemplu. pretinzând că nu este posibil niciun trafic QPI.
Vedea: https://docs.mellanox.com/display/MLNXOFEDv461000/OpenSM
Odată ce există matrice MinHop, fiecare comutator este vizitat și pentru fiecare LID țintă se ia o decizie cu privire la ce port ar trebui utilizat pentru a ajunge la acel LID.
Cod relevant: https://github.com/linux-rdma/opensm/blob/844ab3b7edaad983449b5d3a4a773088b8daa299/opensm/osm_ucast_mgr.c#L201