没有合适的资源?快使用搜索试试~ 我知道了~
ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月使用存储类内存的键值HIWOT TADASE KASSA,密歇根大学,美国JasonAKERS,MRINMOY Ghosh和ZHICHAO CAO,Meta,Inc.,美国VAIBHAV GOGTE和RONALD DRESLINSKI,密歇根大学,美国数据中心中基于闪存的高性能键值存储利用大量DRAM来缓存热数据。然而,由于DRAM的高成本和功耗,具有较低DRAM/计算比率的服务器设计变得流行。这些低成本服务器通过降低服务器工作负载密度来实现横向扩展服务这将提高整体服务可靠性,从而降低可扩展工作负载的总拥有成本(TCO)然而,对于具有大存储器占用空间的键值存储,这些减少的DRAM服务器由于IO利用率和数据访问延迟两者的增加而降低性能在这种情况下,提高分片数据库性能的标准做法是减少每台机器的分片数量,这会降低DRAM低成本服务器的TCO优势在这项工作中,我们探索了一个实用的解决方案,以提高性能,降低成本和功耗的键值存储在DRAM约束的服务器上运行,通过使用存储类存储器(SCM)。DIMM形状因子中的SCM虽然比DRAM慢,但在用作DRAM的大扩展时比闪存快得多借助ComputeExpress Link等新技术,我们可以通过SCM的高带宽和低延迟连接来扩展服务器的内存容量在本文中,我们使用AppDirect模式下的英特尔Optane PMem 100系列SCM(DCPMM)来扩展RocksDB(Meta最大的键值存储之一)现有单插槽平台部署的可用内存我们首先在RocksDB中设计了一个混合缓存,以分层地利用DRAM和SCM然后,我们在Meta(ChatApp、BLOB Metadata和Hive Cache)中描述了三个最大的RocksDB用例的混合缓存性能我们的研究结果表明,我们可以实现高达80%的吞吐量提高和20%的P95延迟改善现有的小型DRAM单插槽平台,同时保持了43-48%的成本改善我们的 据我们所知,这是第一次在商业数据中心研究DCPMM平台。CCS概念:·信息系统→存储类存储器;闪存;附加关键词和短语:关键值存储、RocksDB、数据中心、英特尔Optane内存、持久内存、优化ACM参考格式:Hiwot Tadese Kassa ,Jason Akers ,Mrinmoy Ghosh,Zhichao Cao ,Vaibhav Gogte,and RonaldDreslinski.2022. 使用存储类内存的键值存储的功耗优化部署ACM Trans. 存储18,2,第13条(2022年3月),26页。https://doi.org/10.1145/3511905作者T. 卡萨河谷Gogte和R.Dreslinski,密歇根大学,密歇根州安娜堡,美国;电子邮件:hi-wot@umich.edu ,rdreslin@umich.edu,vgogte@umich.edu; J.Akers,M.Ghosh和Z.Cao,Meta,Inc., Menlo Park,CA,USA;电子邮件:jasonakers@fb.com,mghosh@fb.com,zhichao@fb.com。本作品采用知识共享署名国际4.0许可协议进行许可。© 2022版权归所有者/作者所有1553-3077/2022/03-ART13 $15.00https://doi.org/10.1145/351190513ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月十三日:2H. T. Kassa等人1介绍Meta的高性能存储服务器有两种类型。第一个,2 P服务器,有两个sock-ets计算和一个大的DRAM容量,如图1(a)所示,并提供了良好的perfor-曼斯在高功耗和成本的代价相比之下,1P服务器(图1(b))有一个计算插槽,DRAM与计算的比率是2P服务器的一半。1P服务器的优势是降低成本、功耗和增加机架密度[23]。 对于DRAM占用空间较小的服务,1P服务器是显而易见的选择。Meta的大量服务都属于这一类。然而,一类可能无法在精简的DRAM服务器上充分执行并且可能无法利用Meta处的1P服务器的成本和功率优势的工作负载是基于闪存的键值存储。许多这些工作负载使用RocksDB [26]作为其底层存储引擎。RocksDB利用DRAM来缓存经常引用的数据,以实现更快的访问。这些工作负载的低DRAM与存储容量比率将导致高DRAM缓存未命中,从而增加闪存IO压力、延长数据访问延迟并降低整体应用程序吞吐量。Meta中基于Flash的键值存储被组织成分片。 提高DRAM受限服务器上每个分片的性能的方法是减少每个服务器的分片数量。但是,这种方法可能会导致所需服务器总数的增加,降低每台服务器的存储利用率,并削弱1P服务器的总拥有成本(TCO)优势。这让我们在1P服务器和2P服务器之间做出艰难的决定,1P服务器具有成本效益,但牺牲了性能,2P服务器具有出色的性能,但成本和功耗都很高我们在本文中探索的另一种解决方案是使用最新的英特尔Optane PMem 100系列SCM(DCPMM)[45]来有效地扩展1P服务器平台的易失性内存容量我们使用SCM构建1P服务器平台的新变体,如图1(c)所示 在1P服务器变体中,1P服务器的存储器容量通过在连接到CPU存储器控制器的同一DDR总线上提供与DRAM一起的大型SCM DIRECT来扩展。存储类存储器(SCM)是一种兼具DRAM和存储器特性的技术DIMM形状因子的SCM在过去已经被广泛研究,因为它们具有吸引人的优点,包括字节寻址能力、数据持久性、比DRAM更便宜的每GB成本、高密度以及它们相对低的功耗。这导致了大量的研究集中在SCM作为内存和持久存储的用例工作范围从不同的内存层次结构配置优化[32,48,49,72,89],新颖的编程模型和库[16,79,87]和文件系统设计[17,20,65]来采用这种新兴技术。 过去的研究主要集中在理论或模拟系统上,但英特尔最近发布的支持DCPMM的平台激发了基于生产就绪平台的研究[6,30,47,55,68,69,80,81,85,86]。DRAM、DCPMM和闪存的存储器特性如表1所示。 即使DCPMM比DRAM具有更高的访问延迟和更低的带宽,但它具有更大的密度,更低的成本,更低的功耗,其访问延迟比闪存低两个数量级。目前,DCPMM模块有128 GB、256 GB和512 GB的容量,比数据中心环境中通常为4到32 GB的DRAM大得多因此,我们可以使用DCPMM获得更大的密度 除了将DDR总线用于SCM之外,通过最近的高带宽和低延迟IO互连(如Compute Express Link(CXL)[1,50]),我们可以使用SCM扩展服务器的内存容量,而不受DDR总线的限制。 如果我们有效地(成本、功耗和性能)使用这种内存作为DRAM的扩展,那么这将使我们能够构建具有大内存和存储的密集、灵活的服务器,同时使用更少的磁盘并降低TCO。虽然最近的工作证明了SCM的特点[47,85],性能通过利用SCM在大型商业数据中心中实现的增益仍然没有答案。 如何有效地配置DRAM和SCM以使大规模服务受益,这是一个悬而未决的问题使用存储类内存的键值存储的功耗优化部署十三日:3ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月图1.一、 具有不同DRAM大小的服务器配置:(a)具有256 GB内存的服务器,对DRAM的高命中率和低IO利用率。(b)服务器内存减少(64 GB),DRAM命中率降低,IO利用率提高。(c)具有减少的存储器和添加到存储器控制器的SCM的服务器,由于优化的数据放置,对DRAM和SCM的高命中率,这降低了IO利用率。表1.从产品规格中获取的DRAM、SCM和每个模块的闪存的存储器特性示例特性DRAMSCMFlash空闲读取延迟(ns)7517085,000读取带宽(GB/s)152.41.6功率(mW/GB)375985.7每GB DRAM相对成本10.380.017粒度字节可寻址字节可寻址基于块设备容量(GB)321282,048在成本、功耗和性能方面在大规模部署中发现从SCM中获益的用例也是一个挑战。为了应对RocksDB的这些挑战,我们首先分析了Meta中所有基于闪存的KV存储部署,以确定SCM在我们的环境中的位置这些研究表明,我们有大量的读为主的工作负载,这使我们的设计工作集中在更好的读性能上。这也已经在以前的工作中建立[8,11,76],其中更快的读取提高了每秒数十亿次读取的工作负载的整体性能然后,我们确定了RocksDB最大的内存消耗组件,用于服务读取请求的块缓存,并对其进行了重新设计,以实现利用DRAM和SCM延迟差异的混合分层缓存。 在混合高速缓存,DRAM作为第一层高速缓存容纳频繁访问的数据,最快的读取访问,cess,而SCM作为一个大型的第二层高速缓存存储不太频繁访问的数据。然后,我们实现了缓存准入和内存分配政策,管理DRAM和SCM之间的数据为了评估分层缓存实现,我们使用参考文献[12]中描述的方法描述了Meta的三个大型生产RocksDB用例,并将数据提取到db_bench的新基准配置文件中[25]。我们的研究结果表明,我们可以实现80%的吞吐量提高,P95延迟提高20%,并为这些工作负载的成本降低43总之,我们做出了以下贡献:我们描述了真实的生产工作负载,确定了我们环境中最有益的SCM用例,并开发了新的db_bench配置文件,以准确地对RocksDB性能改进进行基准测试。根据DRAM和SCM缓存的特点,设计并实现了一种新的混合分层缓存模块,··十三日:4H. T. Kassa等人ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月回忆我们实现了三个准入政策,处理DRAM和SCM缓存之间的数据传输,以有效地利用这两个内存。这种实现使任何使用RocksDB作为其KV Store后端的应用程序都能够轻松使用DCPMM。我们评估了我们的缓存实现在一个新发布的DCPMM平台上,使用商业数据中心的工作负载。 我们比较了不同DRAM/SCM大小的服务器配置,并确定了每种配置与现有生产平台相比的成本、功耗和性能。我们能够使用小型DRAM和额外的SCM来匹配大型DRAM占用空间服务器的性能,同时降低生产环境中以读取为主的服务的TCO。文章的其余部分如下。在第2节中,我们提供了RocksDB、DCPMM硬件平台的背景,并简要描述了我们的工作负载。第三节和第四节介绍了我们开发的混合缓存的设计和实现在第5节中,我们解释了我们的系统和实验装置的配置我们的实验评价和结果见第6节。然后,我们将分别在第7节和第8节讨论未来的方向和相关工作,并在第9节结束。2背景2.1RocksDB架构键值数据库是一种使用键值对存储数据的存储机制,其中键唯一地标识存储在数据库中的值。键值数据库的高性能和可扩展性促进了它们在大型数据中心的广泛使用[18,26,31,74]。RocksDB是一个基于LevelDB [31]实现开发的日志结构合并[64]键值存储引擎RocksDB是高性能键值存储的行业标准[24]。在Meta,RocksDB被用作几个数据存储服务的存储引擎。2.1.1RocksDB组件和内存使用。 RocksDB以排序字符串表(SST)格式存储键值对。SST文件中相邻的键值数据被划分为数据块。除了数据块,每个SST文件包含索引和过滤器块,有助于促进在数据库中的有效查找 SST文件按级别组织,例如,级别0-级别N,其中每个级别包括多个SST文件。RocksDB中的写操作首先进入驻留在DRAM中的内存写缓冲区,称为memtable。当memtable中的缓冲数据大小达到预设的大小限制时,RocksDB会将最近的写入刷新到最低级别(Level0)的SST文件类似地,当Level0用尽其大小限制时,其SST文件将与下一级别中具有重叠键值的SST文件合并,依此类推。这个过程称为压缩。数据块,以及可选的索引和过滤器块被缓存(通常未压缩)在称为块缓存的内存组件中,该组件为RocksDB的读取请求提供服务。BlockCache的大小由全局RocksDB参数管理 从数据库中读取的数据首先尝试从memtable中进行服务,然后从DRAM中的块缓存中进行服务,最后从SST文件中进行服务(如果在内存中未找到密钥)。关于RocksDB的更多细节可以在参考文献[26]中找到RocksDB中最大的内存使用来自用于读取的块缓存因此,在这项工作中,我们使用SCM作为块缓存的易失性存储器来优化RocksDB。2.1.2RocksDB基准测试对RocksDB进行基准测试的主要工具之一是db_bench [25]。Db_bench允许我们通过提供多个数据库、多个读取器和不同的键值分布等特性来模拟RocksDB的生产运行最近的工作[12]已经展示了我们如何从生产工作负载创建实际的db_bench工作负载为了创建SCM的评估基准,我们遵循参考文献[12,27]中给出的程序。··使用存储类内存的键值存储的功耗优化部署十三日:5ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月图二、英特尔Optane内存操作模式概述。2.2Intel Optane DC Persistent Memory基于3D XPoint技术[43,59]的英特尔Optane DC持久内存是第一款采用DIMM外形规格的商用非易失性内存,与DRAM位于同一DDR总线上[45]。DCPMM提供了字节可寻址的访问粒度,这使其与仅限于基于较大块的访问的类似技术有所 这为数据中心中的低延迟SCM使用创造了新的机会,作为DRAM的易失性存储器扩展或作为低延迟持久性存储介质。2.2.1操作模式概述。 DCPMM可以配置为在两种不同模式中的一种模式下运行:内存模式和应用程序直接模式[42]。图2显示了这些模式的示意图。在内存模式下,如图2所示,DRAM容量对应用程序隐藏,并用作最频繁访问地址的缓存,而DCPMM容量则作为单个大型易失性内存区域公开。DRAM高速缓存的管理和对DCPMM的访问由CPU的存储器控制器专门处理在此模式下,应用程序无法控制内存分配的物理位置(DRAM缓存或DCPMM)。在应用程序直接模式下,DRAM和DCPMM将被配置为系统中的两个不同的存储器,并分别暴露给应用程序和操作系统。在这种情况下,appli-阳离子和操作系统有读和写访问每个媒体的完全控制 在这种模式下,DCPMM可以配置为具有遗留文件系统的基于块的存储,或者可以由使用内存映射文件的应用程序直接访问(通过DAX)[4]。2.3Meta RocksDB工作负载对于我们的实验和评估,我们选择了Meta上最大的RocksDB用例,这些用例展示了键值存储的典型用途,从消息传递服务到用于处理实时数据和元数据的大型存储请注意,这些并不是从我们的设计中受益的唯一工作负载。服务说明如下:ChatApp:拥有超过10亿活跃用户,ChatApp是世界上最受欢迎的消息应用程序之一[38]。ChatApp使用ZippyDB作为其远程数据存储。ZippyDB [7]是一个分布式KV存储,它在RocksDB之上实现Paxos,以实现数据的可靠性和持久性。BLOB元数据:BLOB元数据数据库也存储在ZippyDB中,并且是Meta的大型blob存储服务的组成部分,该服务提供数十亿张照片,视频,文档,跟踪,堆转储和源代码[60,67]。BLOB元数据维护文件名、数据块和奇偶校验块以及保存实际块的存储节点之间的映射 这些数据库是分布式和容错的。十三日:6H. T. Kassa等人ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月图3.第三章。DRAM、SCM和SSD延迟和BW特性。x轴为对数刻度。HiveCache:Hive Cache是一个高查询吞吐量,低延迟(ms),PB级键值存储服务,构建在RocksDB之上[14]。 Hive Cache从任何类别的Meta的实时数据聚合服务[ 77 ]中实时读取,或者每天从Hadoop分布式文件系统[ 22 ]表中读取。库存缓存:库存缓存包含可能在内容提要上显示的各种对象集合[51]。它的更新速度很快,写的比读的多3混合缓存设计选择3.1存储和内存特性我们的1p和2p服务器由DRAM内存和SSD组成。我们的目标是在服务器设计中包含SCM,并评估其性能优势。在将SCM引入我们的系统之前,我们研究了三个组件(DRAM、SCM和SSD)的延迟和带宽特性 我们使用Intel Memory Latency Tester(MLC)[44]研究DRAM和SCM特性,使用Flexible IO Tester(FIO)[28]研究SSD特性。 对于所有设备,我们测量了具有32GB DRAM、128 GB SCM和2 TB SSD的单核机器的延迟与带宽。我们评估了顺序读取、随机读取、顺序读写和具有1:1比率访问模式的随机读写为了研究DRAM和SCM延迟,我们使用了500MB的工作负载,并使用不同的内存访问延迟来表征延迟和带宽,以增加带宽,对于SSD,我们使用了500 MB的工作负载,使用不同的队列深度来增加带宽,访问粒度为4 KB我们观察到DRAM延迟与BW近似线性地缩放,并且在顺序(图3(a))和随机(图3(a))上具有相似的绝对延迟(75-120 ns)。使用存储类内存的键值存储的功耗优化部署十三日:7ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月(图3(b))读访问模式。同样,SSD虽然延迟尺度不同(100然而,对于SSD,随着BW利用率的增加,延迟呈指数级增加因此,优化SSD的BW使用以减少延迟将提高延迟敏感型应用程序(如RocksDB)的整体性能。 对于SCM,顺序访问的延迟为190 -500ns,随机访问的延迟为350-1400ns。SCM的BW与延迟曲线也是指数关系,随着我们使用更高的BW,延迟呈指数增长 SCM的独特之处在于访问粒度是带宽的关键因素。因此,256 B顺序访问的性能明显高于64 B随机访问。对于混合读取和写入(图3(c)和3(d)),SSD和SCM具有比所有读取工作负载低得多的BW和更高的延迟一般来说,每种媒体都有一个我们希望将我们的使用目标定为每个介质的理想带宽,以最大限度地提高系统性能。对于以读取为主的工作负载,使用SCM也是有益的,因为读取和写入延迟/带宽不对称。3.2SCM部署的挑战在RocksDB中引入SCM的第一个挑战是确定哪些组件映射到SCM。我们选择了未压缩的块缓存,因为它在我们的RocksDB工作负载中具有最大的内存使用量,并且因为我们的研究表明,我们的许多生产工作负载(以读取为主)受益于通过块缓存扩展优化读取操作我们还关注未压缩的块缓存,而不是压缩的块缓存,这样我们就可以在执行压缩/解压缩时最大限度地减少CPU利用率的增加这使我们能够增加SCM(块缓存)的大小,而不需要额外的CPU资源。我们还选择了块缓存而不是memtable,因为SCM提供了比写入更好的读取带宽,因此有助于我们的读取要求很高的工作负载。然后,我们通过利用SCM作为易失性存储器来扩展块缓存大小 我们选择这种方法是因为扩展内存容量,同时减少DRAM的大小和服务器的成本是我们的主要目标。尽管我们可以从SCM中的持久块缓存和memtable中受益,以实现快速缓存预热和快速写访问,但我们将其留给未来的工作。下一个挑战是我们应该如何配置SCM以获得最佳性能。我们有使用内存模式的选项,不需要软件架构更改或应用程序直接模式,需要在RocksDB中进行修改,但可以控制DRAM和SCM的使用。图4展示了内存模式与我们优化的应用程序直接模式的比较如图所示,与内存模式相比,优化的应用程序直接模式与各种DRAM和SCM大小相比,吞吐量提高20 这种见解支持我们的优化实现具有比内存模式更好的缓存机制,因此我们将分析集中在应用程序直接模式上。通过app-direct,我们可以管理RocksDB组件(memtable、data、filter和index块)到DRAM或SCM的分配但是,由于我们知道SCM的数据访问延迟比DRAM慢(见表1),我们必须考虑其影响。我们比较了在vanilla RocksDB中以app-direct模式将块缓存分配给DRAM或SCM的吞吐量,以了解更高的SCM访问延迟的影响如图5(a)所示,当我们将基于DRAM的块缓存与使用应用程序直接模式的原始SCM块缓存进行比较时,较慢的SCM延迟在吞吐量方面产生了13%-这一结果指导我们在设计中仔细利用DRAM和SCM在单插槽机器(如1 P服务器)中,我们有一个CPU和32 GB在这个DRAM中,memtable、index和filter块消耗10DRAM的其余部分和附加SCM可以被分配用于块缓存。我们比较了简单的SCM块缓存实现(所有块缓存都使用app-direct分配给SCM)和更智能、更优化的十三日:8H. T. Kassa等人ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月见图4。内存模式的吞吐量和延迟比较以及我们针对ChatApp在应用程序直接模式下优化的混合缓存图 五 、 用 于 DRAM 的 ChatApp 与 SCM 块 缓存( a ) , 对 于 Naive SCM 与 优 化 的混 合 缓 存(b)。图六、针对以读为主和以写为主的工作负载的读/写比率和吞吐量/成本混合高速缓存,其中访问频率高的数据分配在DRAM中,而访问频率最低的数据分配在SCM中。图5(b)中的结果显示,与原始SCM块缓存相比,使用优化的app-direct,我们实现了高达45%的吞吐量提升由此,我们可以确定实现混合缓存可以补偿由于较高的SCM访问延迟而导致的性能损失这些结果以及我们的工作负载的高时间局部性(如下所述)促使我们研究混合缓存。3.3用于识别工作负载的工具下面,我们将详细分析指导混合缓存设计的最大RocksDB工作负载的特征。读取和写入数据库:正如我们之前所讨论的,之前的工作表明,优化读取对商业数据中心工作负载有很大影响[8,11,76]。 我们的研究还表明,我们有大量以读取为主的工作负载,因此优化用于存储数据以进行快速读取访问的块缓存将使我们的许多工作负载受益。在RocksDB中,当一个键在memtable中被更新时,它在块缓存中将是无效的因此,如果工作负载的写查询多于读查询,那么缓存中的数据将变得陈旧。注意,写主导的工作负载不会受到我们的混合缓存设计的影响,因为我们没有减少写路径中的任何DRAM缓冲区(可记忆)在我们的研究中,我们使用内部指标收集工具分析了24小时部署的RocksDB工作负载,以了解读写特性。 图6(a)显示了3.1节中描述的工作负载从DB中读取的字节数比写入的多。相比之下,我们评估了我们的一个写主导的工作负载,库存缓存,也可以在图6(a)中看到。在图6(b)中,我们计算了具有32GB DRAM和256 GB SCM容量的1 P服务器变量的吞吐量/成本,这些变量的吞吐量/成本标准化为1 P服务器的吞吐量/成本使用存储类内存的键值存储的功耗优化部署十三日:9ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月图7.第一次会议。ChatApp、BLOB元数据和Hive Cache的特性(a)键值访问局部性呈幂律分布。(b)工作负载具有高高速缓存命中率,并且正在执行对高速缓存的更多读取而不是写入(c)工作负载具有比memtable更多的缓存访问64 GB DRAM容量我们最大的DRAM-SCM系统的库存缓存的吞吐量/成本的改善不能抵消SCM带来的额外成本因此,我们专注于将以读取为主的工作负载导出到我们的混合系统。键值时间局部性:局部性决定了给定有限缓存大小的块数据的可缓存性。 只有当我们在工作负载中具有高的时间局部性时,具有小DRAM大小的混合缓存才会使我们受益。 在这种情况下,对块高速缓存的大量访问将来自DRAM高速缓存,并且SCM将保存大量不太频繁访问的块。 我们使用RocksDB跟踪分析器[27]来调查在生产2P服务器上运行的工作负载的24小时查询统计数据,并将局部性评估为总数据库访问计数与每个数据库访问的总密钥的分布。图7(a)显示了我们的工作负载具有幂律关系[15]键值对访问计数和访问的键数之间的关系我们可以在图中观察到,10%的键值对承载了大约50%的键值访问。这使得具有小DRAM的混合高速缓存设计对于部署是实用的。缓存利用率:对于每个数据库具有高键值访问局部性的工作负载,诸如重用距离(访问相似键之间的数据访问次数)和来自在工作负载内的多个分片之间共享块缓存的缓存污染等因素可能会阻碍块缓存的使用 虽然改善工作负载以提高缓存利用率超出了我们的项目范围,但我们研究了工作负载的当前缓存利用率,以了解大型SCM块缓存是否会给我们带来性能优势。块缓存中的高块缓存命中率和高读写比率表明工作负载有效地使用了缓存机制。另一个需要考虑的情况是,尽管键值局部性很高,但如果频繁访问的块被重复写入,那么数据将存在于memtable中在这里,工作负载不会从优化块缓存中受益为了研究这个因素,我们查看了由块缓存和memtable提供服务的数据库访问的百分比,并选择了具有主要块缓存访问的工作负载图7(b)显示了缓存命中率和缓存的读/写比率从图中我们可以观察到,所有工作负载的缓存命中率均>90%,并且对缓存的读取次数多于写入次数。图7(c)显示了所有工作负载对缓存的访问都比memtable多DB和缓存大小:捕获工作负载的局部性所需的理想DRAM和SCM缓存大小具有高键值局部性和大数据库大小的工作负载可以在有限的缓存大小下实现高缓存命中率但是,随着大数据库的局部性降低,所需的缓存大小将增加。在随机键值访问的极端情况下,所有块将具有相似的热量,稀释DRAM缓存的值,并将整体混合缓存性能逐渐降低到仅SCM块缓存的性能。 对于小型数据库,局部性可能不起重要作用,因为大多数数据库访问都适合十三日:H. T. Kassa等人ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月∼图8.第八条。RocksDB组件和内存分配。在一个小的缓存。 这种类型的工作负载不会受到DRAM大小减少的严重影响,选择具有大SCM容量的1P服务器变体将浪费资源。在我们的研究中,在查看了生产中的各种工作负载后,我们选择了混合DRAM-SCM缓存配置,以适应具有较大数据库大小的多个工作负载(每台服务器总存储容量为2 TB KV)。4DRAM-单片机混合高速缓存器在我们的RocksDB部署中,我们将memtables、索引块和过滤器块放置在DRAM中。然后,我们设计了一个新的混合缓存模块,在DRAM和SCM中分配块缓存数据库SST文件和日志位于Flash中RocksDB组件分配在内存系统中的概述如图8(a)所示 我们在设计新的混合缓存模块的目标是利用DRAM和SCM的读访问延迟和带宽特性的基础上分层。在我们的设计中,我们的目标是将热块放在DRAM中以实现最低延迟的数据访问,并将较冷的块放在SCM中作为第二层。基于密集SCM的混合块高速缓存提供了比单独使用DRAM的实际容量更大的有效容量,从而导致更高的高速缓存命中率。 这大大降低了对较慢的基础闪存介质上SST文件的IO带宽要求。块缓存是一个完整的数据结构,完全由RocksDB管理同样,在我们的实现中,新的混合缓存模块完全由RocksDB管理该模块是RocksDB与DRAM和SCM块缓存之间的接口,并完全管理缓存混合高速缓存的总体架构如图8(c)所示其内部组件详情如下:4.1块缓存列表混合缓存是RocksDB中的一个新的顶级模块,它维护不同层中的底层块缓存缓存列表是从现有的RocksDB块缓存扩展而来的,具有LRU替换策略。请注意,在我们的实现中,我们有DRAM和SCM缓存,但模块可以管理不止这两个缓存,例如复杂层次结构中的多个DRAM和SCM缓存。4.1.1块缓存架构和组件。 DRAM和SCM高速缓存的内部结构都来自块高速缓存,如图8(c)所示。块缓存存储被划分为缓存条目,并在哈希表中进行跟踪。每个高速缓存条目保存一个键,使用存储类内存的键值存储的功耗优化部署十三日:ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月数据块、诸如键大小、散列、当前高速缓存使用率的元数据以及块高速缓存外部的高速缓存条目的引用计数数据块由多个键值对组成,如图8(b)所示执行二进制搜索以在数据块中查找键值对数据块大小在RocksDB中是可配置在我们的例子中,最佳大小是16 KB。 随着索引块数量的减少,我们可以增加数据块的大小。因此,使用16 KB,我们能够减少索引块的数量,在有限的DRAM容量内为数据块腾出空间每个数据块缓存都有外部配置的缓存 这包括大小、移动数据的阈值、指向所有其他用于数据移动的缓存的指针以及缓存的内存分配器。缓存维护一个LRU列表,该列表按最近使用次数最多到最少的顺序跟踪缓存条目。辅助函数用于递增引用、检查引用阈值、将块从一个缓存传输到另一个缓存、检查大小限制等。对于上面列出的组件,我们扩展和修改了RocksDB,以支持分层结构,不同类型的准入策略,我们设计了新的方法来实现不同缓存之间的数据移动,并支持不同内存类型的内存分配。4.1.2块缓存中的数据访问一个块由块缓存的多个外部组件访问,例如RocksDB数据库的多个读取器客户端。外部引用的数量由引用计数跟踪当外部参照块时,将创建到块的映射,这将增加参照计数。而当引用不再需要块时,映射被释放,引用计数递减。 如果一个块没有外部引用,那么它将在哈希表中,并由LRU列表跟踪。如果一个块再次被引用,那么它将从LRU列表中删除。 注意,在LRU列表中,没有外部引用的新发布的块作为最近使用的块位于LRU列表的顶部,并且当块被驱逐时,底部最近最少使用的块首先被驱逐。块缓存用于只读数据,因此它因此,当在DRAM和SCM之间传输数据时,我们不必处理脏数据。4.2缓存准入策略基于DRAM/SCM中的块的访问频率来识别和保留DRAM/SCM中的块需要对DRAM、SCM和闪存之间的数据传输进行主动管理因此,我们开发了以下块缓存准入策略。4.2.1DRAM第一准入政策。 在该准入策略中,从闪存读取的新块首先被插入DRAM缓存的哈希表中。块缓存数据结构的大小是有限的。因此,当在DRAM高速缓存中分配的块的大小超过大小限制时,DRAMLRU列表跟踪的最旧条目通过DRAM高速缓存的数据移动器功能使用SCM高速缓存的存储器分配器被移动到下一层高速缓存(SCM高速缓存)。在查找时,DRAM和SCM缓存都被搜索,直到找到缓存块。如果没有找到,则它将启动闪存读取。 类似于DRAM高速缓存,当SCM高速缓存的容量超过限制时,SCM高速缓存的LRU列表中最旧的条目被释放以容纳从DRAM高速缓存中逐出的新高速缓存块。4.2.2SCM首次准入政策。 在此准入策略中,从闪存读取的新块首先插入SCM缓存的哈希表中。与DRAM第一准入策略不同,该策略具有用于将数据从SCM高速缓存移动到DRAM高速缓存的可配置阈值当SCM高速缓存中的高速缓存条目的外部引用超过引用阈值时,块被认为是热的,并且将被迁移到DRAM高速缓存以进行更快的访问。在这种情况下,数据移动由SCM缓存的Data Mover功能处理当两者的容量十三日:H. T. Kassa等人ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月DRAM和SCM缓存已满,最旧的LRU块将从两个缓存中清除在DRAM高速缓存中,LRU条目被移回SCM高速缓存,而在SCM高速缓存中,LRU条目被释放以适应新的块插入。在查找时,DRAM和SCM高速缓存都被搜索,直到找到高速缓存块。4.2.3双向录取政策。 在双向准入策略中,类似于DRAM第一准入策略,新的数据块被插入到DRAM高速缓存中。 当DRAM和SCM高速缓存的容量达到极限时,最旧的LRU条目从DRAM高速缓存被驱逐到SCM高速缓存,并且对于SCM高速缓存的情况被释放。DRAM优先和双向缓存之间的区别在于,在最旧的LRU条目从DRAM被逐出到SCM缓存之后,如果对条目的外部引用超过预设阈值,则将其传输回DRAM缓存。 此属性允许我们重新捕获具有不一致的时间访问模式的块的快速访问性能。在混合缓存中,我们可以设置三种准入策略,或者通过配置如何在块缓存列表中插入、查找和移动数据来轻松扩展新策略这些参数是顶级混合缓存中的全局参数,由块缓存操作管理器和块缓存列表使用也可以设置SCM优先和双向策略中移动数据的阈值,以根据缓存的当前使用情况更改值但在我们的实验中,我们没有看到改变价值观的好处 我们还对不同大小的缓存阈值进行了分析,并在评估中显示了SCM优先和双向的最佳阈值。4.3混合缓存配置混合缓存配置由RocksDB在模块外部设置,包括指向所有块缓存的指针、块缓存的数量、id、缓存的层数和要使用的准入策略。在实例化期间和运行时使用配置来管理数据库操作。4.4块缓存操作管理这个单元根据准入策略将外部RocksDB操作(如插入、查找、更新等)重定向到例如,它决定传入的插入请求是否应该进入DRAM或SCM缓存。5系统设置和实施5.1DRAM-SCM缓存实现在我们的实验中,我们使用IPMCTL [46]工具在App Direct模式下配置了英特尔DCPEXP我们使用的是LinuxKernel5.2,它通过配置一个名为KMEMDAX的可热插拔内存区域来支持DCPMM的易失性使用然后,我们使用NDCTL 6.7 [3],一个在Linux内核中管理SCM的实用程序,在devdax模式下在DCPMM中创建命名空间此模式提供对DCPMM的直接访问,并且比基于文件系统的访问更快。然后,我们使用DAXCTL [3]实用程序在系统RAM模式下配置DCPMM,以便DCPMM在其自己的易失性内存NUMA节点中可用。 为了实现混合DRAM-SCM缓存,我们使用了memkind库[2],它可以在应用程序空间中的DRAM和SCM等多种存储器之间进行堆分区。在系统配置了DRAM和DCPMM内存类型后,我们修改了RocksDB块缓存,使用memkind来获取两种类型的内存分配器我们使用MEM_KIND_DAX_KMEM类型作为SCM缓存,使用常规内存分配器作为DRAM。图9显示了我们实现的概述。使用存储类内存的键值存储的功耗优化部署十三日:ACM Transactions on Storage,Vol.号182、第十三条。出版日期:2022年3月见图9。使用libmemkind配置SCM缓存。表2.系统设置:硬件规格和软件配置规格系统配置应用程序版本RocksDB 6.10操作系统CentOS-8Linux内核版本5.2.9CPU型号Intel Xeon Gold 6252@2.10 GHzSocket/Cores per socket 2/24共96个线程L1 I/L1 D缓存32 KBL2/L3高速缓存1 MB/35.75 MB内存控制器总数4每个控制器的通道数3每通道插槽数2DRAM大小DDR4 192 GB(16 GB X 12 DIMM插槽)SCM大小DDR-T 1.5 TB(128 GB X 12 DIMM插槽)SSD型号Samsung 983 DCT M.2 NVMe SSD SSD大小/文件系统2 TB/xfs5.2评估硬件描述在我们的评估中,我们使用了一个基于
下载后可阅读完整内容,剩余1页未读,立即下载
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)