【问题标题】:Utility to benchmark udp and tcp performance for large data transfer用于对大数据传输的 udp 和 tcp 性能进行基准测试的实用程序
【发布时间】:2011-09-07 05:24:30
【问题描述】:

我提到了关于大文件传输的可靠 UDP 与 TCP 的不同线程。但是,在决定选择 UDP 而不是 TCP(并向 UDP 添加可靠性机制)之前,我想对 UDP 和 TCP 的性能进行基准测试。 linux 或 windows 中是否有任何实用程序可以给我这个性能基准?

我发现Iperf 就是这样一种实用程序。但是当我在两台 linux 机器上使用 Iperf 同时使用 udp 和 tcp 发送数据时,我发现 TCP 对 10MB 数据的性能优于 UDP。这让我很惊讶,因为众所周知 UDP 的性能优于 TCP。

我的问题是:

  1. UDP 是否总是比 TCP 性能更好?或者有没有具体的 UDP优于TCP的场景。

  2. 有没有发表的 验证这一事实的基准?

  3. 是否有任何标准工具来衡量特定网络上的 tcp 和 udp 性能?

提前致谢

【问题讨论】:

  • 您正在调查什么规模的性能,10GigE、40GigE+?

标签: networking tcp udp


【解决方案1】:

差异有两个方面,概念上和实践上。许多有关性能的文档都是从 90 年代开始的,当时 CPU 功率明显快于网络速度,并且网络适配器非常基础。

考虑一下,由于开销较小,UDP 在技术上可以更快,但现代硬件的速度还不足以使数据包大小最小的 1 GigE 通道饱和。从校验和到分段再到完全卸载,任何卡都可以大大加速 TCP。

当您需要多播时使用 UDP,即分配给多个接收者而不是多个接收者。当 TCP 窗口和拥塞控制未优化时使用 UDP,例如高延迟、高带宽 WAN 链接:例如,请参阅 UDT 和 WAN 加速器。

查找 10 GigE NIC 的任何性能文档。基本问题是硬件速度不足以使 NIC 饱和,因此许多供应商提供了 TCP/IP 堆栈总卸载。还要考虑文件服务器,例如 NetApp 等,如果使用软件,您可能会看到将 MTU 调整为更大的大小以减少 CPU 开销。这在低端设备中很流行,例如 ReadyNAS、Synology 等的 SOHO NAS 设备。对于高端设备,如果您卸载整个堆栈,那么如果硬件有能力,则可以使用正常的以太网 MTU 大小实现更好的延迟,并且 Jumbograms 变为过时了。

iperf 几乎是用于网络测试的唯一 goto 工具,但在 Windows 平台上它并不总是最好的。你需要看看微软自己的工具NTttcp:

http://msdn.microsoft.com/en-us/windows/hardware/gg463264.aspx

请注意,这些工具更多的是用于测试网络而不是应用程序性能。微软的工具走极端,基本上是一个大的内存锁定缓冲区排队等待 NIC 尽可能快地发送而没有交互性。该工具还包括一个预热会话,以确保在测试期间不需要 malloc。

【讨论】:

  • 感谢史蒂夫的回复。有一些应用程序级别的开源实现,例如用于大型和可靠文件传输的 UDT,它们依赖于 udp 更快的相同原理。我想说服自己,在我的网络中,UDP 比 TCP 快 X 倍。如果它可以带来很大的性能优势,那么值得尝试一些可靠的 UDP 实现。
  • @atv 我在回答中提到了 UDT,它在用于高延迟高带宽链接的 WAN 加速器中很流行。
【解决方案2】:
  1. UDP 并不总是比 TCP 快。有许多 TCP 性能转换,包括 RSS/vRSS。例如,Linux-on-HyperV 上的 TCP 可以达到 30Gbps,而 Linux-on-Azure 上的 TCP 可以达到 20G+。 //我认为对于Windows VM,类似;在 XEN、KVM、TCP 等其他 virt 平台上也做得更好。

  2. 有很多工具可以测量:iPerf、ntttcp (Windows)、ntttcp-for-Linux、netperf 等:

    iPerf3:https://github.com/esnet/iperf

    Windows NTTTCP:https://gallery.technet.microsoft.com/NTttcp-Version-528-Now-f8b12769

    ntttcp-for-Linux:https://github.com/Microsoft/ntttcp-for-linux

    Netperf:http://www.netperf.org/netperf/

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 2011-02-07
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多