Двухпортовая проблема пропускной способности RDMA

У меня есть два узла, соединенные с двухпортовыми HCA Mellanox Connext-X3 VPI через коммутатор IB. Узлы представляют собой две машины с сокетами с процессорами Hasswell и 2 модулями 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-кратной пропускной способности одного порта)?

Я не знаю, что может быть здесь узким местом и как его найти.

Другие конфигурации, которые могут быть полезны:

  • Каждый сокет имеет 8 ядер, в целом каждая машина имеет 32 HT
  • Каждый модуль DIMM обеспечивает ~14 ГБ / с массы (для каждого сокета mem-bw: ~28 ГБ / с, всего ~56 ГБ / с)
  • Я использовал Mellanox Auto Tuning Utility для настройки прерываний.
  • Каналы IB - 4X 10,0 Гбит / с (FDR10) - каждая 40 Гбит / с
  • Я использую Mellanox OFED 4.3.

2 ответа

Решение

Я думаю, что узким местом здесь является канал PCIe между ConnectX и хостом. ConnectX-3 имеет соединение PCIe 3 x8 поколения, которое связано с теоретическим максимумом 63,04 Гбит / с (согласно этому ответу) и не включает служебные данные (см. Здесь).

У меня есть (2) системы, каждая с Mellanox FDR MCX354A-FCBT CX354A (ConnectX-3 VPI.) Только имея (2) с использованием InfiniBand, у меня нет переключателя, и я просто подключаю их напрямую. Я использую двойной Xeons (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.

Еще одним преимуществом двойных портов является то, что они могут подключаться напрямую к различным сетям или машинам, и каждый из них получает полную скорость, если они не передают постоянно.

Другие вопросы по тегам