当我在同一台机器上运行TCP服务器和客户端时,我观察到的是客户端发送时间(即timestampT1,send(),timestampT2; timestampT2 - timestampT1)在尾部百分位数上显着高于我在另一台计算机上运行相同的服务器。
如果客户端在不同的盒子上服务器和客户端的情况下,如果客户端平均需要10微秒,而90-99百分位数的20-25微秒,100万次发送,则所有TCP参数,软件和机器规格均相等服务器和客户端在同一个盒子上的平均值为10微秒,在90-99百分位数为70-100微秒。
我尝试过使用interuupt隔离,套接字发送缓冲区大小调整和CPU固定而没有显着改进。这是RHEL 5.6。
对此有任何可能的解释?
答案 0 :(得分:2)
Heisenberg uncertainty principle。更具体地说,如果您在计算机上有两个程序,其中一个正在发送数据而另一个正在分析它 - 那么您要为CPU分配两个任务,就好像您的监控程序在另一台计算机上运行一样 - 您的发送方具有不必与其他任何人竞争的好处,总是会更快。
不要在同一台计算机上测试两个程序的网络吞吐量。