NVMe ssd:为什么 4k 写入速度比读取速度快?

mus*_*ach 56 performance ssd

我在 NVMe 上有一个三星 960 Pro 512 GB SSD,运行 PCIe Gen.3x4。我使用三星 NVMe 驱动程序 2.0.0.1607。SSD 运行良好。但是,我不明白为什么4k的写入比4k的读取快。我正在使用 AS 基准测试:

在此处输入图片说明

它是 3 的因数!有什么问题(我的系统或 AS Benchmark)还是这正常?

Mok*_*bai 82

4k 读取将是驱动器可以做的最困难的事情。它们是驱动器能够处理的最小块大小之一,并且驱动器无法预加载大量数据,事实上,如果驱动器预加载逻辑打算读取任何内容,它们可能效率很低大于 4kb。

“正常”驱动器读取更有可能大于 4kb,因为很少有这么小的文件,甚至页面文件也可能被大块读取,因为程序“只有”可能会很奇怪4KB 内存调出。这意味着驱动器尝试执行的任何预加载实际上都会影响驱动器吞吐量。

4K 读取可能会通过驱动器缓冲区,但测试的“随机”部分使它们完全不可预测。控制器不知道驱动器何时可能需要再次进行更常见的“大”读取。

另一方面,4K 写入可以以高效的方式依次缓冲、排队和写出。驱动器缓冲区可以完成许多它设计的捕获和写入工作,磨损均衡器甚至可能将所有这些 4K 写入分配到同一个驱动器擦除块,偶尔将 4K“随机”写入转换为更接近顺序写入的东西。

事实上,我怀疑这就是“4K-64Thrd”写入中发生的事情,“64-Thrd”显然使用了大队列深度,从而向驱动器发出信号,表明它有大量数据要读取或写入. 这会触发大量写入集群,因此接近驱动器的顺序写入速度。执行 4K 写入仍然存在开销,但现在您完全暴露了缓冲区的潜力。在测试的读取版本中,驱动控制器现在认识到它处于非常恒定的重负载下,停止预加载数据,可能会避开缓冲区,而是切换到“原始”读取模式,再次接近顺序读取速度。

基本上,驱动控制器可以做一些事情来提高 4K 写入的效率,尤其是当它们的集群在相似的时间到达时,而它不能做任何事情来提高单个4K 读取的效率,尤其是在它试图优化时通过将数据预加载到缓存中来实现数据流。

  • 总体来说很好的答案,但我根本不相信“很少有这么小的文件”。事实上,我怀疑在大多数系统上,*大部分*的文件是 4k 或更小。它们不占用大部分*空间*,但那是另一回事。 (17认同)
  • 不是答案本身的一部分,但我怀疑“4K 读取”(非 64Thrd 版本)实际上将驱动器默认读取块大小公开为 32K 或 64K。这将是 2600 / 50 = 52(64K 有一些开销 + 原始 4K 读取)或 1200 / 50 = 24(32K 有一些开销 + 4K 读取减少它)。 (5认同)
  • 最简单的答案可能是这样的:如果一次执行一个,则根本无法重叠读取,因为在返回前一次读取的数据之前,您甚至无法找出下一次读取的块。但是您可以完全重叠写入,因为您可以在处理前一次写入的同时获取下一次写入的所有数据。 (4认同)
  • @hobbs 如果以 NTFS 为例,默认集群大小为 4K(或其倍数),这意味着即使文件和/或元数据本身更小,NTFS 文件系统本身也可以在 4K 块中工作。所以较小的文件没有任何区别。出于所有意图和目的,Windows 系统读取/写入 4K 块或它的倍数。 (2认同)

Fab*_*ica 15

其他答案已经解释了为什么写作比阅读更快;我想补充一点,对于此驱动器,这绝对是正常的,因为您可以在评论中找到的基准测试证实了这一点。

ArsTecnica 的评论

ArsTechnica已审查了该驱动器,包括您的版本 (512 GB) 和 2 TB 版本:

技术公司 (此图在评论中不会立即可见,它是第一个图库中的第 5 个,您必须单击它)

这两种型号的性能非常相似,它们的数字与您的相似:驱动器的读取速度为 37 MB/s,写入速度为 151 MB/s。

AnandTech 的评论

AnandTech还审查了该驱动器:他们使用了 2TB 模型,对队列深度为 1、2 和 4 的测试结果进行了平均。这些是图表:

AnandTech 4K 读取 AnandTech 4K 写入

驱动器读取速度为 137 MB/s,写入速度为 437 MB/s。该数字比您的高得多,但这可能是由于队列深度较高。无论如何,写入速度是读取速度的 3 倍,就像您的情况一样。

PC World 的评论

PC World 的另一篇评论:他们测试了 1 TB 版本,4K 的结果是读取速度为 30 MB/s,写入速度为 155 MB/s: 电脑世界图 写入速度与您的一致,但这里的驱动器读取速度更慢。结果是比例是五比一,而不是三比一。

结论

评论证实,对于此驱动器,随机 4K 的写入速度比读取速度快得多是正常的:根据测试,它甚至可以快 5 倍。

你的驱动没问题。没有理由相信它有问题,或者你的系统有问题。


小智 8

SSD 控制器在板载 NVRAM 中缓存写入,并在适当的时候将其刷新到闪存介质。写入延迟因此是缓存访问延迟,通常为 20us。相反,读取是通过媒体提供的,访问时间最多为 120-150us。