华科吴非教授:如何保障多租户共享固态盘的QoS?

在2023年中国数据与存储峰会的全闪存高端存储技术与实践论坛上,华中科技大学武汉光电国家研究中心研究员 吴非 教授 介绍了“多租户共享固态盘服务质量保障技术”的主题,值得很多关注SSD技术底层的朋友关注。

以下内容整理自演讲人的内容,供学习:

随着闪存技术的快速发展,固态盘的存储容量和性能均有显著提升,尤其是其高达200TB的容量和15GB/s的带宽的,以及百万级的吞吐量的固态盘的出现,这些特性使得单个固态盘能够支持多个租户共享使用。

吴非教授强调了固态盘虚拟化技术在支持多租户共享方面的作用。

她提到,PCIe单根虚拟化技术和NVMe命名空间等接口技术的发展,极大地推动了多租户共享固态盘的应用。这些技术使得一个固态盘可以虚拟化为多个存储设备,供不同的租户使用,每个租户都有独立的I/O请求队列和逻辑地址空间,从而有效地管理数据存储和访问。

在多租户共享固态盘的背景下,吴非教授指出,存储系统面临着三大主要挑战:性能干扰、性能不公平和性能损失。

性能干扰问题主要源于多租户共用同一闪存晶圆的I/O总线,造成数据传输的访问冲突,以及固态盘调度策略导致的调度干扰;性能不公平问题主要体现在带宽和吞吐量的分配上,不同租户间存在明显的性能差异;而性能损失则源于共享多租户的资源配置不佳,以及隔离条件下给部分租户预留的专属资源闲置无法被其他租户利用。

例如,面向性能公平的研究如右表所示,包括IO请求公平调度和空间资源公平分配两类策略。

左图则展示了IO请求调度策略的演进,从最初面向磁盘的一般性方法,逐渐演化成闪存感知的适配性方法,最后发展为可以减轻主机端软件栈开销的硬件卸载方案。

面向性能公平的服务质量保障技术主要表现为I/O公平调度器的设计,基于调度思想的不同可划分为预算分配和队列仲裁两类模型,预算分配模型通过周期性为每个租户分配预算,各租户在周期内按预算进行请求调度,通过限制每周期内各租户的最大性能,可以有效保障周期内的性能公平,然而租户当前周期内由于请求不足造成的预算浪费无法被继承到后续周期中,因此长期而言,可能存在性能不公平问题。

而队列仲裁模型则考虑了各租户的历史性能,通过调整请求调度顺序,优先调度性能“滞后”的租户的I/O请求,保障每时刻的调度都是趋近于最公平的选择。

这些I/O请求调度策略最初都基于磁盘存储,随着闪存固态盘的不断普及应用,这些方法开始结合闪存特性,例如固态盘内的高并发性能、闪存读写速度差异等,逐渐发展为适用于闪存固态盘的I/O调度器。

随着多处理器、多队列固态盘等技术的发展,固态盘带宽不断提升,系统的性能瓶颈逐渐从传统的存储I/O瓶颈转移为主机端CPU瓶颈,因此越来越多的工作开始研究将主机端的I/O调度器卸载到设备内实现,以此减少主机端I/O栈软件开销,进一步释放主机端有限的CPU资源,从而提升系统性能。

此外,也由于只有在固态盘内才能感知到着更丰富的语义来做出更明智的调度选择,例如盘内GC对调度的影响,因此I/O调度器的硬件卸载也逐渐成了新的发展趋势。

基于空间资源分配粒度,面向性能隔离的研究划分为两类分配策略,即硬隔离分配和软隔离分配两类。

硬隔离分配指的以channel或者die为最小分配粒度,由于每个闪存并行单元由单个租户所独占,因此其性能隔离性强,但由于现在一个闪存die即可达数十GB大小,因此在分配不合理时难以实现动态分配调整,表现为数据迁移开销大,此外,硬隔离分配还存在与现有闪存die级别RAID技术不兼容,大粒度磨损均衡开销大等问题。

软隔离分配则指plane或者block级的最小分配粒度,通过将不同租户的数据存储在不同的闪存块中,避免了一个租户的GC造成其他租户数据的迁移,解决了GC干扰问题,同时由于分配粒度较小,因此动态调整分配的开销小,可以支持灵活的空间资源分配策略,但由于依旧存在多个租户共享使用同一个固态盘并行单元的争用问题,因此软隔离技术还需要与IO隔离技术相配合才能完整实现性能隔离目标。

总结而言,面向性能隔离的研究如右表所示,包含空间硬隔离、空间软隔离和IO隔离方案。

通过左图实验结果可以发现,空间硬隔离方案隔离效果最强;空间软隔离方案和IO隔离方案隔离性弱,分别只实现了GC隔离和调度隔离;但二者的协同设计可以实现强隔离效果。

在面向性能隔离的服务质量保证技术方面,现有研究主要从保障空间隔离和保障I/O隔离两个方面进行研究。

空间隔离指将不同租户的数据写入不同闪存单元中,基于隔离的粒度,可划分为硬隔离和软隔离两类。

由于闪存晶圆是固态盘最小并行单元,闪存晶圆及以上粒度的硬隔离方案完全避免了多租户间的闪存争用问题,因此实现了强隔离性(包括IO隔离和GC隔离)。

而分组级和闪存块级粒度的软隔离方案则仅保障不同租户数据不会写入同一闪存擦除单元中,因此避免了GC干扰,但隔离性弱于硬隔离方案。

IO隔离则是将IO调度资源隔离分配给各租户,避免IO资源争用。

通过实验,我们发现图(c)和图(e)仅实现空间软隔离或者IO隔离均无法实现多租户间的性能隔离,且性能较差,但图(b)结合二者的协同方案则可以实现相当于图(a)硬隔离的强隔离性及性能。

从左图中可以发现,传统空间资源静态分区分配方案只能实现局部最优的性能,而空间资源共享竞争使用方案只能保障次优的性能。

因此,当前面向性能优化的技术提出了基于机器学习、启发式算法等的分配模型,实现了负载自适应地动态调整资源分配,最大化空间资源利用率,提升了固态盘整体性能,然而现有方案均以硬隔离分配为基础实现的动态分配,前文已经提到,硬隔离分配下动态调整开销较大,因此我们提出了新的一项基于软隔离分配的空间资源动态调整模型,以实现低开销、灵活的、负载自适应的空间资源动态分配策略,提高固态盘整体性能。

在固态盘中,存在一部分用户不可见的物理空间,称之为预留空间OPS,而上面提到的重删技术节省出大量空间资源,其本质和预留空间一样,都可以提高GC效率,降低写入放大,提升固态盘性能。

在多租户环境下,如何分配有限的空间资源(尤其是OPS资源),对固态盘性能有很大影响;

然而,传统分配方案,无论是静态分配的分区方案,还是自由竞争的共享方案,均无法最大化空间资源利用率。

Aggregate entropy代表数据熵,在使用数据缩减技术(重删、压缩)时,固态盘呈现不同的数据熵值,熵值越低代表数据缩减比例越高。

当数据熵较低时,数据缩减技术减少了闪存空间的消耗,由于上层应用不知道这种减少,因此这些减少的空间会被SSD自动当作额外的OPS,因此SSD本身配置的OPS大小(横坐标)对写放大(纵坐标)影响较小(例如左图中绿线Low(0%)。

而典型SSD中是没有使用数据缩减技术的,即左图中红线Typical SSDs(100%),数据熵值高,没有因为数据缩减技术而隐性配置了额外的OPS,因此SSD本身配置的OPS大小(横坐标)对写放大(纵坐标)影响大,当SSD配置的OPS较小时,GC开销大,存在明显的写入放大问题。

此处右图表现出OPS对读性能有影响,主要是因为GC迁移有效数据页会阻塞用户的读请求响应,而更高的OPS配置可以降低GC开销,进而减少对用户读请求的阻塞,提高用户读性能。

图中展示了传统分区方案性能随分区配置变化的关系曲线。我们可以发现,性能表现最佳的分区配置是动态变化的,例如三组实验中两共享租户间的最佳分区配置比分别为2:8、4:6和9:1,也因此难以事先确定最佳配置来及时人工调整分区配置。

而不恰当的分区配置又将导致糟糕的性能,例如蓝色实验显示,最差性能与最佳性能之间存在21%的性能差距。因此,传统分区方案并不能适应负载的动态变化性。

由于传统分区和共享两种方案均不能最大化空间资源利用率,本研究提出了WA-OPShare这个新的分配策略,其可以负载自适应的动态调整多租户间的空间资源分配,最终实现比传统方案更高的系统性能。

其主要包含两项设计方案,一个基于懒惰超级块合并的空间资源回收方案,用以回收已分配的低效空间;另一个是基于负载特征感知的空间资源分配方案,用于动态调整资源分配。

基于此发现,我们提出了一项负载自适应地动态调整OPS资源地分配方案,其包含两个策略:

首先是OPS的回收策略,我们基于闪存页无效时间,建立闪存超级块空间利用率模型,即,一个闪存超级块内无效页越多,且无效页存在的累计时间越长,该闪存超级块利用率越低,我们定期擦除回收利用率最低的闪存超级块,以避免空间浪费。

在回收的同时,我们通过将回收回的空闲空间返还给租户使用,以此模拟增加OPS资源的状态,并计算这些OPS资源给租户带来的性能收益。

基于上述计算出的收益值,我们的OPS动态分配策略将回收回的空闲OPS资源分配给性能收益最大的租户,以此实现OPS资源分配的动态调整并最大化资源利用率,提升固态存储系统性能。

本研究提出了一个超级块空间利用率模型,一方面和传统贪心策略一样,考虑尽可能小的迁移开销,另一方面,也综合考虑了每个闪存页对空间利用率的贡献程度。

例如,我们将一个闪存页被置无效和被擦除期间视为其ZombieTime,图中白色区域的面积就是一个超级块内所有数据页的ZombieTime之和,即代表了这个超级块内无效空间累计被浪费了多久,因此与空间利用率成反比。

通过定期回收空间利用率最低的超级块,释放出其浪费的无效空间,该方案可有效提升固态盘空间利用率及性能。

回收的空间资源交由OPS分配器进行再分配,分配原则为哪个租户获得这些空间后的收益最大,就分配给哪个租户,本方案将这个收益定义为增加单位OPS资源能带来的带宽提升,称之为边缘收益MG,如公式所示,OPS资源通过影响写放大,进而影响着租户的边缘收益值。

本方案在测量窗口和再分配窗口间交替运行,测量窗口用于测量每个租户的边缘收益值,再分配窗口期间将回收的空间资源重新分配给边缘收益值最大的租户,最终实现负载自适应的空间资源动态调整,提升系统性能。

本方案在SSD仿真平台SSDSim上进行了测试,实验包括2~8个并发运行的负载,对比了本方案WA-OPShare与传统分区及共享方案的性能,固态盘配置了25%的OP空间,实验负载包括如表所示的4个真实负载及顺序读写等另外4个合成负载。

与传统的分区和共享方案相比,本方案分别最高实现了40.3%和31.2%的带宽提升,即使是与通过广泛实验分析得到的最佳分区配置下的性能相比,本方案也实现了6.9%的带宽提升。

相比于分区方案性能严重依赖于分区配置的好坏,本方案可自适应动态调整OPS分配,无论何种初始分配状况,其均能实现比传统方案更好的性能。

特别的,如左下图所示,本方案在提升写密集型租户性能的同时未造成读密集型租户的性能损失。

我们的测试结果表明,与传统分区方案相比实现了7%~40%的带宽提升和10%~37%的写放大降低,不同于分区方案性能依赖于人工分区配置,我们的方案具备负载自适应性,无论初始分配如何,总能自动调整到最佳分配状态;

同时,与传统共享方案相比实现了约31%的带宽提升和17.5%的写放大降低;

由于OPS资源影响写性能而非读性能,因此我们的方案可以通过将读密集型租户的OPS资源动态分配给写密集型租户,在显著提升写密集型租户性能的同时,不牺牲读密集型租户的性能。

我们每150分组变更一次运行负载,以展示WA-OPShare的负载自适应性,图的上下半部分分别展示的固态盘的总带宽,及WA-OPShare方案下各租户间的OP空间分配情况。

我们可以发现WA-OPShare可以负载自适应的动态调整OP空间分配,并最终在4个阶段中分别实现了11%、14%、7%和25%的带宽提升。

总结而言,OPS资源的分配对多租户固态盘性能至关重要,传统分区方案和共享方案均无法最大化空间资源利用率,而本研究提出的方案可以负载自适应的动态调整OPS资源分配,进而提升固态盘性能。

当前面向性能公平、性能隔离和性能优化三类目标的服务质量保障技术研究,较好地解决了多租户固态盘发展面临的性能不公平、性能干扰和性能损失三大问题;

然而,现有工作也存在着资源分配模型单一、硬隔离策略不兼容RAID技术等问题,并随着固态盘技术的发展,出现了新的稀缺资源,因此如何针对这些问题提出更好的解决方案,以及如何解决新背景下的新问题,仍然有待进一步研究。

一方面,现有工作没有综合考虑固态盘时间和空间2个维度上的资源分配,即如何建立时间资源和空间资源分配的统一模型,结合服务质量要求和I/O 负载特征,为多个租户分别选择最佳的时间和空间资源分配,从而在保证服务质量的基础上最大化资源利用效率和总体性能. 例如,在保证性能公平的基础上,为以读请求为主的租户分配更多I/O 时间预算,为包含大量随机写请求的租户分配更多空间资源(以降低垃圾回收开销)。

另一方面,现有的以总体性能优化为目标的闪存空间动态分配方案都是基于硬隔离策略,存在空间分配粒度和重分配性能开销过大、单个租户并行带宽受限、不兼容固态盘内RAID 保护技术等问题。如何基于软隔离策略在多租户之间实现细粒度和低开销的动态空间分配,以最大化存储空间利用效率和总体性能,有待进一步研究。

此外,固态盘需要为每个租户打开至少一个独立的闪存块进行数据写入,以保证性能隔离,而且为租户分配更多开放闪存块能够有效提高冷热数据分离和垃圾回收的效率。

然而,出于可靠性因素,固态盘支持同时打开的闪存块最大数量受限. 开放的闪存块成为了一种稀缺资源,对固态盘能够支持的最大租户数量以及租户性能都具有关键影响。如何优化固态盘可靠性机制以提供更多的开放闪存块资源,以及如何在多租户之间分配开放闪存块资源以保证公平性和提高总体性能,都将成为重要挑战。