通过升级到Windows 10,我现在在复制文件时得到了这个漂亮的图表。
当我复制一个大文件时,速度总是采用这种合理一致的波形。是什么原因造成的?
连接是
My PC <- cable -> gigabit switch <- cable -> Netgear ReadyNAS
文件正在通过SMB复制,此图显示了大约一分钟的时间:
这里没有问题,我只想了解事情是如何进行的。
通过升级到Windows 10,我现在在复制文件时得到了这个漂亮的图表。
当我复制一个大文件时,速度总是采用这种合理一致的波形。是什么原因造成的?
连接是
My PC <- cable -> gigabit switch <- cable -> Netgear ReadyNAS
文件正在通过SMB复制,此图显示了大约一分钟的时间:
这里没有问题,我只想了解事情是如何进行的。
Answers:
简短答案:写缓存
TL; DR:首先,与许多较小的文件相比,复制单个较大的文件的开销要少得多。这意味着PC和NAS不会“浪费”大量时间来寻找文件,更新文件表和文件系统元数据。这也意味着更高的吞吐量,这很可能揭示设置中的某些带宽瓶颈。
带宽图中的峰值和谷值似乎以固定的间隔出现,并且考虑到您正在复制单个大文件(最大带宽,最小开销),我想说您正在看到缓冲/缓存的效果。
在我看来,您可能正在以比将数据写入磁盘更快的速度向NAS发送数据。多亏了写入缓存/缓冲区,它仍然能够以更快的速率(图的峰值)接收它,但是您不能不将数据提交到磁盘就继续接收数据。
最终,缓冲区将运行满,必须将其写入磁盘。同时,NAS无法像以前一样快地接收数据,因为它没有存储数据的位置(缓冲区已满,磁盘速度较慢)。这是您获得图形谷的地方。
Windows似乎正在使吞吐量图更平滑。使用更精确的图形(例如从Performance Monitor中获得),您可以通过分析间隔和传输的字节来实际估计写缓冲区的大小。
峰和谷之所以不出现完全相同的间隔,可能是因为PC,NAS或两者在复制文件时正在执行“其他操作”。
没有大量的进一步调查,很难做出权威的回答。感谢您使用时标和协议更新您的问题。
它可以正常使用TCP“扇贝”。TCP会尽可能快地运行,直到遇到数据包丢失为止。然后它后退一点,然后再次上升。因此,它一直“把头撞到天花板上”。这是如何在不使拥塞恶化的情况下最大化可用带宽的方法。我通常在TCPTrace图中查看TCP扇贝,这与该图有些不同。我希望它在这种图形中看起来更像锯齿状,但是在此图形中可能会进行一些平滑处理。现在,考虑到这一点,TCP扇贝的时间尺度将比该图看起来的要小得多。
也可能是您的远程文件系统协议(SMB)一次读取了一个文件块,而DIP则是一个文件块读取完成而正在请求下一个文件读取的位置。
我认为Microsoft在Windows 8 的进度栏中引入了此功能。
从左至右显示了以百分比进度和上下运动显示了在MB的传输速率/秒。
传输速率取决于媒体的速度(总线或网络),文件的数量和大小,文件系统和资源的可用性等。
同样在文件传输过程中,会发生许多元数据读/写操作。
您会看到一个相当一致的波动,因为此元数据读/写开销减少了,并且其他资源的使用率相同。偶尔的下降可能是数据包丢失,下一个块读取,资源轮询等事件。
为了进一步澄清,请进一步阅读