我怀疑这可能是因为Nagle算法或延迟的ACK.我尝试通过注册表禁用它们,但它似乎对Server 2008 R2没有影响.我知道我可以使用注册表调整MTU和其他一些值:DefaultSendWindow,DefaultReceiveWindow,GlobalMaxTcpWindowSize,TcpWindowSize.我假设我应该尝试将发送缓冲区设置为0并将缓冲区设置为较大的值,这是正确的策略吗?
我拥有最快的cpu,我禁用了网卡的中断审核,我还能做些什么来减少延迟?甚至100微秒对我来说也很重要.
该文档中有136页性能调整指南.
您可能还会从support.microsoft.com/kb/214397/en-us获得一些有趣的信息
您也可以尝试禁用Windows过滤平台,这通常不建议使用,但它可能有助于缩短I / O在操作系统中的运行时间.
您还拥有微软已经融入Windows的一系列技术,这些技术专门针对低延迟网络,但其中大部分都是2012年的具体改进,而不是2008 R2:
http://technet.microsoft.com/en-us/library/hh831415.aspx
Data Center Bridging
Data Center Transmission Control Protocol (DCTCP)
Kernel Mode Remote Direct Memory Access (kRDMA)
Network Interface Card (NIC) Teaming
NetworkDirect
Receive Segment Coalescing (RSC)
Receive Side Scaling (RSS)
Registered Input/Output (RIO) API Extensions
Transmission Control Protocol (TCP) Loopback Optimization
Low Latency Workloads Management and Operations
但是只有这么多,你才能用软件调整.只需将硬件升级到Infiniband/RDMA over Converged Ethernet,您就可以通过在Windows注册表中翻转位来大幅减少延迟,这是您永远无法实现的.
最后,这里有一些更直接的东西answering your question about delayed ACK.我不知道这是不是你的问题,但是:
Subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\Entry: TcpAckFrequency
Value Type: REG_DWORD,number Valid Range: 0-255 Default: 2
Description: Specifies the number of ACKs that will be outstanding
before the delayed ACK timer is ignored. Microsoft does not recommend
changing the default value without careful study of the environment.If you set the value to 1,every packet is acknowledged immediately because there is only one outstanding TCP ACK as a segment is just received. The value of 0 (zero) is not valid and is treated as the default,2. The only time the ACK number is 0 is when a segment is not received and the host is not going to acknowledge the data.