首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要超低的延迟,如何最小化?

需要超低的延迟,如何最小化?
EN

Server Fault用户
提问于 2014-12-05 23:53:34
回答 2查看 3.8K关注 0票数 3

我有几台Windows 2008 R2机器,它们充当客户端并连接到同一数据中心中的另一台服务器。我没有进入服务器的权限。我需要尽量减少客户机和服务器之间的延迟。它们通过Macromedia Flash (Winsockets)进行通信,并交换非常小的命令(20-30字节)。通常的延迟时间是200-400微秒,但根据我的经验和一些测试(使用Monitor完成),在Flash应用程序中,响应时间通常至少是几毫秒,这不是软件造成的。

我怀疑这可能是因为Nagle算法或延迟ACK。我尝试通过注册表禁用这两者,但它似乎对服务器2008 R2没有影响。我知道我可以用注册表来调整MTU和其他一些值: DefaultSendWindow、DefaultReceiveWindow、GlobalMaxTcpWindowSize、TcpWindowSize。我假设我应该尝试将发送缓冲区设置为0,将接收缓冲区设置为大值,这是正确的策略吗?

我有最快的CPU,我禁用了网卡的中断调节,我还能做些什么来减少延迟呢?即使100微秒对我来说也很重要。

EN

回答 2

Server Fault用户

发布于 2014-12-06 01:09:28

下面是微软的Windows 2008 R2性能优化指南文档:

http://download.microsoft.com/download/6/B/2/6B2EBD3A-302E-4553-AC00-9885BBF31E21/Perf-tun-srv-R2.docx

该文档中有136页的性能调优准则。

您还可以从support.microsoft.com/kb/214397/en-us获得一些有趣的信息。

您还可以尝试禁用Windows过滤平台,这通常不被推荐,但它可能有助于缩短I/O在操作系统中的行程。

此外,微软还推出了一系列专门面向低延迟网络的技术,但这些技术大多是2012年的具体改进,而不是2008年的R2:

http://technet.microsoft.com/en-us/library/hh831415.aspx

  1. 数据中心桥接
  2. 数据中心传输控制协议(DCTCP)
  3. 内核模式远程直接内存访问(kRDMA)
  4. 网络接口卡(NIC)合作
  5. NetworkDirect
  6. 接收段合并(RSC)
  7. 接收侧缩放(RSS)
  8. 注册输入/输出(RIO) API扩展
  9. 传输控制协议(TCP)回溯优化
  10. 低延迟工作负载管理和操作

但只有这么多,你才能做软件调整。只需将您的硬件升级到基于汇聚以太网的Infiniband/RDMA,就可以大大减少延迟,而通过翻转Windows注册表中的位,这些延迟是无法实现的。

最后,这里有一些更直接的回答你关于延迟ACK的问题。我不知道这是不是你的问题,但是:

子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\条目: TcpAckFrequency值类型: REG_DWORD,数字有效范围: 0-255默认值:2 描述:指定在忽略延迟的计时器之前未执行的ACK数。如果不仔细研究环境,Microsoft不建议更改默认值。如果将值设置为1,则会立即确认每个数据包,因为仅接收到一个未处理的TCP ACK作为段。0(0)的值无效,并被视为默认值2。ACK编号为0的唯一时间是当未接收到一个段时,并且主机不会确认数据。

票数 4
EN

Server Fault用户

发布于 2014-12-05 23:59:01

从禁用大型发送卸载开始,网络堆栈等待发送数据包来填充缓冲区,并选择关闭它发送更多小数据包,但有助于加快应用程序的速度。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/649575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档