消除TCP连接中的延迟峰值

时间:2017-05-04 13:27:09

标签: linux networking tcp low-latency

我有一个Linux网络应用程序,我正在尝试优化低延迟。此应用程序使用UDP并生成TCP流量。我已经设置了网络分析并编写了一些脚本,这些脚本将UDP流量与应用程序的TCP响应相关联,以计算端到端延迟。我还在应用程序中设置了跟踪,因此我可以测量内部延迟。我发现捕获设备测量的典型端到端延迟大约为20us,但在大约5%的情况下,延迟可以达到2000us甚至更高。将内部日志与捕获设备日志相关联表明此峰值源自内核TCP传输。

有关如何更好地了解正在发生的事情以及希望如何修复它的任何建议?我正在一台4 HW核心机器上运行,其中三个核心专用于应用程序,剩下的一个核心用于操作系统。

更新:对PCAP文件的进一步调查表明,具有高延迟的TCP消息总是紧接着来自作为TCP数据目标的系统的ACK(即被测试机器正在向其发送的系统) TCP数据)。这让我相信被测系统正试图将数据保持在最低限度,这就是它故意延迟响应的原因。虽然没有能够调整这种行为。

提前致谢

1 个答案:

答案 0 :(得分:0)

我很确定现在对您来说为时已晚,但将来可能会对某人有所帮助。我几乎可以确定您没有通过设置 TCP_NOWAIT 套接字选项来关闭 Naggle 算法。