同时复制两个文件比一个接一个复制慢吗?

Cel*_*tas 15 performance hard-drive file-transfer

我的老板说同时复制两个文件比复制一个然后另一个需要更长的时间,因为硬盘驱动器必须不断在磁盘上的两个位置之间切换磁头。这是真的?在我看来,操作系统应该足够聪明来解决这个问题(即,它应该知道按顺序复制它们)。复制到连接到 USB 端口的驱动器时是否如此?

编辑:是否还有其他与文件系统相关的因素?例如,复制 1 个包含 10 个文件的目录与从整个磁盘复制 10 个文件有区别吗?我只想知道一种源介质和一种目标介质(不从多个驱动器读取)。

ern*_*nie 16

这里有很多因素可能会影响这一点。

  • 源驱动器 - 这是旋转磁盘还是 SSD?如果旋转磁盘,文件的布局可能会影响性能。由于这两个文件可能位于磁盘的不同部分,这将导致磁头搜索惩罚。正如您所说,如果您一次选择两个文件,并以这种方式启动复制,操作系统将按顺序处理副本。
  • 文件布局 - 文件碎片(在源和目标上)可能会影响非 SSD 驱动器的性能
  • 目标 - 如果您有两个写入流写入单个目标,那么您又回到了头部搜索问题(再次假设不是 SSD),并且您可能会大量交错文件。我曾经在一家制造高性能存储的公司工作,他们面临的一个大问题是他们可以读取或写入多少实时视频流(2k 视频需要大约 300 兆每秒)。交替写入会减慢复制过程,也会使读取文件变慢。当然,如果你的磁盘碎片化启动,你的文件无论如何都会被交错写入。
  • 单个/多个源/目标 - 根据您的文件是全部来自一个驱动器还是全部写入单个驱动器,磁头搜索问题可能或多或少
  • 文件大小 - 对于非常小的文件,头部搜索问题无关紧要,因为头部无论如何都需要寻找下一个文件(这意味着头部不会在文件之间来回移动,而是顺序读取文件)

至于操作系统是否足够聪明来解决这个问题,一般来说,它们是。也就是说,如果您同时复制多个文件(例如,考虑一次选择多个文件并拖放)。

当然,如果您启动两个cp命令,那么它将运行这两个命令,或者在 Windows 中如果您复制/粘贴单独的文件,并在屏幕上获得两个“复制”进度窗口,则不会发生优化。在这种情况下,您已经明确告诉操作系统您要同时运行两个副本,因此它不会决定一个副本比另一个更重要并开始将它们排队。


小智 12

我会让你回答这个问题。由于磁头在竞争操作之间来回寻找所产生的延迟,似乎在同一个磁盘上同时运行两个复制操作(尽管通过单独的复制操作开始)确实需要更长的时间。

但是,如果复制操作同时启动,则大多数现代操作系统都像您所说的那样智能,可以将传输一个接一个地排队,并且应该会产生更快的复制时间。

显然有许多应用程序可用于强制文件复制操作排队并按顺序执行,例如TeracopyFastCopy

然而,在多个物理卷上执行并发复制操作完全是另一回事。与通过替代协议传输文件一样。

关于复制到连接到 USB 端口的驱动器的问题,它在很大程度上取决于驱动器使用的内存类型和所使用的 USB 规范(当然是 USB 1.0 和 2.0 的一个值得注意的瓶颈),以及之前的提到了有关复制源卷的因素。

  • @Raghunandan - 可能不是操作系统而是文件系统(NTFS 与 EXT4)。 (3认同)
  • @Raghunandan PC-24000 DDR3 的带宽为 24 GB/s,它仍然不是现代 CPU 的限制,所以我不认为这真的是 CPU 的问题——即使 HDD 操作的效率比 RAM 操作低 100 倍,CPU 仍然可以处理至少 245 MB/s,这仍然超过最快的 SSD 带宽。 (2认同)