同一台机器上的套接字适用于Windows和Linux

与Windows和Linux上的命名pipe道和其他方法相比,在执行IPC时使用套接字的效率如何?

现在,我有4个独立的应用程序在4个独立的盒子需要沟通。 两个是在Windows Server 2003 R2上运行的.NET 3.5应用程序。 两个是Linux(Suse Linux 10)。 它们通常不受CPU限制。 stream量不是那么大,但是非常重要的是低延迟。 我们现在使用套接字,在Linux机器上安装了sles10慢启动补丁。

只要简单地在同一个窗口框中运行两个Windows应用程序,并在同一个Linux机器上运行两个Linux应用程序并且不进行代码更改(即仍然使用套接字),您认为我们可以获得多less速度提升。

请问操作系统是否意识到端点在同一台机器上,并且知道不要使用这些数据包出去以太网? 他们的数据包是否仍然需要通过整个networking栈? 如果我们花时间更改命名pipe道或内存映射文件或其他东西,速度会快多less?

Solutions Collecting From Web of "同一台机器上的套接字适用于Windows和Linux"

至于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不延迟等等。 您也可以比较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

本地命名管道将以更快的速度运行在内核模式下。