2
最新版本的Linux中更高的TCP延迟
在我的研究小组中,我们最近将机器上的操作系统从Red Hat 6.2升级到Debian 8.3,并观察到机器之间通过集成的Intel 1G NIC进行的TCP往返时间从大约110µs翻了一番,达到了220µs。 最初,我认为这是一个配置问题,因此我将所有sysctl配置(例如tcp_low_latency=1)从未升级的Red Hat计算机复制到了Debian计算机,但这并不能解决问题。接下来,我认为这可能是Linux发行问题,并在计算机上安装了Red Hat 7.2,但是往返时间保持在220µs左右。 最后,我发现问题可能出在Linux内核版本上,因为Debian 8.3和Red Hat 7.2都使用了内核3.x,而Red Hat 6.2使用了内核2.6。因此,要进行测试,我安装了带有Linux内核2.6和Bingo的Debian 6.0!时间再次很快达到110µs。 其他人是否在最新版本的Linux中也经历了这些更高的延迟,是否有已知的解决方法? 最低工作实例 下面是一个可用于基准测试延迟的C ++应用程序。它通过发送一条消息,等待响应,然后发送下一条消息来测量延迟。它对100字节的消息执行100,000次。因此,我们可以将客户端的执行时间除以100,000,以获得往返延迟。要使用此方法首先编译程序: g++ -o socketpingpong -O3 -std=c++0x Server.cpp 接下来,在主机上运行应用程序的服务器端版本(例如192.168.0.101)。我们指定IP以确保我们托管在众所周知的接口上。 socketpingpong 192.168.0.101 然后使用Unix实用程序time测量客户端的执行时间。 time socketpingpong 192.168.0.101 client 在具有相同硬件的两台Debian 8.3主机之间运行该实验可获得以下结果。 real 0m22.743s user 0m0.124s sys 0m1.992s Debian 6.0的结果是 real 0m11.448s user 0m0.716s sys …