我使用基准工具NetPIPE测量了两台Raspberry Pi Model B单板计算机之间以太网的延迟和吞吐量。基准测试测试两个进程之间的一系列消息大小。它只使用TCP作为端到端协议执行一次,使用Open MPI消息传递层库执行一次。
连接不是直接链接。两个设备之间有一个非托管的第2层交换机(10/100 Mbps以太网)。
MTU = 1500字节。
数据显示,使用MPI(也使用TCP作为传输层协议)是一种开销,会对吞吐量和延迟产生负面影响。使用MPI时,最佳测量吞吐量为65 Mbit / s。仅使用TCP时,吞吐量最高可达85 Mbit / s。
只要有效负载适合单个TCP段,与仅使用TCP相比,使用MPI时的延迟大约差十倍。指定以太网帧内最大有效负载的最大传输单元(MTU)在我们的集群中为1500字节。因此,指定TCP段内最大有效负载的最大段大小(MSS)为1460字节。
有些问题:
为什么MPI图表会出现更多与TCP图表相关的异常值?这可以在左下图中清楚地看到。这是因为操作系统的进程调度吗? TCP堆栈是linux内核的一部分,因此在内核空间中执行。 MPI库在用户空间中执行。
与TCP相比,使用MPI时为什么延长时间更长?可以在右上图中清楚地看到。
对于我错过的结果有没有进一步的解释?
更新
性能下降,特别是大约4 MB的有效负载大小可能是由Raspberry Pi节点的有限CPU资源引起的。我用htop
检查了CPU利用率,当运行MPI基准测试时,它几乎被完全利用了。
答案 0 :(得分:2)
大约512 KiB的性能下降归因于MPI协议:
请参阅:https://computing.llnl.gov/tutorials/mpi_performance/#EagerVsRendezvous 更改配置时的默认点取决于所选的MPI实现。还有一些配置变量可以改变它,在你的情况下,你应该稍后从渴望切换到rendevouz。 额外延迟会导致性能再次缓慢提高,直到1 MiB传输大小。后来的性能下降对我来说还不清楚。