Windows 网络性能 (SMB/CIFS)

Windows 网络性能 (SMB/CIFS)

是否有注册表设置或其他设置可用于调整 Windows 网络(SMB/CIFS)性能?

我正在尝试获得大型文件复制操作的最大吞吐量,但任何设置都会很有趣。

迄今为止:

TCP 设置

  • 调整MTU
  • 启用 TCP 窗口缩放 (RFC 1323)。详细信息这里
  • 允许 5000 以上的端口。详细信息这里


其他因素

  • SMB2 比 SMB 具有性能优势。详细信息这里这里


一般资源

答案1

您的客户端和服务器的操作系统是什么?有一件事可能会有所不同,那就是将您的服务器更新为 Windows 2008,将您的客户端更新为 Vista。当您这样做时,您可以利用中小企业它不需要太多话,有更大的缓冲区,并且可以在单个请求中执行多项操作,从而降低对延迟的敏感度。

答案2

首先启用 TCP 窗口缩放 (RFC 1323)。下面是优秀的文章解释如何做以及它能做什么。

在此过程中,您可能需要调整 TCP 窗口大小。适当的大小是根据您特定的网络条件计算的。我对此没有太多经验,但您可以谷歌搜索各种计算器和/或教程。

答案3

来自“Windows Server 2008 性能调优指南”

服务器选项

将主机视为稳定存储

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

默认值为 0。此参数禁用对来自客户端的写入刷新命令的处理。如果此条目的值为 1,则电源保护服务器的服务器性能和客户端延迟可以改善。类似于 NetBench 文件服务器基准测试的工作负载受益于此行为。


异步信用

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

默认值为 512。此参数限制单个连接上允许的并发“异步”SMB 命令数。某些文件客户端(如 IIS 服务器)需要大量并发,尤其是文件更改通知请求。可以增加此条目的值以支持这些客户端。


Smb2CreditsMin 和 Smb2CreditsMax

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

默认值分别为 64 和 1024。这些参数允许服务器在指定范围内动态限制客户端操作并发性。某些客户端可能会通过更高的并发限制实现更高的吞吐量。一个例子是通过高带宽、高延迟链接进行文件复制。


附加关键工作线程

HKLM\System\CurrentControlSet\Control\Session Manager\Executive\(REG_DWORD)

默认值为 0,这意味着不会在默认数量上添加其他关键内核工作线程。此值会影响文件系统缓存用于预读和后写请求的线程数。提高此值可以允许存储子系统中有更多的排队 I/O,并可以提高 I/O 性能,尤其是在具有许多处理器和强大存储硬件的系统上。

客户

禁用带宽限制

HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\(REG_DWORD)

默认值为 0。此设置从 Windows Server 2008 SP2 开始可用。默认情况下,SMB 重定向器在某些情况下会限制高延迟网络连接的吞吐量,以避免与网络相关的超时。将此注册表值设置为 1 可禁用此限制,从而实现高延迟网络连接上的更高文件传输吞吐量。

答案4

如果您使用 SMB3 协议,您可以通过以下方式提高性能:a) 在服务器端添加多个网卡并启用 SMB3 多通道功能 b) 如果您在客户端添加多个网卡,SMB3 的接收端扩展功能将提高性能 c) 如果您有 RDMA 卡,您还可以使用 SMB Direct 选项。

相关内容