Mic*_*lli 18 c# sockets linux networking tcp
与Windows和Linux上的命名管道和其他方法相比,在执行IPC时使用套接字的效率如何?
现在,我在4个需要通信的独立盒子上有4个独立的应用程序.两个是在Windows Server 2003 R2上运行的.NET 3.5应用程序.两个是Linux(Suse Linux 10).它们通常不受CPU限制.流量不是很大,但非常重要的是低延迟.我们现在正在使用套接字,nagle dis-abled和linux机器上安装的sles10慢启动补丁.
你认为我们可以通过简单地在相同的Windows机器上运行两个Windows应用程序和同一个Linux机器上的两个Linux应用程序并且不进行代码更改(即仍然使用套接字)来获得多少速度提升.
操作系统是否会意识到端点位于同一台机器上,并且知道不通过数据包进入以太网?他们的数据包是否仍然需要通过整个网络堆栈?如果我们花时间更改命名管道或内存映射文件或其他东西,速度会快多少?
Ser*_*kov 17
至于TCP性能,我最近在HP-UX服务器(8个Intel Itanium 2处理器1.5 GHz 6 MB,400 MT/s总线)和Red Hat Linux(2个IA-64 1,6 Ghz)上进行了这种测试. ).我使用iperf来测试TCP性能.我发现,与在两台不同的机器上运行iperf相比,当我在同一台机器上运行iperf时,TCP交换的速度快十倍以上.
您也可以尝试一下,因为您可能会感兴趣的选项 - 读取或写入的缓冲区长度,设置TCP无延迟等等.您还可以比较Windows机器上TCP交换的速度,因为有一个版本的Winddws的iperf.
这是一个更详细的比较:
1)在不同HP-UX服务器上运行的两个iperf应用程序之间的TCP交换速度,默认TCP窗口32K:387 Mbits/sec
2)在不同HP-UX服务器上运行的两个iperf应用程序之间的TCP交换速度,TCP窗口512K:640 Mbits/sec
3)在同一HP-UX服务器上运行的两个iperf应用程序之间的TCP交换速度,默认TCP窗口32K:5.60 Gbits/sec
4)在同一HP-UX服务器上运行的两个iperf应用程序之间的TCP交换速度,默认TCP窗口512K:5.70 Gbits/sec.
5)在同一Linux服务器上运行的两个iperf应用程序之间的TCP交换速度,TCP窗口512K:7.06 Gbits/sec
6)在HP-UX和Linux上运行的两个iperf应用程序之间的TCP交换速度,TCP窗口512K:699 Mbits/sec