我需要将大型文件复制到我的 USB 3.0 外置驱动器。这是一个带外壳的 HDD。
问题是复制速度。复制开始时速度为 110+ MBps,但几秒后速度就降到 15-20mbps 并保持在这个速度。
我注意到,如果我复制单个文件,等待 15-30 秒,然后复制另一个文件,速度是 110+,但每当我尝试复制多个文件时,速度就会变慢。
经过一番研究,在一个来源上,它说,这是与复制缓冲区有关的事情。一开始,复制缓冲区是空的,所以复制速度相当快……但后来……由于复制缓冲区已满,速度变慢了……但那个来源没有提到如何清除/清空缓冲区 :(
有没有什么解决方法可以以相同的速度复制所有文件,或者在复制每个文件之前清空缓冲区?
以下是快速复制的截图:
以下是慢速复制的截图:
如果你观看下面的视频,会更容易理解这种行为:
答案1
您对缓冲区的工作原理感到困惑。缓冲区是内存中等待写入数据的等候室。它很有用,因为进行大量小的写入会非常低效。最好等待一小段时间,让更多写入排队,然后以单个批处理执行它们(“刷新”缓冲区)。因此,操作系统会缓冲所有写入以提高这些情况下的性能。缓冲区最终总会被刷新,无论是在填满时还是在一段时间后,但在此之前,写入尚未完成。(顺便说一句,这就是为什么您应该始终安全地移除 USB 设备而不是直接拔掉它们的原因 - 安全移除会刷新缓冲区。)
您观察到的是缓冲区最初以高速填满。这些数据尚未写入磁盘,因为磁盘比缓冲区慢,无法跟上。操作系统同时将缓冲区刷新到磁盘并缓冲更多要写入的数据,但缓冲区的大小是固定的,因此缓冲速度会减慢到操作系统可以通过刷新释放缓冲区空间的速度。此时,您正在观察磁盘的实际写入速度(可能存在瓶颈)。最后,所有内容都缓冲完毕,进度窗口消失,但操作系统实际上一直在后台刷新缓冲区,直到缓冲区为空。
“慢”速度是磁盘的真实速度。“快”速度只是缓冲区的速度,但数据实际上并没有以该速度写入磁盘 - 它只是排队等待缓慢写入。
答案2
你无法超越物理定律,所以除非你解决瓶颈,否则你将无法看到你所看到的初始速度。
你可以做一些事情来改善情况(但没有免费的灵丹妙药) -
定期对驱动器进行碎片整理。如果驱动器碎片化,则需要将文件分散并写入间隙中,这意味着需要重新定位磁盘。
确保驱动器是 USB3,端口是 USB3,并且驱动程序支持 USB3。
如果您有钱,请用 SSD 替换 HDD(并且您可以忽略碎片)。
还有其他软件可以限制速度。这会给你更稳定的速度,但速度会慢一点。
您可以通过更改文件系统来获得更好的性能。NTFS 可能会提高您的吞吐量。增加块大小也会加快速度。
答案3
以下是导致其速度变慢的几个核心因素(下面尽量不使用太多技术术语):
如果您并行读取多个文件,源磁盘(您从中复制的磁盘)的读取速度将受到影响,从而影响整体传输速率。
由于处理多个文件(与 IO 控制器一起),您的 CPU 将做更多工作,这会降低性能,从而影响您的传输速率
当您将多个文件发送到目标磁盘(外部磁盘)时,它必须写入多个文件,并且每个文件的块(磁盘上文件的内部分割)将分散在磁盘上并写入,磁盘必须为每个文件块来回旋转,从而导致写入数据的延迟。如果它是单个文件,并且您在磁盘中有连续的内存空间(如果幸运的话),那么这将非常快。即使您没有连续的内存位置,处理单个文件并仅旋转以存储该文件也将是磁盘的唯一工作(理论上) - 您的磁盘的 RPM 是这里的因素。