为什么我的网络文件复制速度会形成波浪?

Gri*_*cey 18 networking nas

随着升级到 Windows 10,我现在在复制文件时得到了这个漂亮的图表。

当我复制单个大文件时,速度总是采用这种合理一致的波形。是什么原因造成的?

连接是

My PC <- cable -> gigabit switch <- cable -> Netgear ReadyNAS
Run Code Online (Sandbox Code Playgroud)

文件正在通过 SMB 复制,此图显示了大约一分钟内的一个此类副本:

从 Windows 10 复制速度的图表

这里没有问题,我只是想了解事情是如何运作的。

Spi*_*iff 17

没有大量的进一步调查,很难权威地回答。感谢您使用时间尺度和协议更新您的问题。

它可以正常的TCP“扇贝”。TCP 尽可能快地运行,直到遇到数据包丢失。然后它稍微后退并再次上升。所以它一直“用头撞天花板”。这就是它如何在不加剧拥塞的情况下最大化可用带宽。我通常在 TCPTrace 图中查看 TCP 扇贝,与此图略有不同。我希望它在这种图表中看起来更像锯齿,但在这个图表中可能会有一些平滑。现在我仔细想想,TCP 扇贝的时间尺度比这张图似乎显示的要小得多。

也可能是您的远程文件系统协议 (SMB) 一次读取一个文件块,并且下降是一个块读取完成并且正在请求下一个块的地方。

  • @Gricey:不要评论:解决问题!! (4认同)

abs*_*ask 7

简短回答:写缓存

TL;DR:首先,与许多较小的文件相比,复制单个大文件时的开销要少得多。这意味着 PC 和 NAS 不会“浪费”很多时间寻找文件、更新文件表和文件系统元数据。这也意味着更高的吞吐量,这可能会揭示设置中的一些带宽瓶颈。

带宽图中的峰值和谷值似乎以相当规律的间隔出现,并且考虑到您正在复制单个大文件(最大带宽,最小开销),我会说您看到了缓冲/缓存的效果.

在我看来,您向 NAS 发送数据的速度可能比将数据写入磁盘的速度要快。多亏了写缓存/缓冲区,它仍然能够以更快的速度(图表的峰值)接收数据,但是如果不将数据提交到磁盘,就无法继续接收数据。

最终缓冲区将满载,必须写入磁盘。同时,NAS无法像以前那样快速接收数据,因为它没有地方存储数据(缓冲区已满,磁盘速度较慢)。这是您获得图形谷值的地方。

Windows 似乎正在平滑吞吐量图。使用更精确的图表(例如来自性能监视器),您实际上可以通过分析间隔和传输的字节来估计写入缓冲区的大小。

峰值和谷值不会以完全均匀的间隔出现的原因,可能是因为 PC、NAS 或两者在复制文件时正在执行“其他操作”。