有几种基准测试工具可用来测试PC驱动器的速度。
这是SATA SSD的基准示例:
m.2 SSD:
硬盘:
在每种情况下,“随机读取4KB Q1”都比写入慢,并且在大多数情况下,“ QD32”则相反。
在某些论坛上,人们说这是SSD芯片结构的局限性,但是像往常一样,硬盘驱动器也表现出相同的行为,这似乎是另一个原因吗?
TL; DR:这是因为SSD欺骗了您,并说写操作已经完成。读同样的东西是不可能的。
答案的较长版本是写缓存。
让我们从QD1案例开始。SSD接收到数据并将其保存到驱动器本地的缓存后,但实际上尚未将其写入NAND之前,将向OS报告写入已完成。这产生了很大的不同,因为将数据实际写入NAND的速度相当慢。对于读取,它实际上必须先从NAND读取数据,然后才能将其发送回(除非它已较早读取并且仍将其保存在高速缓存中,但这在随机读取中是非常不可能的)。
不利的一面是,在突然断电的情况下,写入SSD的数据可能会丢失数据,但尚未写入NAND。一些企业级固态硬盘包括一个超级电容器,该超级电容器可以存储足够的功率,以防突然断电,从而将高速缓存中的数据写入NAND。
对于硬盘驱动器,您会看到相同的事情,因为它们也在进行写缓存。他们只是没有那么积极。为什么SSD如此激进?要回答这个问题,我们需要考虑QD32的情况,这种情况既复杂又有趣。
您所说的是,在QD32上,随机读取通常比随机写入要快,这是不对的。这很大程度上取决于您要查看哪些特定的SSD。
如果您查看许多SATA SSD上的4k QD1随机读取,它们似乎都以20-30 MB / s的速度运行。这是为什么?这是因为4k QD1随机读取主要是关于延迟而不是吞吐量。延迟来自三个部分:
1.或3.在很长一段时间内都没有太大变化,这就是为什么1k QD1随机读取也没有太大变化的原因。
SSD从SATA / AHCI到PCIe / NVMe的最新移动大大降低了1.的延迟,这就是为什么某些m.2和PCIe SSD最近在这里显示出很大的改进的原因。
SSD控制器可以极大地帮助延迟的一件事是并行读取或写入多个NAND芯片,从而掩盖了大多数3的延迟。如果使用NCQ进行QD32 4k随机读取,则SSD可以为读取提供服务请求乱序,并确保它正在并行读取尽可能多的NAND芯片。
对于QD32 4k随机写入,SSD执行一种称为写入合并的操作。当有大量较小的写入请求进入SSD控制器时,它们会在本地缓存它们,并且当建立了足够大的写入缓冲区时,控制器会将其拆分为大小合适的块,然后将这些块并行写入多个NAND裸片,以再次帮助屏蔽NAND延迟。写合并的另一个优点是,当今大多数SSD的页面大小(可读取或写入的最小数量)都大于4k,并且合并写操作直到您达到页面大小为止有助于避免大量写放大。正是为了做这些事情,SSD在写缓存方面如此积极。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句