没有合适的资源?快使用搜索试试~ 我知道了~
SmartNIC JBOF上实现多租户存储分解
106Gimbal:在SmartNIC JBOF上实现多租户存储分解闵在宏华盛顿大学和三星电子赵晨星宇华盛顿大学摘要明柳威斯康星大学麦迪逊分校和VMware研究院魏家骏华盛顿大学阿尔温德·克里希那穆尔蒂华盛顿大学1引言塔潘·丘格华盛顿大学仁焕多三星电子新兴的基于SmartNIC的分散式NVMe存储由于其具有竞争力的IO 性能和低成本而成为一种有前途的存储基础设施。这些SmartNIC JBOF在多个共存的应用程序之间共享,并且需要平台确保公平性、QoS和高利用率。不幸的是,鉴于SmartNIC有限的计算能力和NVMe驱动器的不确定性,在当今的SmartNICJBOF上提供此类支持具有挑战性。本文介绍了Gimbal,这是一种软件存储交换机,可为位于同一位置的租户在以太网端口和NVMe驱动器之间传输IO流量它使用以下技术在SmartNICJBOF上实现高效的多租户:基于延迟的SSD拥塞控制算法、SSD写入成本的动态估计、以虚拟插槽粒度运行的公平调度器以及基于端到端信用的流控制通道。我们的原型系统不仅实现了高达x6.6的更好的利用率和62.6%的尾部延迟,而且还提高了复杂工作负载的公平性它还提高了多租户环境中的商业键值存储性能,吞吐量提高了1.7倍,尾部延迟平均减少了35.0%。CCS概念• 信息系统→闪存;存储管理;·硬件→外部存储。关键词拥塞控制,分散存储,SSD,公平性ACM参考格式:Jaehong Min,Ming Liu,Tapan Chugh,Chenxingyu Zhao,AndrewWei,In Hwan Doh ,and Arvind Krishnamurthy.2021年万向节:在SmartNIC JBOF上启 用 多 租 户 存 储 分 解 .在 ACM SIGCOMM 2021 会 议(SIGCOMM '21),2021年8月23日至28日,虚拟活动,美国。ACM,美国纽约州纽约市,17页。https://doi.org/10.1145/3452296.3472940允许免费制作本作品的全部或部分的数字或硬拷贝,以供个人或课堂使用,前提是制作或分发副本的目的不是为了盈利或商业利益,并且副本的第一页上有本声明和完整的引用。必须尊重作者以外的其他人拥有的本作品组件的版权。允许使用学分进行摘要以其他方式复制、重新发布、在服务器上发布或重新分发到列表中,需要事先获得特定许可和/或付费。 请求权限请发邮件至permissions@acm.org。SIGCOMM©2021版权归所有者/作者所有。授权给ACM的出版权ACM ISBN 978-1-4503-8383-7/21/08。. . 15美元https://doi.org/10.1145/3452296.3472940最近,存储分解引起了人们的极大兴趣,因为它允许独立扩展计算/存储容量并实现高资源利用率[1- 4,48 ]。随着数据中心网络速度已经过渡到100/200 Gbps,并且使基于闪存的SSD能够通过网络进行通信的NVMe-oF规范[ 15 ]正在被广泛采用,分散的NVMeSSD可以提供微秒级的访问延迟和数百万的IOPS。最 近 , 基 于 SmartNIC 的 分 散 式 存 储 解 决 方 案 ( 如 MellanoxBlueField和Broadcom Stingray [8,11])已经出现并变得越来越受欢迎,因为与传统的基于服务器的方法相比,它们的部署成本低,IO性能具有竞争力。 这样的存储节点通常包括一个商用的高带宽SmartNIC、特定于域的加速器(如RAID)、一个PCIe交换机和一组NVMeSSD,由独立电源支持。 以Broad-com Stingray解决方案为例。与传统的分散式服务器节点相比,StingrayPS1100R存储盒更便宜,功耗高达52.5W,同时提供140万4KB随机读取IOPS,卸载延迟为75.3毫秒。分散存储在多个租户之间共享,用于运行具有不同IO访问模式的不同类型的存储应用程序。高效的多租户机制应该最大限度地提高NVMe SSD的使用率,确保不同存储流之间的公平性,并在不使设备过载的情况下提供QoS保证。然而,今天的SmartNICJBOFs1缺乏这样的基本支持,这是不平凡的建设。首先,NVMeSSD不可预测的性能特征(随IO大小、读/写混合、随机/顺序访问模式和SSD条件而变化)使得很难估计存储设备的运行时带宽容量和每IO成本。例如,如第2.3节所示,碎片SSD只能达到干净SSD的16.9%写入带宽;向只读流添加5%写入可能导致总IOPS下降42.6%。其次,SSD具有复杂的内部架构,并且其控制器不公开各个IO命令的执行细节。 这使得租户的IO服务时间估计以及公平调度器设计变得复杂。最后,智能笔记本电脑是一种脆弱的计算设备。除了开车1JBOF = Just a Bunch of Flash107ARM A72 CPUARM A72 CPU××××SIGCOMM完整的网络和存储带宽,每个IO的可用计算量是有限的,即,对于 4KB和128KB读取,分别需要1毫秒和5毫秒为了应对这些挑战,我们设计并实现了Gimbal,这是一种软件存储交换机,可在多个共处的租户之间协调NVMe-oF命令。Gimbal借鉴了传统网络的思想,并将其应用于管理存储资源的领域。首先,Gimbal将SSD设备视为网络系统,并应用基于延迟的拥塞控制机制来估计其运行时带宽余量。其次,它引入了虚拟插槽概念和写入成本估计逻辑,以实现每IO成本的在线表征。最后,Gimbal通过端到端基于信用的流控制和请求优先级标记来公开SSD虚拟视图,以便应用程序能够设计灵活的IO优先级,速率限制和负载平衡机制。我们 在Broadcom Stingray PS1100R SmartNIC JBOF 上原 型化Gimbal,并与之前提出的具有隔离机制的多租户存储解决方案(即,Reflex [49],Parda [38],FlashFQ [70])。我们对合成工作负载的实验表明,Gimbal不仅实现了高达x6.6的更好利用率和62.6%的尾部延迟,而且还提高了各种复杂工作负载的公平性。 我们还移植了一个商业键值存储(即,RocksDB)在我们的分散存储平台上实现的blobstore文件系统上。我们的实现采用了分层的二进制大对象分配器,充分利用存储节点池它使用IO速率限制器和负载平衡器管理存储负载并基于存储设备的运行时负载来引导读取请求。我们的评估表明,Gimbal可以将应用程序吞吐量提高1.7倍,并将尾部延迟平均降低35.0%。2背景和动机实验2.1网络上的NVMe协议NVMe-over-Fabrics(NVMe-oF)[15]是一种新兴的存储协议,用 于 支 持 现 代 存 储 器 设 备 的 分 解 ( 例 如 , NAND , 持 久RAM)。它定义了一种通用架构,该架构支持一系列存储网络结构(例如, RDMA 、 TCP 、光纤通道)。 NVMe-oF 扩展了NVMe基础规范[14]和控制器接口。存储客户端(即, NVMe-oF启动器)首先连接到存储服务器(也称为NVMe-oF目标),然后向远程控制器发出NVMe命令。 NVMe-oF目标包括两个主要组件:NVMe目标核心和结构传输。在与启动器建立连接之后,它会在IO提交队列和IO完成队列之间创建一对一的映射。NVMe-over-RDMA依赖于所有操作的内存映射IO主机和设备都执行主机存储器的存储器读/写,以修改相关的数据结构(包括提交队列、完成队列、数据缓冲区)。NVMe-over- RDMA使用不同的RDMA动词来启动和完成IO流。具体来说,RDMA_SEND用于向目标发送提交封装,并向主机发送完成封装。所有数据传输都在NVMe-oF 目标上使用RDMA_READ 和RDMA_WRITE动词执行。因此,数据传输阶段需要SmartNIC加速器100Gbps QSFP28端口ARM A72 CPUL2/L3 + DDR4 DRAMPCIe根复合体NVMe驱动器0NNVVMedddrirvivee00PCIe交换机图1:Stingray PS1100R基于SmartNIC的分散式存储的架构框图。没有主机端计算周期。此外,与NVMe规范不同,NVMe-oF没有为存储控制器引入中断机制相反,主机中断由主机结构接口生成(例如,主机总线适配器、RDMA NIC)。具体地,在NVMe-over- RDMA下的读/写的请求流如下:(a)客户端主机使用RDMA_SEND 向NVMe- 〇 F目标发送NVMe命令上限(包括NVMe提交队列条目和分散-聚集地址列表);(b)目标进程从提交队列拾取命令在写入时,它通过RDMA_READ获取客户端数据;(c)目标存储控制器然后在SSD上执行读取或写入IO experition;(d)在读取的情况下,NVMe-oF目标发出RDMA_WRITE以将数据从本地缓冲区传输回客户端主机存储器;(e)NVMe-oF目标进程捕获完成信号,构建响应封装(其包含完成队列条目),并通过RDMA_SEND发送此完成封装。一些NVMe-oF实现允许内联小数据块(例如,4KB),从而减少了RDMA消息的数量并改善了IO延迟。2.2SmartNIC JBOF最近,数据中心出现了智能数据库[5,8,10- 13 ],不仅用于加速数据包操作和虚拟交换功能[ 6,36 ],而且还卸载了通用分布式工作负载[ 35,54,58,59 ]。通常,SmartNIC包括通用计算基板(例如,ARM或FPGA)、域特定加速器阵列(例如,密码引擎、可重新配置的匹配动作表)、板载存储器和用于分组转向的业务管理器。大多数SmartCore都是低配置PCIe设备,增加了现有数据中心基础设施的增量成本,并显示出廉价扩展仓库计算能力的潜力。最近,硬件供应商将SmartNIC与NVMe驱动器结合起来作为分散存储,以取代传统的基于服务器的解决方案,从而提高成本效益。图1展示了Broadcom Stingray解决方案[8]。它包含一个PS1100RSmartNIC、一个PCIe载板、几个NVMe SSD和一个独立电源。 载板上装有SmartNIC和NVMe驱动器以及连接组件的板载PCIe交换机。SmartNIC具有8个3.0GHz ARM A72 CPU,8 GB DDR4-2400 DRAM(以及16 MB缓存),FlexSPARX [7]加速引擎、100 Gb NetXtreme以太网NIC和PCIeGen3 根 复 杂 控 制 器 。 PCIe 交 换 机 提 供 16 个 PCIe 3.0 通 道(15.75GB/s理论峰值带宽),可支持2 8或4 4 PCIe分叉。一个Stingray分解存储盒与四个三星DCT983 960GB固态硬盘,是上市为3228.0美元,与可能低得多的散装价格,因此比基于Xeon的一个具有类似的IO配置便宜得多。毫不奇怪,它的功耗也低于至强Gimbal:在SmartNIC JBOFSIGCOMM108分散的服务器节点。 Stingray PS1100R存储节点的功耗最高为52.5W,接近Xeon存储节点(192.0W)的四分之一。第5.1节描述了硬件配置。我们使用Watts Up Pro仪表[17]来测量壁功率。SmartNIC JBOF上的软件堆栈与基于Xeon的服务器JBOF的工作原理类似,不同之处在于NVMe-oF目标运行在SmartNICwimpy内核而不是x86内核上。IO请求处理还包括如上所述的五个步骤SmartNICJBOF实现了与服务器JBOF竞争的性能。 在卸载读/写延迟方面,我们为fio [9]配置一个未完成的IO,并随着请求大小的增加测量平均延迟(图2)。 当提供随机读取时,SmartNIC解决方案在请求大小不大于64 KB的五种情况下平均增加1.0%的延迟。如果IO块大小为128 KB和256 KB,则延迟差异分别上升到20.3%和23.3%。 对于顺序写入,与服务器相比,SmartNIC执行仅增加2.7 秒,在所有情况下平均如此。 我们进一步分析了NVMe-oF目标的延迟,并比较了服务器和SmartNIC案例。我们发现,读取和写入最耗时的部分是NVMe命令执行阶段(包括写入提交队列、在SSD内处理命令以及从完成队列捕获信号)。 这就解释了为什么SmartNIC和服务器JBOF上的launch是相似的。 对于4KB/128 KB随机读取,它分别为服务器和SmartNIC贡献92.4%/86.1%和88.8%/92.2%。考虑到带宽,SmartNIC JBOF也能够饱和存储限制,但使用更多的核心。 本实验测量了随着内核数量的增加,最大4KB随机读取和顺序写入带宽。 对于每个FIO配置,我们增加IO深度以最大化吞吐量。 如图3所示,该服务器使用两个内核分别实现了1513KIOPS和1316 KIOPS。 在SmartNIC的情况下,它能够为3个ARM内核提供类似的读写流量。一个核足以在大请求大小下实现最大带宽(即,128KB)。2.3多租户分散存储不同类型的存储应用程序共享分散的存储节点,因此,我们需要为不同工作负载之间的多租户和隔离提供支持。 今天的NVMe SSD提供了一些隔离支持。例如,NVMe命名空间是提供独立寻址并通过主机软件访问的逻辑块地址的集合。然而,命名空间并没有在物理上隔离SSD数据块,访问不同命名空间的请求仍然会相互干扰。理想的机制应该实现以下目标:(1)提供跨租户的公平性;(2)保持高设备利用率;(3)在存储节点处表现出低计算开销和可预测的延迟我们的特征表明,现有的SmartNICJBOF对多租户的支持有限,因为 IO干扰的多个方面会导致存储吞吐量的不公平资源共享在图4中,牺牲流使用32个并发I/O发出随机的4KB读取,我们注入具有各种IO大小、强度和模式的相邻流总之,无论IO大小和模式如何,具有高强度的流总是获得更多带宽。例如,具有随机性的相邻流的带宽128 KB读取速度为377 MB/s,比只有一个并发IO时的受害者低58.4%但是,随着并发IO增加到8,它急剧上升到1275 MB/s,并获得比受害者高3.1倍此外,当相邻流使用写入模式时,受害者的带宽显著降低 当邻居具有相同的IO大小和强度但执行写入时,受害者显示出59.1%的带宽减少。(附录D描述了更多的特征。)下面我们总结了实现JBOF的高效多租户机制的三个挑战。问题1:IO吞吐量容量随工作负载特性(例如,随机与顺序的,读V.S. 写入、IO大小)和SSD条件。由于请求合并和预写日志记录,现代NVMe SSD更倾向于顺序访问[21,29]。 在分解设置下,由于请求交织,整体IO访问模式变得更加随机(即,IO混合器效应)并影响IO吞吐量。SSD也会遇到读/写干扰。为了最小化NAND访问争用,SSD将读/写分布在不同的数据通道和NAND芯片上[31,34]。写操作通常比读操作慢(除非它们直接从SSD控制器写缓冲区提供),并且会导致写前擦除损失。 闪存页面在接受新值之前必须清除其数据块。这会导致写入放大问题[21],其中写入存储介质的实际数据量大于预期大小。此外,由于NAND存取粒度和裸片级并行性,SSD在不同IO大小下呈现不对称性能例如,在三星DCT 983 960 GB SSD上,128 KB读取可以达到3.2GB/s,而4KB的最大值为1.6GB/s。SSD状况通常以干净闪存页的数量及其位置分布为特征,取决于先前的写入历史。SSD使用闪存转换层(FTL)将逻辑块映射到物理块。新写入首先附加到预擦除的块为了提高写入性能和耐久性,它还采用损耗均衡(即,在所有数据块之间平衡编程/擦除周期)[21,81]和垃圾收集[21,68](即,补充有效块),这使估计SSD状况复杂化。当SSD高度碎片化时,可用块较少,并且垃圾收集通常被触发,这会损害写入和读取性能(在附录A中描述)。问题2:每IO成本不仅随着读写混合而急剧变化,而且还随着IO并发性和IO大小而急剧变化。 当在SSD控制器处存在执行争用、在设备队列处存在线头阻塞、在NAND通道/芯片/管芯处存在访问争用或SSD内部活动(例如, 垃圾收集)。SSD供应商不愿披露设备执行统计数据,因此很难确定每IO成本。 这使得多个租户之间的公平IO资源分配变得复杂。以前的研究[49,60,73]应用近似的离线分析IO成本模型,无法准确捕获SSD的动态运行时状态。问题3:多租户分散存储的公平性意味着每个租户应该从SSD控制器接收相同的请求服务时间控制器的请求服务时间对主机软件栈是不透明的,使IO调度器设计复杂化。 即使现代NVMe SSD应用多队列接口[26,47,75]进行多路复用和多核SIGCOMMMin和Liu等人109服务器-RND-RD服务器-SEQ-WR SmartNIC-RND-RD SmartNIC-SEQ-WR∼3002502001501005004 81632 128256200015001000500012 345 6 781,0005000IO请求大小(KB)图2:SmartNIC和服务器JBOF之间的读/写延迟比较核心编号(#)图3:随着服务器和SmartNIC JBOF上的内核数量的增加,读取/写入吞吐量。邻居流图4:不同工作负载中的多租户干扰。(RD:读,WR:写,QD:并发I/O数)可扩展性,设备通常以简单的循环方式在IO队列之间调度请求,从而阻碍了公平性支持。先前的工作[49,60,64,70,70]应用赤字/加权轮询调度或其变体来从不同租户发出IO。 在这种方法中,确定操作的亏损值/权重对于实现公平性至关重要。然而,如上所述,简单地使用IOPS,带宽(字节/秒)或其他一些合成静态指标(例如虚拟IOPS [73],近似IO成本模式[60]或SLO感知令牌[49])无法捕获确切的IO执行时间。例如,考虑一个4KB的随机读取流与一个64KB的随机读取流混合,具有相同的类型和IOPS(附录中的图20如果我们使用IOPS作为度量标准,这两个流达到91.0MB/s和1473.0MB/s,这表明较大的IO主导SSD执行;如果我们使用带宽,较小的IO可以提交四倍多的请求。其他一些作品提出了基于时间片的IO调度器(例如,Argon [77]、CFQ [25]、FIOS[70]),提供具有独占设备访问的时间段。这些方法不仅违背了高度整合下的响应性,而且忽略了IO容量不是恒定的事实(如上所述)。2.4基于SmartNIC的分解与服务器相比,智能笔记本电脑的计算核心很弱。当实现相同的存储负载时,SmartNICJBOF上的请求尾部延迟更高。例如, 在服务器/SmartNIC上,如果提供3000 MB/s 4 KB顺序写入,则第99.9个延迟为34/66秒。 为了充分驱动存储读/写带宽,SmartDisk对每个IO请求几乎没有计算余量。 我们评估了4 KB/128 KB随机读取和顺序写入所实现的带宽,并将其添加到每IO处理成本中(图16)。在这种情况下,我们使用所有NIC核心对于4KB的读和写请求,最大可容忍延迟限制分别为1s和5s。然而,如果请求大小是128KB,则在没有带宽损失的情况下,对于读取和写入,最多可以增加5 秒和10 的执行成本。因此,我们只能为每个存储IO添加最少的计算,并且卸载量取决于存储流量配置文件。幸运的是,正如我们在这项工作中所展示的,有限的智能NIC计算能力足以实现软件存储交换机,并为IO编排的入口/出口数据平面配备QoS技术。3SmartNIC作为交换机本节介绍我们的Gimbal设计和实现,Gimbal是一种具有高效多租户支持(即,高利用率、低延迟和公平性)。图5:Gimbal存储交换机架构概述。在Broadcom Stingray PS1100R上,最多有4个NIC端口和4个NVMe SSD。我们首先描述了它的高层架构,然后详细讨论每个系统组件。3.1概述图5展示了软件存储交换机的整体架构,其灵感来自于当今 它包括每个SSD的管道,这些管道协调NIC端口和NVMe SSD之间的IO流。 每个流水线配备有三个主要组件:(1)入口处的IO调度器,其提供每个租户的优先级排序,并使用标准化的IO单元(称为虚拟槽)以赤字循环调度(DRR)执行IO。提出了一种公平的缓存抽象;(2)基于延迟的出口拥塞控制机制,通过在运行时的IO完成时间来此外,它采用速率调步引擎来缓解提交期间的拥塞和IO突发;(3)写成本估计器,基于延迟动态校准SSD写成本,并将该信息提供给其他系统组件。它实现了一个近似的性能模型,可以适应工作负载和SSD条件。交换机跨一个或多个专用SmartNIC核心运行,并侦听活动NIC端口。 与其他作品类似[49],租户包含一个RDMA qpair(用于请求发送/接收)和一个NVMe qpair(用于存储命令提交/完成)。 Gimbal专注于实现高效的SSD共享,并依赖于远程传输协议(例如,RDMA)来解决网络内争用。3.2基于延迟的SSD拥塞控制SSD具有复杂的内部架构。 为了估计其瞬时容量余量,我们采用黑盒方法,并借用网络域的拥塞控制机制。具体来说,我们将SSD视为一个网络系统,其中控制器、电路和NAND芯片分别充当路由器、连接管道和终端主机。因此,可以使用类似TCP的探测技术来测量其可用带宽。然而,在这方面,服务器-RND-RD服务器-SEQ-WR SmartNIC-RND-RDSmartNIC-SEQ-WR受害者邻居万向节存储开关端口1分层IO接口递延双令牌桶NVMe接口读写端口2平虚拟插槽端口m活性费率写入成本控制估计器基于时延的拥塞控制SSD拥塞控制出口CQDRR入口信用管理NVMe-oF目标传输IDSSD虚拟视图存储应用……延迟(us)吞吐量(KIOPS)带宽(MB/s)基于信用的物流控制4KB-RDQD32每租户优先级队列4KB-RDQD128128KBRD-QD1128KBRD-QD84KB-WRQD324KB-WRQD128Gimbal:在SmartNIC JBOFSIGCOMM110−≤≥≤这是重要的,因为(1)由于FTL映射逻辑和IO请求干扰,SSD内部并行性是未知(2)内务操作(诸如垃圾收集)是不可预测的,并且在被触发时消耗不确定的带宽量;(3)SSD是没有请求丢弃的无损系统。因此,我们开发了一个定制的基于延迟的拥塞控制算法来解决这些挑战。传统的基于延迟的算法(例如,TCP Vegas [27]使用测量的RTT来计算实际带宽,并将带宽差(实际和预期之间)作为拥塞信号来调整其传输窗口。然而,带宽度量对于SSD是无效的,因为它们的不透明并行性[28,45]。 SSD采用多个NAND通道、平面和裸片来提高其带宽,以便并发IO请求可以并行执行并独立完成。因此,IO延迟可能不指示所消耗的SSD带宽。此外,现代SSD通常应用基于4KB页面的映射机制。它将一个大的IO拆分为多个4KB的块,然后尽可能地将它们分散到不同的通道。因此,延迟与IO大小不是线性的,并且不同大小的IO将实现不同的最大带宽。相 反 , 我 们 探 索 直 接 使 用 IO 延 迟 作 为 反 馈 ( 如 Swift[50]),并将测量和目标水平之间的延迟差异作为拥塞信号。这是因为我们观察到SSD访问延迟对设备负载非常敏感,并且对拥塞有脉冲响应(参见附录中的图17)。实现这种机制的一个关键问题是确定延迟阈值。我们从一个固定值开始(例如,2ms),并使用EWMA(指数加权移动平均)测量平均实现延迟,其中 ���表示权重。 我们发现2 ms固定阈值仅对大IO(如64/128 KB)有效,但不能及时捕获小IO的拥塞。降低阈值(例如,<1ms)也不会工作,因为它会损害设备利用率。因此,我们提出了一种动态延迟阈值缩放方法。它的工作原理类似于Reno具体来说,我们设置最小和最大阈值,并根据EWMA IO延迟调整该值,���ℎ��������� (���)=���ℎ��������� (���− 1)−������ ×( ℎ��������� (���− 1)−���������������������������������)当EWMA延迟接近阈值时,它会立即检测到延迟增加。 一旦EWMA IO延迟超过当前阈值,它就会生成拥塞信号,并且阈值将增加到当前阈值和最大阈值的中点,增加的幅度为(���N������������()=(���N���������(���1)+���N���������()���������)/2)。因此,如果EWMA延迟接近最大阈值或快速增长,则Gimbal会更频繁地获得拥塞信号。调整最小/最大阈值应考虑拥塞检测的效率、设备利用率、收敛时间以及闪存介质特性(即,SLC/MLC/TLC)。3.3速率控制引擎在拥塞信号下,Gimbal应用速率调步机制来决定IO提交速率。 由于以下原因,传统的基于拥塞窗口的方法是无效的。首先,由于存储流包含各种大小和类型的IO,因此相同的窗口大小(即,未完成的字节)将导致不同的不同IO模式的带宽其次,SSD内部写入缓冲区吸收的短突发写入IO将导致可用窗口大小显著增加结果,将提交更多的IO,压倒设备的能力,并且拥塞控制系统将遭受性能波动。相反,我们使用一个令牌桶算法的速率调步机制来解决这个问题。此外,由于单桶方法将以错误的速率提交写入IO(即,读取速率)并导致严重的延迟增量,Gimbal采用双令牌桶算法,该算法由用于读取和写入的单独桶组成(参见附录C.1)。我们根据延迟阈值(延迟������������阈值,延迟������������阈值,延迟阈值)和测量的EWMA延迟(延迟阈值)定义了四种拥塞状态,并在每次IO完成时调整目标提交速率���������������������具体来说,这四种状态是:过载(overloaded)(过载)������������拥塞���������)、拥塞避免��������������������� ���������������������<���������������������( ������������������������������������������<��� 拥 塞 ��������� 避 免 ��������� ) 和 利 用 不 足(������������<���未���������充分���������)。对于拥塞避免和拥塞状态,Gimbal递增地改变目标速率,以探测更多的带宽或降低提供的负载。速率增加/减少拥塞避免/拥塞状态的IO完成大小。对于过载状态,速率立即被调整为低于IO完成速率,并且Gimbal丢弃桶中剩余的令牌以避免突发提交。Gimbal定期测量这方面的完成率。此外,当观察到未充分利用状态( 算法1中的参数)时,Gim-bal以更快的速率增加目标速率。Gimbal以上述方式处理过载和未充分利用状态,因为增量调整只有在IO模式不改变时才有意义;增量调整对于动态IO模式收敛得不够快。具体地,SSD的最大带宽可能根据读取和写入混合比率而显著不同。在碎片SSD(在第5.1节中定义)上,随机写入带宽约为180 MB/s,而随机读取带宽超过1600 MB/s。因此,如果模式从重写入转变为重读取,则速率收敛缓慢万向节受CUBIC[40]和TIMELY[62]的启发,采用积极的探测策略来识别所需的工作点。只有在SSD耗尽内部队列中的大部分IO之前,目标速率不足以提交IO时,才会出现此情况。另一方面,当模式在相反方向上移位时(即,从读重到写重),导致SSD以其峰值带宽执行,但延迟高于���1000������������������。在这种情况下,万向节首先确定当前完成率,并将目标率设置为完成率。然后,它进一步降低目标速率,降低的量等于已完成IO的大小因此,Gimbal将目标速率保持在低于SSD峰值容量的速率,算法1描述了拥塞控制逻辑。提交函数在每次请求到达和完成时调用,因此它以自计时方式工作。通过拥塞控制机制,SSD将平均延迟保持在稳定范围内,从而提供与设备最大值相当的性能它可以调整每个SSD的IO请求速率,同时消除不必要的111×←≥−×←––××SIGCOMM设备内部队列中的等待时间至关重要的是,它使我们能够确定SSD在运行时的性能余量。3.4编写成本估算读取和写入的性能不对称是NAND设备的一个众所周知的通常,由于垃圾回收导致的写入放大,写入比相同大小的读取消耗更多的资源。为了捕捉这一点,我们引入了写成本参数-例如,让给定SSD的最大读取和写入带宽(独立测量)分别为1000 MB/s和300MB/s。在这种情况下,写入成本为3.3,我们假设700 MB/s可能用于运行写入的内部任务我们无法直接从SSD获得此值相反,我们使用基线设置作为最坏情况,并根据当前SSD状态动态校准写入成本可以获得通过预校准或从SSD规格中校准,因此它是特定SSD的固定参数我们定期更新写成本在一个加法(加法-减少乘法-增加)的方式。 如果写EWMA延迟低于最小延迟阈值,则写成本降低,否则增加到(+)/2。当我们观察到延迟增加时,这使得万向节能够快速收敛到最坏情况通过使用延迟来调整写入成本,Gimbal考虑了SSD设备的写入优化。具体来说,SSD封装了一个小的DRAM写入缓冲区,并在最佳时间将用户数据批量刷新到实际NAND之前首先将用户数据存储在缓冲区中[46]。当写入提交速率低于写入缓冲区消耗能力时,写入将立即以一致的低延迟提供服务。在这种情况下,与其他在读取和写入之间仅具有固定成本比的方案不同,万向节将成本降低到1(即,= 1),same as the read cost.当写入速率上升超过写入缓冲器服务容量时,其延迟和写入成本增加。3.5两级分层IO接口和虚拟插槽我们将NVMe SSD的每IO成本定义为每字节传输数据的NAND内操作的平均占用率 它不是恒定的,受到许多因素的影响(第2.3节)。 该指标反映了SSD控制器如何执行不同类型的NAND命令,例如将大请求拆分为多个小块,由于访问争用而在内部队列中阻塞等。IO成本应被视为确定公平性的关键评估参数,因为即使两个存储流实现相同的带宽,它们也会消耗SSD中显著不同的资源量。IO成本很难衡量,因为SSD不会披露NAND及其数据通道的详细执行统计数据IO成本也可能因操作粒度而有所偏差例如,一个128KB的大IO可能会在内部分解为单个的4KB请求,并且只有当所有单个请求都被处理完时才被视为完成。相比之下,如果我们要流水线化32个4KB操作的序列,在每次完成后发出一个新的,SSD内部队列占用率将增加,即使可观察到的未完成字节与128KB IO相同。因此,我们使用虚拟插槽的概念,它是一组IO算法1具有速率调整的拥塞控制1:procedureSUB mI ssI on()2:update_token_buckets()3:req = DRR.dequeue()4:bucket dual_token_bucket[req.io_type]5:如果bucket.tokens请求大小,则6:io_outstanding += 17:submit_to_ssd(req)8:返回1:procedure完成Ion()2:state = update_latency(cpl. io_type,cpl.latency)3:如果状态==重载,则4:目标率=完成率5:discard_remain_tokens(dual_token_bucket)6:如果状态==拥塞或过载,则7:target_rate= cpl.size8:否则,如果状态==拥塞_避免,则9:target_rate+= cpl.size10:其他11:target_rate+=100× cpl.size12:返回1:过程UpdA te_lA tency(Io_type,lA tency)2:用于io_type的lat_mon延迟监视器3:lat_mon.ewma =(1-纬度)lat_mon.ewma_lat +纬度延迟4:iflat_mon.ewma >������������lat_mon. ewma,则5:lat_mon.thresh������������=6:状态=过载7:否则,如果lat_mon.ewma> lat_mon.threshold,则8:lat_mon.thresh =(lat_mon.thresh +lat_���������mon.thresh+ lat_mon.thresh)/29:状态=拥塞10:else iflat_mon.ewma >������������如果lat_mon. ewma>则11:lat_mon.thresh =lat_mon(lat_mon.thresh -lat_mon.ewma)12:状态=拥塞避免13:其他14:lat_mon.thresh =最大值(lat_mon.thresh -lat_mon.ewma)15:状态=未充分利用16:返回状态总共高达128KB(例如,它可能包含多达1个128KB或32个4KB IO命令),并以虚拟插槽的粒度管理IO完成。当槽中的所有操作完成时,虚拟槽完成每个租户始终具有相同数量的虚拟插槽。如果租户用完了其虚拟插槽,则IO调度器推迟后续IO,直到其虚拟插槽之一完成并变得可用。Gimbal将每个租户的虚拟插槽数量保持在最低限度,并根据大小调整IO成本差异虚拟插槽机制提供了提交速率的上限,并保证任何大小的IO模式都能获得SSD内部资源的公平部分 它还解决了欺骗性空闲问题[44](在许多工作保存公平排队队列中发现),因为分配的插槽不能被其他流窃取。如果只有一个活动租户,Gimbal会将单个租户中的虚拟插槽数量阈值设置为达到设备最大带宽所需的最小数量。当更多的活动租户竞争存储时,虚拟插槽会均匀分布。由于每个租户都应该至少有一个虚拟插槽来执行IO,因此在高度整合的情况下,虚拟插槽的总数可能会超过112×וGimbal:在SmartNIC JBOF上实现多租户存储分解 SIGCOMMGimbal将虚拟插槽概念集成到DRR调度器中,并确保每个租户的插槽数量相同。类似于公平分配机制[33,37],DRR调度器将所有具有请求的租户划分为两个列表:活动,其中列表中的每个租户都分配了虚拟插槽;延迟,其中其租户没有可用的虚拟插槽并等待未完成的请求完成。此外,当租户移动到延迟列表时,调度器将赤字计数设置为零,并且不增加租户的赤字计数器。一旦租户接收到新的虚拟槽,它就移动到活动列表的末尾,并且调度器恢复增加赤字计数。Gimbal对写入IO使用成本加权大小,而不是实际大小()来获取虚拟插槽中的写入成本。只有当亏损计数大于加权大小时,才能提交IO例如,如果当系统在写成本为3的情况下操作时租户具有128KB的写请求则仅在活动列表中满足租户的三个循环之后才允许租户发出操作(每个循环更新与租户相关联的赤字计数)。每个租户的优先级队列。Gimbal的入口管道为每个租户维护优先级队列。优先级由客户端标记,并在NVMe-oF请求上携带。 当在可用虚拟槽内调度租户时,调度器以循环方式在这些优先级队列上循环,使用每个队列的权重从队列中选择IO请求,并构造IO请求束。这种机制允许客户端优先处理延迟敏感的请求,而不是面向吞吐量的请求。3.6基于信用的端到端流量控制交换机在客户端和目标端的每租户队列之间应用端到端的基于信用的流控制。 这可以控制远程NVMeSSD的未完成IO数量,并避免交换机入口处的队列堆积。与网络设置不同,其中信用意味着固定大小的数据段或flit [23,30],在我们的情况下,信用的数量表示IO的数量,而不管设备可以在不影响QoS的情况下提供的大小。它是从拥塞控制模块(如上所述)获得的。租户的总信用是分配的虚拟插槽数乘以最近完成的插槽的IO计数如果总信用大于未完成IO的量,则租户提交IO代替使用单独的通信信道进行信用交换,我们将分配的信用捎带到NVMe-oF完成响应中(即,第一预留字段)。 与用于网络的传统的基于信用的流控制类似,我们的信用交换/更新方案(如N23 [51,52])也最小化信用交换频率并避免信用溢出。然而,它的不同之处在于我们的协议(1
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功