关闭nagel算法
原文出处
http://www.xtremesystems.org/forums/showthread.php?237964-Gaming-Tweak!!!!-disable-nagle-s-algorithm

游戏调整 —— 关闭 nagel 算法

下面的设置可以调整或禁用 nagel 算法。禁用 nagel 算法以后, 允许很小的包没有延迟立即发送。建议对某些游戏关闭 nagel 算法, 这样做对文件传输/吞吐量有负面影响。默认状态( 开启nagel )为了提高性能, 会把几个小数据包合并一起, 为了有效传输更大的数据包。虽然这提高了整体性能,并降低了TCP/ IP开销, 但可能会短暂延迟较小的数据包的传输。切记禁用 Nagle 算法可能对文件传输有一些负面影响, 只能帮助某些游戏减少延迟, 为了实现这个调整,在注册表编辑器(开始>运行> REGEDIT)找到:

此设置配置最大数量的ACKs ( Windows XP/2003/Vista/2008 )
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}
将有多个网卡接口有列出,例如: {1660430C-B14A-4AC2-8F83-B653E83E8297}. 找到与你 IP 地址相同的地址, 创建一个新的 DWORD 值:
TcpAckFrequency=1 (DWORD value, 1=disable, 2=default, 2-n=send ACKs if outstanding ACKs before timed interval. Setting not present by default).

对于游戏性能,推荐的是1(禁用)。对于纯吞吐量和数据流,您可以尝试值超过2。如果您尝试较大的值,只要确保 TcpAckFrequency* MTU 小于 RWIN 就行, since the sender may stop sending data if RWIN fills witout acknowledgement.

此外,找到下面的键(win7 下需要 开始→控制面板→程序→程序和功能→打开或关闭windows功能, 开启 Microsoft Message Queue 才能看见 Parameters):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters
添加一个新的DWORD值:
TCPNODELAY=1(DWORD值为0启T用Nagle算法,1禁用,默认情况下不存在)

要配置的ACK间隔超时(只有启用 Nagel 的时候才有效),找到(新增)以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{NIC-id}

TcpDelAckTicks=0 (DWORD value, default=2, 0=disable nagling, 1-6=100-600 ms).
你可以设置为 1 来将 NAGLE 的延迟时间从默认的 200ms 缩减进行缩减


附注:
据悉,上述游戏调整(禁用Nagle算法)可以减少WOW(魔兽世界)延迟了近一半!
XP/2003需要 SP2 补丁(MS KB815230)
Vista需要 SP1 补丁(MS KB935458)



阅读更多
个人分类: 网络编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

关闭nagel算法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭