SSD 速度数字真正告诉你的东西

顺序性能与随机性能的区别、为什么包装盒上的数字描述的是较少发生的情况,以及如何读懂它而不被误导。

更新于

本页内容
  1. 顺序速度和随机速度实际上测量的是什么
  2. 你的机器实际上做的是哪种工作
  3. 为什么包装盒上的数字是顺序读取
  4. 为什么写入速度在大文件复制中途会下降
  5. 如何读懂速度标称而不被误导
  6. 我们比较什么,以及我们看不到什么

SSD 包装盒上的主打数字是顺序读取:当许多请求同时进行时,硬盘移动一个大文件的速度。这是你的机器最少产生的情形。启动系统、打开应用程序,以及大多数你真正等待的事情,完全取决于另一个数字。

这并不意味着它没有用。它只是针对某一类工作的一项狭窄的说法。

顺序速度和随机速度实际上测量的是什么

顺序和随机不是同一事物的两种速度。它们以不同的单位表示,因为限制它们的是不同的因素。

顺序吞吐量以 MB/s 表示,描述的是从头到尾移动的一次长传输。每秒字节数是正确的单位,因为任务是一个大小已知的单一对象,所需时间等于该大小除以速率。

随机性能以 IOPS(每秒输入/输出操作次数)表示,通常请求大小为 4 KB。把同样的总量按 4 KB 一块移动,它就不再是一个对象,而变成了数百万个对象。操作次数是正确的单位,因为字节数不再重要。每个请求都带有固定成本:确定数据物理上放在哪里、发出命令、返回结果。在 4 KB 下,这些成本占用了大部分时间,所以硬盘受限于它能处理多少个请求,而不是它通向闪存的路有多宽。

还有第三个数字,几乎没有东西会标出它。延迟是没有任何其他请求在等待时,一个请求所花的时间。吞吐量和 IOPS 描述的是负载下的硬盘;延迟描述的是只有你在请求时的硬盘,而这占据了台式机生命的大部分时间。

你的机器实际上做的是哪种工作

参数表上的数字是在台式机很少产生的负载下得出的:多个进程持续发出请求,让硬盘的队列保持满载。普通桌面使用只有几个请求在排队,通常只有一个。

队列深度是交给硬盘但尚未应答的请求数。这是接口真正不同的地方,尽管不是通常所说的那种不同。SATA 并不是一次一个请求:原生命令队列给了它一个最多容纳 32 条命令的队列。NVMe 增加的是许多队列而不是一个,每个队列都深得多,每条命令的主机开销也更少。这对服务器来说价值巨大。对单个桌面会话来说,价值小得多。

台式机无法填满这些队列的原因在于,它的小读取彼此依赖。打开一个应用程序需要读取一个文件,而这个文件会指名下一个要读取的文件。启动则沿着一条长长的链条逐个读取。每一步都必须完成才能知道下一步,所以无论有多少队列可用,这些读取都无法并行发出,总时间是一串延迟相加,而不是带宽相除的结果。这就是为什么一块标称数字是另一块硬盘数倍的硬盘,并不会让你的邮件客户端快几倍。

为什么包装盒上的数字是顺序读取

制造商印上顺序读取,因为这是测量时表现最好的数字。它每次运行都很稳定,在满盘时与空盘时差不多,并且受限于接口——所以它随着每一代干净利落地提升,让今年的硬盘有比去年明显更大的数字可印。

它也是最容易兑现的说法。随机性能取决于硬盘的使用方式、它有多满,以及一分钟前它在做什么。新硬盘上的顺序读取几乎就是硬件本身的一种属性。

为什么写入速度在大文件复制中途会下降

写入速度不是一个数字。几乎每块硬盘都把传入的数据收进一个快速的缓存区域,之后再将其折入较慢的永久形态,所以存在一个缓存速率和一个底层原生速率,而包装盒标的是前者。这个区域就是 SLC 缓存,即以每单元一位运行的闪存。如何选择 SSD 讲了什么决定底层速率,TLC、QLC 和无 DRAM 的 SSD 讲了缓存从何而来,以及为什么写进缓存会让硬盘稍后付出第二次写入的代价。

这里重要的是曲线的形状。一次复制以缓存速率开始,在缓存耗尽前一直保持,然后下降——有时只降一点,有时降到它的几分之一——并在剩余传输中一直维持低位。有两件事决定你是否会遇到这个下降:你一次写多少数据,以及硬盘那一刻有多少缓存。

这就是为什么只写入一两 GB 的基准测试告诉不了你什么。在大多数硬盘上,这个量会完全落进缓存,所以无论硬盘底层有多慢,结果都是缓存速率。一项一直跑到缓存耗尽的测试会报告两个速率,以及第一个变成第二个的那个点。几乎没有测试这样做,也没有任何参数表这样做。

缓存还需要空闲时间来清空。第一项复制刚结束就马上开始第二项大复制,它可能会以更慢的速度开始,因为硬盘还在清空前一项。为 SSD 定容量 讲了其中的剩余空间这一面,这是决定你能得到多少缓存的另一个杠杆。

如何读懂速度标称而不被误导

把标称当作档次标记,而不是分数。它把硬盘粗略分档,而在同一档内它说明不了什么。两个数字之间的比例在你的实际负载面前站不住脚:一块标称快一倍的硬盘,在你做大文件复制之外的事情时并不会快一倍。

标称是在有利条件下的上限,不是下限。它是在空盘、凉爽、队列保持满载的条件下测得的。而你的硬盘在其生命周期的大部分时间里都不符合这些条件。

读写入数字时,要和读取数字对照着读,而不是单独看。当两块硬盘的差距是倍数而不是百分点时,那通常就是接口代次在起作用,这首先是一个适配问题,其次才是速度问题。NVMe 还是 SATA 讲了你的机器支持哪一种。

我们比较什么,以及我们看不到什么

我们按照三个数字来比较 SSD:容量、顺序读取和顺序写入。每一项都是越高越好,这就是我们的比较对速度所了解的全部。

我们采用顺序读取,因为知道它是包装盒上最弱的数字。我们采用它,是因为它是几乎每一份参数表在每一个价位上都会标出的唯一数字。随机数字和延迟能告诉你更多,但它们只有部分厂商在部分硬盘上标出,而一个只对资料齐全的硬盘起作用的比较,会把市场上更便宜的那一半丢掉。那不是比较,那只是文档齐全的硬盘的候选清单。

两边都是同样的取舍:一个覆盖所有硬盘但较弱的数据,胜过只覆盖三分之一的更好的数据——只要我们说明我们用的是哪一个。

随机读取和随机写入 IOPS 是我们为 SSD 记录的字段,但它们是可选的,而且我们收录的大多数报价从未标出它们。这两者都不是我们比较硬盘的维度,我们也不对它们进行筛选。这个缺失是市场造成的,而不是我们认为这些数字不重要。

我们目录中的每一块 SSD 都在一个页面上。

常见问题

更高的顺序读取速度会让我的电脑感觉更快吗?
很少。启动系统、打开应用程序由许多小而分散的读取组成,它们取决于随机性能和延迟。顺序速度在复制大文件时才会显现。
什么是 SLC 缓存,为什么写入速度会下降?
大多数硬盘先把传入的数据快速写入一个缓存区域,之后再把它移到较慢的永久存储中。一次写入足够多的数据填满这个缓存,速度就会下降到硬盘的原生速率。

本类目的选购指南