|
IO Determinism功能的引入 NVMe Spec 1.3有一个新功能:多流写技术。具体操作是在每个I/O指令上加上一个标签,SSD则根据写入I/O的标签,把不一样标签的资料放到不一样的区域,借此让多流写入作业能有序的进行,进而实现冷热资料的分区存放,从而大幅改善垃圾回收的效率,让SSD能提供更好的性能,不受传统的垃圾回收作业的困扰。 除了用于多流写入外,NVMe 1.3这种I/O标签的功能,未来还可望扩展到其他使用,如用于服务等级(QoS)管理,利用附加在每笔I/O上的QoS等级标签,让SSD控制器优先处理高QoS等级的I/O。NVMe未来预定在2019年提供的IO Determinism(IO确定性)功能,应该就是基于这种方式来运作。
以4 Namespace, 8 Channels的SSD系统为例,传统的data布局如下图:最简单的结构配置,数据均匀分布在所有的die。但是这个布局的缺点就是会有IO冲突造成的延迟。
1. 垂直逻辑单元((Vertical Sets):
测验结果: (1)平均读延迟 在垂直逻辑单元的数据布局结构条件下,平均读延迟提升了7倍;在水平逻辑单元的数据布局结构条件下,平均读延迟提升了9.5倍;
在垂直逻辑单元的数据布局结构条件下,最大读延迟提升了16倍;在水平逻辑单元的数据布局结构条件下,最大读延迟提升了11倍;
在三种数据布局条件下,IOPS随着队列深度的增加均有上升的趋势。不过,水平逻辑单元数据布局结构(HS)的IOPS在QD=6时达到最大。最重要的是,水平逻辑单元数据布局结构(HS)和垂直逻辑单元数据布局结构(VS)的IOPS均是传统数据布局结构IOPS的2倍之多。
上面的测验结果是主要是针对SSD逻辑单元(Set)对IO延迟的影响。在NVMe推广的信息中,我们发现关于IO determinism还有两个重要的概念:Deterministic Window和Non-Determinism Window.
NVMe在完全借鉴了汽车保养的特点,在SSD里面设置了一个时间窗,这个时间窗是稳定时延的模式,即Determinism Window。当SSD盘需要垃圾回收、Wear-leveling维持操作时切换到非稳定模式,这个阶段IO性能是不稳定的,即Non-Determinism Window, 也可以称作Maintainance Window。如果用两块SSD合作,则在任何一个时间点,至少会有一个SSD处在Determinism Window,为系统提供稳定的IO性能,如下图:
不管是之前介绍的Multi-Stream还是本篇介绍的IO Determinism基本都是NVME协议针对数据中心提供的新功能。随着大数据时代的来临,我相信,在企业级SSD储存领域会有更多更强大的功能被引入,让我们拭目以待吧。 |