深入浅出SSD:固态存储核心技术、原理与实战(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5.2 性能剖析

1.性能指标

硬盘性能指标一般包括IOPS(反映的是随机读写性能)、吞吐量(单位为MB/s,反映的是顺序读写性能)、响应时间/延时(单位为ms或μs)。

❑ IOPS:设备每秒完成的输入输出请求数,一般是小块数据读写命令的响应次数,比如4KB数据块。IOPS越大越好。

❑ 吞吐量:每秒读写命令完成的数据传输量,也叫带宽(Bandwidth),一般对应大块数据读写命令,比如512KB数据块。吞吐量也是越大越好。

❑ 响应时间:也叫延时(Latency),即每条命令从发出到收到状态回复所需要的响应时间,有平均延时(Average Latency)和最大延时(Max Latency)两项。响应时间越小越好。

2.访问模式

性能测试设计要考虑访问模式(Access Pattern),包括以下3个部分:

❑ Random/Sequential:指随机(Random)和连续(Sequential)数据命令请求。随机和连续指的是前后两条命令的LBA(逻辑块地址)是不是连续的,连续的LBA称为Sequential,不连续的LBA称为Random。

❑ Block Size:块大小,即单条命令传输的数据大小。在性能测试中,Block Size从4KB到512KB不等。随机测试一般用小数据块,比如4KB;顺序测试一般用大数据块,比如512KB。

❑ Read/Write Ratio:指读写命令数混合的比例。

任何测试负荷都是上述这些模式的组合。

❑ 顺序读测试:指的是LBA连续读,块大小为256KB、512KB等,读写比例为100%:0。

❑ 随机写测试:指的是LBA不连续的写,块大小一般为4KB,读写比例为0:100%。

❑ 随机混合读写:指的是LBA不连续的读写混合测试,块大小一般为4KB,读写保持一定的比例。

3.延时指标

上文提到,延时有平均延时和最大延时两种,数值越低越好。平均延时的计算公式是用整个应用或者测试过程中所有命令响应时间的总和除以命令的个数,反映的是SSD总体性能;最大延时是指在测试周期内所有命令中响应时间最长的那笔,反映的是用户体验,例如最大延时影响应用通过操作系统操作SSD时有无卡顿的用户体验。延时达到秒级,用户就会有明显的卡顿感。

4.服务质量

服务质量(Quality of Service,QoS)反映的是延时“置信级”(Conf idence Level)。图1-20所示为在测试规定的时间内使用2个9(99%)到5个9(99.999%)的百分比的命令中的最大延时,也就是最慢的那条命令的响应时间。整体上看,一个SSD的QoS延时分布整体越靠左越好,即延时越小越好。

图1-20 SSD延时分布图

对消费级硬盘来说,用户对延时的要求可能不是很高。但对企业级硬盘来说,像数据中心(Data Center)等企业应用对延时很敏感,比如BAT(百度、阿里巴巴、腾讯)的互联网应用,延时的大小关乎用户体验和互联网应用快慢的问题。这类应用对IOPS和吞吐量并不十分敏感,更在乎延时(包括平均延时、最大延时或服务质量等指标)。

5.性能数据一览

我们来看一组性能测试数据,包括SSD、HDD和SSHD(SSD和HDD混合硬盘)的性能数据,如图1-21所示。

图1-21 SSD、HDD和SSHD性能数据一览

测量指标包括空盘(Fresh out of Box,FOB)和满盘下的IOPS、吞吐量、平均延时和最大延时。

测试空盘IOPS用的测试模式是“RND 4KB 100%W”,即4KB(二进制4KB,即4096字节)随机100%写。

测试满盘IOPS用了3种测试模式,分别如下。

❑ RND 4KB 100%W:数据块大小为4KB的写命令,100%随机写。

❑ RND 4KB 65:35 RW:数据块大小为4KB的读写命令,65%的读,35%的写,混合随机读写。

❑ RND 4KB 100%R:数据块大小为4KB的读命令,100%随机读。

从图1-21可以看出,对于HDD和SSHD来说,满盘和空盘写的IOPS相差不大(都很糟糕),而对SSD来说,满盘和空盘写的IOPS相差很大。这是因为对HDD来说,满盘后没有垃圾回收操作,所以空盘和满盘写的性能差不多;但对SSD来说,满盘后写会触发垃圾回收,导致写性能下降。

对消费级SSD来说,商家给的测试数据一般是空盘测试的数据,数字相当好看,“最高可达”常挂嘴边。新买的盘,我们测试时会发现性能和商家标称的差不多,但随着对盘的使用,会出现掉速问题。垃圾回收是其中一个原因,还有可能是SLC缓存用完了,这里就不具体展开了。

对企业级SSD来说,客户更关注稳态性能,即满盘性能。所以,商家给出的性能数据一般是满盘数据,“最高可达”字眼消失。我们可以从宣传文案中有没有“最高可达”字眼来快速判断一个盘是企业级还是消费级。

吞吐量测试有2种模式,分别如下。

❑ SEQ 1024KB 100%W:数据块大小为1024KB的顺序写测试。

❑ SEQ 1024KB 100%R:数据块大小为1024KB的顺序读测试。

延时中的最大延时反映的是服务质量,所有测试模式都是4KB 100%随机写。由上可以看出,SSD测试的是数据到SSD内部缓冲区的延时。为什么不是FUA?因为对闪存来说,即使是SLC,也没有办法在几十微秒内将数据写入闪存。如果是FUA命令测试,那么平均延时至少是几百微秒。