为什么对同一文件和目标的后续复制操作会变慢(Windows)

为什么对同一文件和目标的后续复制操作会变慢(Windows)

我正在编写一个小测试套件来比较不同文件复制技术的速度。我想测试多种不同的方法,每个测试运行 5 次,每次测试之间间隔 500 毫秒。

结果每次都像这样:

Running Test: Windows Native Copy 1/5 (788)... ✓
Running Test: Windows Native Copy 2/5 (1034)... ✓
Running Test: Windows Native Copy 3/5 (2536)... ✓
Running Test: Windows Native Copy 4/5 (2559)... ✓
Running Test: Windows Native Copy 5/5 (3024)... ✓
Windows Native Copy Average: 1988 Best: 788

源文件夹和目标文件夹位于同一磁盘上。显然,每次测试的目标文件名都不同。此驱动器是 3 个 ssd 的 Raid 0 阵列。

我认为这是一种缓存问题,但如果是这样的话,我希望数字会变得更好!

答案1

有多个因素会导致 SSD 随着时间的推移而变慢:

  • SSD 由少量非常快速的非易失性(盐湖城)细胞和大多数速度较慢的常规细胞

    • SLC 单元负责前几个 GB 的快速写入速度(例如 500 MB/s)。当活动允许时,驱动器会将其 SLC 缓存卸载到常规单元
    • SLC 部件的尺寸因驱动器尺寸/制造商而异,通常占整个驱动器尺寸的百分比
    • 一旦 SLC 部分已满,您的驱动器将恢复到其“标准”单元,这些单元可能是 MLC(2 位)、TLC(3 位),甚至是 QLC(4 位,非常慢)。通常,这些非 SLC 单元无法维持您的接口吞吐量,例如 SATA 6 Gbit/s 的 500 MB/s。
    • -> 您的“实际”速度可能只有 150-300 Mbit/s。如果您拥有更高级的 SSD,尤其是 2 位/MLC SSD,其“较慢”单元可能足够快,可以维持更快的速度。
  • SSD 必须先清除单元,然后才能再次写入(垃圾收集)

    • 一旦驱动器变得更满,它必须开始回收已写入和部分写入的单元,方法是将其清除为空状态
    • 包含过时数据的单元将被彻底清除,而部分写入的单元则需要将其数据移动到其他单元,从而进一步降低驱动器的速度。这就是为什么有些驱动器宣传其垃圾收集/修剪能力的原因,这些能力会先发制人地尝试为新数据做好准备

SSD 的一个不为人知的事实是,同一系列的更大型号的 SSD(例如三星 860 Pro)采用更多芯片制造。这些芯片可以并行访问,速度比更小的同类产品更快。因此,更大的 SSD 通常更快。您可以比较不同尺寸的性能这里

相关内容