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

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

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

当我复制单个大文件时,速度总是呈现出这种相当一致的波形。这是什么原因造成的?

连接是

My PC <- cable -> gigabit switch <- cable -> Netgear ReadyNAS

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

Windows 10 的复制速度图表

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

答案1

简短回答:写入缓存

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

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

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

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

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

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

答案2

如果不进行大量进一步调查,很难给出权威的答案。感谢您更新您的问题,并提供时间表和协议。

它可能使正常的 TCP“扇贝”现象发生。TCP 会尽可能快地运行,直到出现数据包丢失。然后它会稍微减速,然后再次加速。因此,它一直在“撞向天花板”。这就是它如何在不加剧拥塞的情况下最大限度地利用可用带宽的方法。我通常在 TCPTrace 图中查看 TCP 扇贝现象,这与此图略有不同。我预计它在这种图中看起来会更像锯齿状,但此图中可能会有一些平滑。现在我想起来,TCP 扇贝现象的时间尺度要比此图显示的要小得多。

也可能是您的远程文件系统协议(SMB)每次读取一个块的文件,而下降则发生在一个块读取完成并且正在请求下一个块的时候。

答案3

我认为微软介绍了这个进度条中的功能在 Windows 8 中。

左到右显示百分比进展&上-下运动表明传输速率(MB/s)

传输速率由媒体(总线或网络)速度、文件数量和大小、文件系统和资源可用性等决定......

另外,在文件传输过程中也会发生大量元数据的读/写。

由于元数据读/写开销减少且其他资源以相同速率使用,因此您会看到相当一致的波动。偶尔的下降可能是数据包丢失、下一个块读取、资源轮询等事件。

如需进一步了解,请参阅

相关内容