У меня есть два узла, подключенных к двухпортовому Mellanox Connext-X3 VPI HCA через коммутатор IB. Узлы представляют собой машины с двумя сокетами с процессорами Hasswell и двумя модулями DIMM по 16 ГБ на каждый разъем (всего 64 ГБ). Кажется, все работает отлично, за исключением показателей производительности, которые кажутся неправильными.
Когда я бегу ib_read_bw
ориентир:
server# ib_read_bw --report_gbits
client# ib_read_bw server --report_gbits
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 37.76 37.76 0.072016
---------------------------------------------------------------------------------------
Но когда я запускаю двухпортовый:
server# ib_read_bw --report_gbits -O
client# ib_read_bw server --report_gbits -O
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 2000 52.47 52.47 0.100073
---------------------------------------------------------------------------------------
Я получаю улучшение менее чем на 40% (неужели я ошибаюсь, ожидая увеличения пропускной способности одного порта примерно в 2 раза)?
Я не знаю, что может быть здесь узким местом и как его найти.
Другие конфигурации, которые могут быть полезны:
Я думаю, что узким местом здесь является соединение PCIe между ConnectX и хостом. ConnectX-3 имеет Подключение PCIe поколения 3 x8, который привязан к теоретическому максимуму 63,04 Гбит / с (согласно этот ответ), и это не включает накладные расходы (см. Вот).
У меня есть (2) системы, каждая с Mellanox FDR MCX354A-FCBT CX354A (ConnectX-3 VPI). Имея только (2) с использованием InfiniBand, у меня нет коммутатора, и я просто подключил их напрямую. Я использую двойные Xeon (Sandy Bridge).
У меня был кабель 40 Гбит / с, который мешал подключению FDR, и я получал:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 31.11 31.11 0.059329
Я получил кабель FDR (56 Гб / сек) и начал получать:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 49.58 49.58 0.094569
Мне всегда было интересно, как было бы, если бы я использовал оба порта, поэтому попробовал и получил:
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 2000 52.28 52.28 0.099717
Ну что ж. Я, наверное, не стану беспокоиться об этой выгоде.
Я определенно считаю, что haggai_e прав, потому что мои карты тоже PCI Express 3.0 x8. Думаю, чтобы быстрее видеть, нужны карты 3,0х16 или 4,0.
Еще одно преимущество двойных портов заключается в том, что они могут напрямую подключаться к разным сетям или машинам, и каждый из них получает полную скорость, если не передает данные постоянно.