3

我正在测量InfiniBand使用的性能iperf

它是服务器和客户端之间的一对一连接。

我测量了请求网络 I/O 的线程的带宽变化数。

(集群服务器有:

  • “用于 System x 的 Mellanox ConnectX-3 FDR VPI IB/E 适配器”和
  • “Infiniband 40 Gb 以太网/FDR InfiniBand”)

带宽:

 1 thread  : 1.34 GB/sec,
 2 threads : 1.55 GB/sec ~ 1.75 GB/sec,
 4 threads : 2.38 GB/sec,
 8 threads : 2.03 GB/sec,
16 threads : 2.00 GB/sec,
32 threads : 1.83 GB/sec.

正如您在上面看到的,带宽上升到 4 个线程,然后下降
你能给我一些想法来理解那里发生了什么吗?

此外,一旦多台机器向一台机器发送数据会发生什么?(争论)
也 可以InfiniBand处理吗?

4

2 回答 2

2

这里有很多事情在幕后进行。但 infiniband 的最大瓶颈之一是固件中的 QP 缓存。

固件有一个非常小的 QP 缓存(大约 16 - 32),具体取决于您使用的适配器。当活动 Qps 的数量超过此缓存时,使用 IB 的任何好处都会开始退化。据我所知,缓存未命中的性能损失是毫秒级的..是的,没错..毫秒..

还涉及许多其他缓存。

Ib 有多种不同的传输方式,其中 2 种最常见的是: 1. RC - 可靠连接 2. UD - 不可靠数据报

可靠连接模式有点像 TCP,因为它需要显式连接,并且是 2 个进程之间的点 2 点。每个进程分配一个类似于以太网世界中的套接字的 QP(队列对)。但是由于许多不同的原因,QP 比套接字更昂贵和更资源。

UD :不可靠数据报模式与 UDP 类似,不需要连接。唱歌的 UD Qp 可以与任意数量的远程 UD Qp 对话。

如果您的数据模型是一对多..即一台机器对多台机器,并且您需要一个具有巨大数据量的可靠连接,那么您就不走运了。IB 开始失去一些效力。

如果你有资源在上面构建一个可靠的层,那么使用 UD 来获得可伸缩性。

如果您的数据模型是一对多的,但许多远程进程驻留在同一台机器上,那么您可以使用 RDS(可靠数据报服务),它是一个使用 Infiniband 的 Socket 接口,并通过 2 台机器之间的单个 RC 连接多路复用多个连接. (RDS 有自己的一系列奇怪问题,但它是一个开始..)

第三个新的传输称为 XRC,它也减轻了一些可扩展性问题,但有其自身的警告。

于 2015-11-22T19:30:05.767 回答
1

由于 iperf 使用 TCP,因此无法通过本机 Infiniband 获得所有可能的带宽。

你的 CPU 有多少个内核?一旦线程数超过内核数,线程就会获得时间片以在相同的内核上串行运行,而不是并行运行。他们开始互相妨碍。

于 2018-01-15T23:16:27.570 回答