Windows 7 / SMB2网络拷贝性能较慢


2

排除棘手的性能问题,并想知道此行为是否正常/预期。

这似乎与SMB2有关,因为切换到SMB1可以解决问题。问题是这是否是预期的(即SMB2的设计),如果是,是否有解决方案/解决方法?

这是问题的简化版本:

1.通过交叉电缆连接两台Windows 7机器。

2.启动大型文件副本。

3.当正在进行复制时,启动一个小文件副本。第二个复制过程非常缓慢。

4.但是,如果您改为以“另一种”方式连接到另一台机器(即通过IP而不是FQDN,或通过Netbios名称而不是IP等),复制性能相对较好。

似乎大型副本是“瓶颈”原始连接 - 即只要暂停大型副本,小副本就会快速完成。

它并没有完全饱和带宽/堆栈(因为通过“不同连接”的第二个副本很快完成)。

如何重现问题:

我已经创建了一些演示这个的批处理文件(所有代码都列在问题的底部 - 你需要创建5个单独的批处理文件,名为go.bat,test.bat,copy1.bat,copy2.bat,copybig。蝙蝠):

建立:

  1. 在远程ComputerB上创建测试目录(c:\ test)
  2. 在本地ComputerA上创建测试目录(c:\ test)
  3. 将5个测试批处理文件放在ComputerA的c:\ test目录中
  4. 编辑go.bat并修改最后一行,如下所示:格式为“call test.bat 1 2 3”,其中:1 =通过主机名2的远程路径=本地文件夹3 =通过IP的远程路径(例如:call test.bat \\ ComputerB \ c $ \ test c:\ test \\ ComputerB'sIPAddress \ c $ \ test)

执行:

  1. 以管理员身份打开命令提示符(因此可以创建空的测试文件)并运行go.bat

这是批处理文件的作用:

- 检查ComputerA以查看是否存在三个文件(1GB,10MB-1,10MB-2)。如果文件不存在,则创建它们。

- 删除本地日志文件和ComputerB测试文件

- 将1GB文件从ComputerA复制到ComputerB

- 等了两秒钟

- 将10MB-1文件从ComputerA复制到ComputerB

- 将10MB-2文件从ComputerA复制到ComputerB(但使用其IP地址)

-Logs,带有时间戳,log.txt发生了什么

结果:

似乎始终如一的是:

- 大1GB文件副本与远程机器建立连接

- 小的10MB-1文件副本启动并最终完成,但实际上很慢,因为它与1GB拷贝连接“共享”现有连接

- 使用IP地址的小型10MB-2文件副本快速完成,因为它建立了“新的/单独的”连接

- 无论如何,如果你在大副本中点击暂停,小的10MB-1副本会很快完成。

批处理文件代码:

--go.bat--
cls
rem The format is test.bat 1 2 3, where:
rem 1 = destination path with hostname
rem 2 = local path
rem 3 = destination path with IP

call test.bat \\ComputerB\c$\test c:\test \\ComputerB'sIP\c$\test
--go.bat--


--test.bat--
if exist %2\1GB goto 1
fsutil file createnew 1GB 1048576000

:1
if exist %2\10MB-1 goto 2
fsutil file createnew 10MB-1 10485760

:2
if exist %2\10MB-2 goto 3
fsutil file createnew 10MB-2 10485760

:3

del /q /f log.txt
del /q /f %1\10MB-1
del /q /f %1\10MB-2
del /q /f %1\1GB

set var1=%1
set var2=%2
set var3=%3

echo Calling CopyBig.bat %time% >> log.txt
start CopyBig.bat %var1% %var2% %var3%

echo Pausing for two seconds %time% >> log.txt
ping 127.0.0.1 -n 3

echo Calling Copy1.bat %time% >> log.txt
start copy1.bat %var1% %var2% %var3%

echo Calling Copy2.bat %time% >> log.txt
start copy2.bat %var1% %var2% %var3%
--test.bat--


--copybig.bat--
echo Starting Big Robocopy %time% >> log.txt
robocopy %2 %1 1GB
echo Done Big Robocopy %time% >> log.txt
--copybig.bat--


--copy1.bat--
echo Starting 1st Robocopy %time% >> log.txt
robocopy %2 %1 10MB-1
echo Done 1st Robocopy %time% >> log.txt
--copy1.bat--


--copy2.bat--
echo Starting 2nd Robocopy %time% >> log.txt
robocopy %2 %3 10MB-2
echo Done 2nd Robocopy %time% >> log.txt
--copy2.bat--

通常的初步问题:根据Windows Update 制造商的网站,您是否确保所有网络驱动程序都是最新的,并且Windows已完全修补?
harrymc 2014年

SMB2有一些错误问题,因为我在使用SMB2时遇到了类似的问题。
特拉维斯2014年

好问题@harrymc - 是的,尝试更新网卡驱动程序,机器修补得很好。
Craig H

你试过原版xcopy(用于比较)吗?另外,你试过玩Interpacket Gap吗?请看这里有一篇有趣的文章,可能会有所启发
rishimaharaj 2014年

与copy,xcopy或Windows资源管理器相同的问题。尝试了很多调整和调整,没有明显的改进。百思不得其解。
Craig H

Answers:


0

注意:我没有尝试过批处理文件,而是查看了Robocopy如何工作的详细信息。

根据Mark Minasi的博客,设置IPG标志将对robocopy使用多少带宽产生巨大影响。他说:

在块之间等待最后,使用/ ipg选项,Robocopy可以减少工具可以消耗的网络带宽量。与所有复制例程一样,Robocopy以64KB块的形式复制数据。通常,Robocopy只发送一个接一个的块,块之间没有暂停。但是,添加/ ipg:n选项会让Robocopy在块之间等待n毫秒。但是你用什么价值?那么,64KB大约是五十万位。因此,在100Mb以太网连接上,64KB文件拷贝大约需要1/200秒--5毫秒。

五毫秒是理论上最好的情况。在具有正常软件开销的繁忙的实际网络中,您可能期望不超过该速度的20%,使实际时间可能为25毫秒。那么,假设Robocopy每25毫秒可以有效地传输一个块,设置/ ipg:25会使Robocopy的网络使用量减少50%。设置/ ipg:50会将Robocopy的网络使用率降低66%,而设置/ ipg:75会将网络使用率降低75%的无阻碍速度。你明白了。

您可以将copybig.bat更改为:

--copybig.bat--
echo Starting Big Robocopy %time% >> log.txt
robocopy /IPG:750 %2 %1 1GB 
echo Done Big Robocopy %time% >> log.txt
--copybig.bat--

我选择了750,因为它应该大致限制为1Mbps。您可以使用Robocopy IPG延迟计算器来确定哪种延迟最适合您的设置。

另一个尝试的选项是/mt标志(用于多线程) - 但要小心,因为这不起作用/ipg


谢谢 - 不幸的是,这不仅仅是一个robocopy问题。我用它以可重复的,可编写脚本的方式演示事物。如果使用Windows资源管理器复制大文件然后尝试从同一共享中打开一个小文件(即直到完成大型复制,其他SMB连接非常慢),也会出现同样的问题。在这一点上,它看起来像一个基本的Windows 7 / SMB2问题 - 问题似乎在新的W7版本上。很难相信这是“正常”的行为(也就是说我会期待会有更多的人抱怨这个)但也许这就是它的方式!
Craig H

0

我知道这看起来像是一个警察; 但是,既然你说如果输入IP那么副本就可以了,因此在运行这个批处理文件的计算机上你可以尝试修改HOSTS文件(C:\ Windows \ System32 \ HOSTS)并添加x.x.x.x hostname一些您正在尝试的主持人。


谢谢 - 我现在尝试一下,但不幸的是主机解决方案无法解决问题。根本问题不是名称解析或连接方式。无论您使用哪种方法连接到目的地(即通过IP或FQDN或Netbios名称),以相同方式进行的任何其他连接都会很慢 - 并且任何其他连接方式都会很快。
Craig H
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.