当谈PCIe SSD的高性能,我们在谈什么(下)

48 篇文章 14 订阅
13 篇文章 1 订阅

上篇文章谈到了PCIe SSD的发展和性能追求,并介绍了NVMe用以保障QoS的IOD。Memblaze已经对IOD进行了深入的调研,设计了一系列验证试验,这篇文章将基于两个具有代表性的试验说明NVM Set对于SSD提升QoS的重要作用。(上篇文章:《当谈PCIe SSD的高性能,我们在谈什么(上)》)

在讨论之前需要对PCIe SSD内部基于NVM set, 引入三种逻辑单元结构的数据布局进行说明(如下图),可以理解为这是一块16通道,每个通道上有8个Die/Flash LUN的SSD。
在这里插入图片描述
第一种是传统的数据布局(Traditional),整个资源池不同区域没有明显的隔离策略,数据会分布在所有的Flash LUN上,显然如果多个应用同时对这块SSD进行读写操作,I/O冲突造成的高延迟。

而下面两种是引入了NVM Set的数据布局。左侧垂直逻辑单元(Vertical Sets)中Set1和Set2以通道为单位,各占用一半的NAND资源;而水平逻辑单元(Horizontal Sets)中每个Set都享有每个通道上一半(即4个Die)的NAND资源。垂直和水平两种不同的资源隔离策略会达到不同的性能效果,随后试验的解读部分会详细说明。

验证NVM Set带来的QoS提升

第一个试验是2个应用同时对一块PBlaze5 916 NVMe SSD进行读/写操作,并且采集传统逻辑单元(Traditional)以及划分了2个Set的水平逻辑单元(Horizontal Sets)两种模式下的测试数据。

测试环境
System:Dell PowerEdge R730xd (Intel Xeon E5-2640 v3 x8 @ 2.6GHz)
IO patterns:
负载1: 32KB Sequential Write, 1job, QD = 4
负载2: 4KB Random Read, 1job, QD = 8
Namespace:2 Namespaces

我们在PBlaze5 916上配置了两个Namespace,测试对Namespace1进行顺序写操作,同时对Namespace2进行随机读操作。使用水平逻辑单元(Horizontal Sets)模式时,两个Namespace分属两个NVM Set。
在这里插入图片描述
这是一个非常典型的业务场景模型,有的业务以读为主,有的业务以写为主。测试择取Namespace2的读延迟数据,这一数据一定程度上可以评估应用之间的干扰影响(这里的写也可以看做读的Nosiy Neighbors)。

Nosiy Neighbors
在Facebook对IOD的一系列测试中,就可以看到这一概念。当两个应用同时对一块SSD进行读写操作,两者可以视对方为影响自身体验的Nosiy Neighbor。我们的实验以读负载的测试结果为准,写负载为其Nosiy Neighbors。

在这里插入图片描述
黄色线是传统模式下的测试结果,可以看到虽然I/O也得到了及时的响应,延迟在200~250μs之间,但是不停的抖动,读负载受到写负载影响较大。下面这条蓝色是一条平线,在使用了NVM Set的功能之后,读的操作完全没有受到写的影响,延迟始终稳定在100微秒左右,平均延迟有2.25倍的提升。

从QoS的角度可以更直观的看到NVM Set带来的稳定性的提升,在 99.9999%下两种模式有21倍的差距,这个影响还是非常可观的。接下来我们进一步对最大读延迟、不同队列深度(QD)下IOPS进行一个对比。
在这里插入图片描述

延迟全面降低,IOPS性能提高,QoS得到最大限度的保障,用户体验稳定。这就是NVM Set带来的收益!

NVM Set效果验证二:传统逻辑单元VS 垂直逻辑单元VS 水平数据逻辑单元

第一组试验对NVM Set带来的稳定性和性能收益进行了验证和展示,第二组试验测试环境、设备和负载模型都没有变化,但是将加入垂直逻辑单元的对比。
在这里插入图片描述
这里红线是垂直逻辑单元的结果,蓝线是水平逻辑单元的结果,虽然垂直逻辑单元中两个NVM Set会分别独占通道,但是比较反直觉的是并没有带来更好的测试结果。通过调查发现,水平逻辑单元模式中通道更多(16)拥有更高的I/O并发度,而垂直逻辑单元模式在较少的通道(8)上接入更多数量的Flash Lun后,通道内的读命令之间阻塞影响不容忽视。

同样接下来我们进一步对最大读延迟、不同队列深度(QD)下IOPS进行一个对比。对比结果如下图:
在这里插入图片描述
左侧的图展示了整体的QoS数据。当QoS级别较低时,比如99.99%的时候,传统逻辑单元模式下SSD的延迟已经迅速的升高,而使用了NVM Set的两种模式则一直保持着平稳的低延迟,直到99.9999%以及更高的情况下,才会看到红线、蓝线上升,但即使在这种情况下,跟传统的混合情况下还是有差距。相似的结果同样出现在IOPS上,不论队列深度多高,我们依然可以发现垂直逻辑单元模式和水平逻辑单元模式的性能都是线性增长的,并且它会比传统模式要好得多。
在这里插入图片描述
最后再看一下写带宽的对比,当一个 Set 的 Flash 资源只有整体的一半时,写带宽到底会受多少影响?同样是上面实验的测试脚本和环境,黄色柱形图使用了100%的 Flash 资源,在没有读干扰的情况下,Pblaze5 916 有高达3GB/s +的写带宽,在本次实验中,写带宽虽然会受到读的影响,但是仍超过了 2GB/s。而另外两种模式都仅使用了一半的Flash资源做写操作,两者均不能有效的利用到所有的写带宽资源,因而带宽只有无影响写带宽的一半,约1.5GB/s。需要指出的是,垂直逻辑单元模式下,独立的 Flash 通道使他获得比水平模式略高一线的写带宽。

通过上面两个实验,可以看到不同的Set划分方式有不同的优势,他们都是非常有效的隔离手法。Memblaze 还在更加深入的研究 NVM Set 等资源隔离和管理的方法,力求让 SSD 在实际的应用场景中拥有更高的性能和稳定性。
在这里插入图片描述
在 NVMe 生态演进层面,可以看到 Windows 驱动很快会加入 IOD 的支持,Linux 驱动也会加入 IOD 的支持,我们常用的管理工具 NVMe 的 Cli 也已经支持 IOD 。最后1.3C和1.4都已经把 IOD 摆上了日程。这些都再次印证 IOD 是一个非常明确的方向。

Open Channel SSD vs NVMe的IOD

在上文中提到了 Open Channel 的 SSD,这项技术为控制 QoS 和延迟而生。那么接下来的问题是 Open Channel 的 SSD 与 NVMe 的 IOD 各有什么样的优缺点?是否 Open Channel 的效果会毫无疑问更好?

Open Channel将所有的Flash管理和控制权都交到了Host应用软件手上,让Host进行有效的管理,这种管理会可以避免在垃圾回收等各类对前端应用I/O请求的影响。

IOD 的效果比 OC 略低,虽然在上文中的两个验证试验中看到的结果非常好,但是两个试验都仅仅是对单一 Set 进行了单一的操作,这种负载模型仍属于理想化模拟。如果Host 能做到对每个 Namespace 都做纯读或者纯写操作,那么 NVM Set 的使用效果会很明显;如果 Host 上应用是混合读写负载,SSD 的性能和稳定性仍不可避免互相影响,进而影响到前端应用的体现。

但从实现的复杂度看,Open Channel 带来的复杂度远比IOD 带来的要高,应用方需要有完善的 Flash 管理代码来替代厂商久经考验的 SSD 固件,确保工作正常。反之 IOD操作及其简单,可以简单的理解成为把一个 SSD 在物理上进行逻辑分区,host 使用与在一块硬盘上使用不同分区是一样的,只要通过前期的简易配置就可以达到一劳永逸的效果。

第三个就是标准化的程度。 Open Channel 的标准化现在已经演进到 Open Channel2.0,但其标准化进程仍然不高,众多需求需要通过定制化的方案实现。对应起来IOD是 NVMe1.4 的标准协议,相信它会很快成为所有SSD的标配功能,可以提供到用户去使用,这不仅是IOD的优势,更是 NVMe 多年发展筑造的标准化生态的优势。

最后,IT系统面临的应用场景复杂多样,不同的类型客户,应该是根据自己的情况,根据自身应用可配置情况、可定制情况能够去选择最合适自己的产品和方案。

在这里,Memblaze的NVMe SSD会随着NVMe协议一起不停往前去演进,希望能够提供给用户层面更多有价值的功能,给更多用户更好的用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值