为什么 WD HDD 的随机写入速度为 12 mb/s,是随机读取速度的 24 倍?

为什么 WD HDD 的随机写入速度为 12 mb/s,是随机读取速度的 24 倍?

我使用 CrystalDiskMark 测试了型号为 的硬盘WDC WD40NDZW-11A8JS1 4000,7 GB。令我惊讶的是,它的随机写入速度高达 12 mb/s,24次和随机读取速度一样快。对于 HDD 来说还不错!作为参考,我测试的另一个 HDD 的速度是其他所有测试的两倍,但其随机读取和写入速度都在 1 mb/s 左右。

我很纳闷为什么这个型号的随机写入速度这么快,网上找不到这样的实例。几个小时后我又测试了一下,结果还是一样。

在此处输入图片描述

更新:这让我很惊讶,因为 12 mb/s 的随机写入速度对于 HDD 来说非常不寻常。作为参考组,我测试了名为 的 HDD 型号TOSHIBA MG08ACA16TE 16000,9 GB。它的随机写入速度为 2 mb/s。 在此处输入图片描述

答案1

部分差异可能在于读取和写入之间的固有差异。随机读取(尤其是小读取)无法以任何方式轻松缓冲或预加载。顺序操作可以链接并达到峰值速度,写入可以缓存在内存中以便进行编组。真正的随机读取没有这些好处。

它与 SSD 有很多相似之处,可以观察到类似的行为。真正的随机 4K 读取是驱动器可以执行的最困难的操作

除此之外,物理驱动器还可以使用本机命令队列这可能会缓解问题,甚至改变性能。在某些情况下,糟糕的实施可能会使情况变得更糟,尤其是在高负载下。或者它可以改善情况。

维基百科页面

NCQ 可能会对操作系统的 I/O 调度程序产生负面影响,实际上会降低性能;在实践中,我们已经在使用 RAID-5 的 Linux 上观察到了这种情况。NCQ 中没有机制让主机为 I/O 指定任何类型的截止期限,例如可以忽略某个请求而处理其他请求的次数。理论上,驱动器可以将排队的请求延迟任意时间而它在 I/O 压力下处理其他(可能是新的)请求。由于驱动器固件内部用于 NCQ 调度排序的算法通常不为公众所知,这为硬件/固件性能带来了另一层不确定性。2008 年左右在 Google 进行的测试已经证明 NCQ 可以将 I/O 延迟长达 1-2 秒建议的一个解决方法是让操作系统人为地尽早使 NCQ 队列处于饥饿状态,以便及时满足低延迟应用程序的需求。

因此,这可能是由许多因素和制造商实施的差异造成的,从而改变驱动器处理事物的方式。

除此之外,还有一种新型驱动器,称为叠瓦式磁记录SMR 磁盘使用一些替代方法将数据保存在重叠磁道中,以提高密度。Synolygy PMR 与 SMR

但是,当编辑或覆盖 SMR 驱动器上的数据时,写入头不会将数据覆盖到现有的磁道上。相反,新数据将被写入磁盘的空白区域,而包含旧数据的原始轨道将暂时保留。当硬盘空闲时,它将进入重组模式,原始轨道上的旧数据位将被擦除,以供将来使用。

这种类型的驱动器可能会将您的随机写入重新组织为不同磁盘位置上的更连续的内容。当驱动器空闲时,它可能会重写到磁盘的“正确”区域,从而产生截然不同的写入性能。

答案2

对于每次读取,控制器必须接收一个地址和要读取的扇区数,然后读取数据,然后返回数据。对于顺序写入,它接收一次数据,然后就可以自由地将数据传输回内存。对于随机读取,它必须分别接收每次读取的地址,将数据传输回内存,再次读取,传输数据等。这种来回需要时间,这就是延迟。SATA 控制器有一个要处理的队列,如果将随机读取排在队列中,控制器不必在每次读取时都返回操作系统,而是可以立即处理,而无需等待地址。

--托塞·尼科洛夫

相关内容