InfiniBand 网络性能
InfiniBand network performance
我正在使用 iperf
.
测量 InfiniBand
的性能
这是服务器和客户端之间的一对一连接。
我测量了请求网络的线程的带宽变化数I/Os。
(集群服务器有:
- "Mellanox ConnectX-3 FDR VPI IB/E Adapter for System x" 和
- "Infiniband 40 Gb Ethernet / 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
也可以处理吗?
这里隐藏着很多事情。但 infiniband 最大的瓶颈之一是固件中的 QP 缓存。
固件具有非常小的 QP 缓存(数量级为 16 - 32),具体取决于您使用的适配器。当活动 Qps 的数量超过此缓存时,使用 IB 的任何好处都会开始退化。
据我所知,缓存未命中的性能损失约为 mili 秒..是的..毫秒..
还有许多其他缓存涉及。
Ib 有多种不同的传输方式,最常见的两种是:
1. RC——可靠连接
2. UD - 不可靠的数据报
Reliable Connected模式有点像TCP,需要显式连接,在2个进程之间是point 2 point。每个进程分配一个类似于以太网世界中的套接字的QP(队列对)。
但是由于许多不同的原因,QP 比套接字更昂贵和资源更多。
UD : 不可靠的数据报模式就像UDP一样不需要连接。单个 UD Qp 可以与任意数量的远程 UD Qp 对话。
如果您的数据模型是 1 对多 .. 即 1 台机器对多台机器,并且您需要与大量数据的可靠连接,那么您就不走运了。 IB 开始失去一些效力。
如果您有资源在上面构建一个可靠的层,然后使用 UD 来获得可伸缩性。
如果你的数据模型是一对多的,但是很多远程进程驻留在同一台机器上,那么你可以使用 RDS(可靠的数据报服务),它是一个使用 Infiniband 的套接字接口,并通过一个单一的多路复用多个连接两台机器之间的 RC 连接。 (RDS 有其自身的一系列奇怪问题,但它是一个开始..)
第三种新的传输方式称为 XRC,它也缓解了一些可扩展性问题,但有其自身的注意事项。
由于 iperf 使用 TCP,它不会获得原生 Infiniband 可能的所有带宽。
您的 CPU 有多少个内核?一旦线程数超过内核数,线程将在相同内核上串行获得 运行 的时间片,而不是并行地 运行ning。他们开始互相妨碍。
我正在使用 iperf
.
InfiniBand
的性能
这是服务器和客户端之间的一对一连接。
我测量了请求网络的线程的带宽变化数I/Os。
(集群服务器有:
- "Mellanox ConnectX-3 FDR VPI IB/E Adapter for System x" 和
- "Infiniband 40 Gb Ethernet / 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
也可以处理吗?
这里隐藏着很多事情。但 infiniband 最大的瓶颈之一是固件中的 QP 缓存。
固件具有非常小的 QP 缓存(数量级为 16 - 32),具体取决于您使用的适配器。当活动 Qps 的数量超过此缓存时,使用 IB 的任何好处都会开始退化。 据我所知,缓存未命中的性能损失约为 mili 秒..是的..毫秒..
还有许多其他缓存涉及。
Ib 有多种不同的传输方式,最常见的两种是: 1. RC——可靠连接 2. UD - 不可靠的数据报
Reliable Connected模式有点像TCP,需要显式连接,在2个进程之间是point 2 point。每个进程分配一个类似于以太网世界中的套接字的QP(队列对)。 但是由于许多不同的原因,QP 比套接字更昂贵和资源更多。
UD : 不可靠的数据报模式就像UDP一样不需要连接。单个 UD Qp 可以与任意数量的远程 UD Qp 对话。
如果您的数据模型是 1 对多 .. 即 1 台机器对多台机器,并且您需要与大量数据的可靠连接,那么您就不走运了。 IB 开始失去一些效力。
如果您有资源在上面构建一个可靠的层,然后使用 UD 来获得可伸缩性。
如果你的数据模型是一对多的,但是很多远程进程驻留在同一台机器上,那么你可以使用 RDS(可靠的数据报服务),它是一个使用 Infiniband 的套接字接口,并通过一个单一的多路复用多个连接两台机器之间的 RC 连接。 (RDS 有其自身的一系列奇怪问题,但它是一个开始..)
第三种新的传输方式称为 XRC,它也缓解了一些可扩展性问题,但有其自身的注意事项。
由于 iperf 使用 TCP,它不会获得原生 Infiniband 可能的所有带宽。
您的 CPU 有多少个内核?一旦线程数超过内核数,线程将在相同内核上串行获得 运行 的时间片,而不是并行地 运行ning。他们开始互相妨碍。