NTFS 压缩如何影响 2021 硬件上 Windows 10 中 nvme SSD 的性能?

Chr*_*tti 5 compression ntfs ssd windows-10 nvme

我在笔记本电脑中设置了文件历史记录备份 nvme ssd,并希望分享启用和禁用 NTFS 文件和文件夹压缩的快速 CrystalDiskMark 基准测试的结果。请参阅下面的答案。

Chr*_*tti 6

硬件

\n

这是 2021 年推出的一款散热良好的笔记本电脑。

\n
Processor       AMD Ryzen 7 4800HS with Radeon Graphics (2.90 GHz)\nInstalled RAM   16.0 GB (15.4 GB usable)\nTested SSD      Samsung SSD 970 EVO Plus 500GB\nSystem type     64-bit operating system, x64-based processor\nEdition         Windows 10 Home\nVersion         22H2\nInstalled on    \xe2\x80\x8e7/\xe2\x80\x8e23/\xe2\x80\x8e2021\nOS build        19045.2965\nExperience      Windows Feature Experience Pack 1000.19041.1000.0\n
Run Code Online (Sandbox Code Playgroud)\n

场景 1:压缩关闭

\n
    \n
  1. 快速格式化为 NTFS,具有默认分配大小单位且无压缩。
  2. \n
  3. Crystal Disk Mark:1次,32GiB,所有场景。
  4. \n
\n
------------------------------------------------------------------------------\nCrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo\n                                  Crystal Dew World: https://crystalmark.info/\n------------------------------------------------------------------------------\n* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]\n* KB = 1000 bytes, KiB = 1024 bytes\n\n[Read]\n  SEQ    1MiB (Q=  8, T= 1):  1789.330 MB/s [   1706.4 IOPS] <  4681.96 us>\n  SEQ    1MiB (Q=  1, T= 1):  1520.689 MB/s [   1450.2 IOPS] <   688.45 us>\n  RND    4KiB (Q= 32, T= 1):   515.591 MB/s [ 125876.7 IOPS] <   245.41 us>\n  RND    4KiB (Q=  1, T= 1):    56.474 MB/s [  13787.6 IOPS] <    72.37 us>\n\n[Write]\n  SEQ    1MiB (Q=  8, T= 1):  1296.007 MB/s [   1236.0 IOPS] <  6456.03 us>\n  SEQ    1MiB (Q=  1, T= 1):  1178.180 MB/s [   1123.6 IOPS] <   888.16 us>\n  RND    4KiB (Q= 32, T= 1):   452.477 MB/s [ 110468.0 IOPS] <   280.43 us>\n  RND    4KiB (Q=  1, T= 1):   183.973 MB/s [  44915.3 IOPS] <    22.12 us>\n\nProfile: Default\n   Test: 32 GiB (x1) [Z: 0% (0/466GiB)]\n   Mode: [Admin]\n   Time: Measure 5 sec / Interval 5 sec \n   Date: 2023/06/07 10:03:39\n     OS: Windows 10  [10.0 Build 19045] (x64)\n
Run Code Online (Sandbox Code Playgroud)\n

场景 2:压缩开启

\n
    \n
  1. 快速格式化为 NTFS,使用默认分配大小单位并打开压缩。
  2. \n
  3. Crystal Disk Mark:1次,32GiB,所有场景。
  4. \n
\n
------------------------------------------------------------------------------\nCrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo\n                                  Crystal Dew World: https://crystalmark.info/\n------------------------------------------------------------------------------\n* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]\n* KB = 1000 bytes, KiB = 1024 bytes\n\n[Read]\n  SEQ    1MiB (Q=  8, T= 1):  1789.688 MB/s [   1706.8 IOPS] <  4681.73 us>\n  SEQ    1MiB (Q=  1, T= 1):  1516.428 MB/s [   1446.2 IOPS] <   690.41 us>\n  RND    4KiB (Q= 32, T= 1):   513.624 MB/s [ 125396.5 IOPS] <   247.03 us>\n  RND    4KiB (Q=  1, T= 1):    51.837 MB/s [  12655.5 IOPS] <    78.85 us>\n\n[Write]\n  SEQ    1MiB (Q=  8, T= 1):  1772.207 MB/s [   1690.1 IOPS] <  4722.98 us>\n  SEQ    1MiB (Q=  1, T= 1):  1513.156 MB/s [   1443.1 IOPS] <   691.69 us>\n  RND    4KiB (Q= 32, T= 1):   450.992 MB/s [ 110105.5 IOPS] <   281.38 us>\n  RND    4KiB (Q=  1, T= 1):   184.793 MB/s [  45115.5 IOPS] <    22.03 us>\n\nProfile: Default\n   Test: 32 GiB (x1) [Z: 0% (0/466GiB)]\n   Mode: [Admin]\n   Time: Measure 5 sec / Interval 5 sec \n   Date: 2023/06/07 9:59:37\n     OS: Windows 10  [10.0 Build 19045] (x64)\n
Run Code Online (Sandbox Code Playgroud)\n

概括

\n

这是一个简单的基准测试场景,可能并不代表现实世界的文件历史记录访​​问模式,但我不想设置更复杂的东西。我将每个场景重复一次以确认类似的结果。

\n
    \n
  • 顺序读取随机写入性能不受影响
  • \n
  • 打开压缩后,随机读取、队列深度 1性能下降 8% 。
  • \n
  • 打开压缩后,顺序写入性能提高了 28-38% 。
  • \n
\n

CPU 利用率是使用自定义数据收集器收集的,监视处理器时间百分比和最大频率百分比。我的机器在测试期间打开了很多应用程序,因此数据很嘈杂。我的观察是,在完整的测试套件中,单个核心仅被充分利用两次,持续 10 秒。这 10 秒的时间段并不完全符合测试的特定阶段,但它们接近顺序写入基准。我认为这有些相关,但峰值也可能与 PC 上的其他操作有关。除此之外,每个核心 CPU 从未飙升至超过 30% 处理器时间(短暂),并且通常低于 5% 处理器时间。在测试期间,CPU 以全频运行。

\n

结论

\n

对于我的用例来说,压缩是有意义的。我很少访问我的备份文件,并且随机读取性能不会受到太大影响,因此我将受益于更快的顺序写入性能更重要的是额外的容量。压缩似乎并没有以用户可感知的方式对我的多核 CPU 造成压力,除了在顺序写入基准测试期间可能是单个核心(时间有问题)。

\n

  • @Mokubai,是的,16 个簇块(最大 4KB 簇)。我记得在我的 NTFS 文件恢复工具中使用 RtlcompressBuffer 来恢复压缩文件。 (2认同)
  • @Mokubai 几乎所有使用透明压缩的文件系统(除了少数罕见情况)都像这样工作,包括 NTFS。也就是说,压缩块大小通常大于文件系统的典型分配单元,因为否则开销就太高了。这样做的一个有趣的副作用是,对于小操作大小的透明压缩,随机读/写性能通常很差,但对于大型操作来说明显更好(因为无论小操作如何,您都必须[解]压缩完整的压缩块) )。 (2认同)