面向DRAM-NVM混合内存的持久学习型索引系统
未命名
08-26
阅读:95
评论:0

面向dram-nvm混合内存的持久学习型索引系统
技术领域
1.本发明涉及机器学习领域、非易失性内存领域、内存索引领域、数据结构设计领域和算法设计领域,具体地,涉及一种面向dram-nvm混合内存的持久学习型索引系统。
背景技术:
2.当代数据处理系统一边面临着日益增长的高性能业务要求,一边受压于不断膨胀的数据集任务规模,使得仅靠dram构建内存索引的传统做法很难取得性能与成本配置上的平衡。非易失性内存技术的发展和学习型索引概念的提出为这一问题提出了新的解决方案。非易失性内存nvm是一种大容量、低时延、高带宽、非易失、按字节寻址的新型内存。向索引系统引入nvm的做法不仅在很大程度上缓解了dram的压力,同时赋予了索引数据持久化的能力。学习型索引通过机器学习算法学习数据分布、建立模型、预测目标数据的位置。学习型索引只需要储存模型参数,相比较传统索引省去了大量索引结构所需要占据的内存空间。
3.非易失性内存和学习型索引分别从硬件配置和索引自身结构的角度出发为内存索引工作提出了新的优化方案,一个很自然的想法是将非易失性内存与学习型索引结合,使两者能够同时发挥各自的优势——基于nvm构建的持久学习型索引通过学习数据分布简化索引逻辑,降低服务器内存的配置成本。然而nvm在性能表现上距离dram仍有一定差距,将索引完全构建在nvm中不可避免地会带来索引性能水平的倒退,利用nvm构建学习型索引结构的设计因而需要考量到nvm的硬件特性。目前,有两项研究工作完成了功能全面的面向nvm的学习型索引结构的设计与实现,分别是plin和apex。plin采用optimalplr算法学习数据分布,为了尽可能减少对nvm块的访问次数,当新数据插入索引结构时,如果模型预测位置已用,则将新数据储存在大小为256字节的同一nvm块的另一位置上;如果预测位置所在块已满,则插入到溢出区(overflow tree)的结构中;nvm块内无序但块间有序。apex的设计把模型部分与数据部分都存储于nvm内,为了尽可能减少nvm的写次数,apex设计优先级不同的主数组和二级缓冲扩展数组接受新插入的数据:当有新数据插入到apex数据节点时,apex首先在该节点的主数组中寻找空闲位置,如果主数组已满,则依次插入到该节点的两个二级扩展数组中。
4.非易失性内存和学习型索引分别从硬件环境和实现逻辑层面为内存索引带来了新的机遇。非易失性内存在扩充系统内存容量的同时为索引带来持久性保护,然而nvm器件的技术手段决定了引入了nvm会带来性能上的倒退。学习型索引在降低索引结构规模的同时打破了传统索引结构对数据分布不可知的局限,提高了索引在具有某些特征的数据分布和工作负载下的性能表现,然而学习型索引在不同训练算法、训练集质量下表现差异大,且机器学习模型存在训练开销大、过度拟合等潜在问题,使得学习型索引模型的选择与组织方式变得尤为重要。于是,利用非易失性内存构建学习型索引的工作需要多方面的考量。
5.专利文献cn112732725a(申请号:cn202110088720.8)公开了一种基于nvm混合内存的自适应前缀树构建方法,根据全局索引数据结构对全量数据和节点在nvm地址空间进
行构建和维护;根据快捷索引数据结构对新增数据和节点在dram地址空间进行分配和维护;当dram地址空间占用达到设定比例后,触发迁移线程将新增数据和节点迁移到nvm地址空间中,降低dram地址空间存储。
6.目前仅有的少数利用非易失性内存构建学习型索引的研究工作更加侧重对nvm设备的使用,目标是通过基于对nvm的调优来达到一个通用场景下较客观的索引综合性能水准。这类工作将大部分(如apex)甚至全部(如plin)结构置于nvm中,过多依赖nvm而没有充分发挥dram的优势。然而一项测试持久型索引性能的工作中证明了将部分索引压力返还给dram的做法、或以额外dram空间为代价构造能够提升性能的辅助性数据结构的做法是可取的。从这一结果出发,本发明提案选择dram-nvm混合内存为构建持久学习型索引的介质,并设计自适应的异质内存分配管理器为索引的工作前配置提供更大灵活性。
7.除了索引服务的通用场景外,真实世界中还存在大量特殊场景,如高度倾斜式的工作业务场景中绝大多数的数据访问集中在极少部分的数据上(例:社交媒体应用中用于用户登录的信息验证数据的访问频率远高于一年前用户上传到个人空间的图片的访问频率),在面对这些特殊的工作负载时,现有工作依旧使用通用办法完成数据请求的一系列流程,缺乏针对性优化,导致索引性能表现的不稳定(例:当集中访问的数据处于索引框架中能够被快速访问到的位置时性能表现优,而当集中访问的数据需要访问多次索引数据结构才能被定位到时性能表现劣)。本发明提案针对此类场景提出针对性优化,目标是保证索引在特殊场景下也能具备稳定的数据处理水平。
8.考虑到nvm会给索引带来性能降级的问题和nvm写入损耗的问题,持久型索引的设计需要尽可能减少对nvm的写入次数。现有工作通常采用两种办法:(1)维护额外的缓冲区以吸收新插入的数据,然而这类办法通常以数据结构为粒度管理缓冲区(例:每一个树节点内部的所有数据共享一个缓冲区),不利于多线程环境中的并发操作的执行,且当缓冲区结构变得过大时,整个索引退化到缓冲区内部检索的性能水平;(2)维护有空闲位置的数组(例:apex工作中的二级扩展数组),新插入的数据利用就近原则顺位插入到最近的空位中,然而这一方法同样不利于多线程并发操作,多个线程对数组中位置的竞争会造成性能瓶颈。为了解决以上问题,本发明提案设计更加合理的数据结构和索引内部流程,在最小化nvm访问次数的前提下提升多线程环境中索引的性能水平。
9.最后,现有的学习型索引工作对索引结构的高度也没有上限保证,当需要集中访问的数据处于索引结构的深处时会造成较大时延,因此本发明提案需要设计合理的索引结构型调整操作将索引结构的高度维持在一个较低的范围内。
技术实现要素:
10.针对现有技术中的缺陷,本发明的目的是提供一种面向dram-nvm混合内存的持久学习型索引系统。
11.根据本发明提供的面向dram-nvm混合内存的持久学习型索引系统,包括:
12.模型部分:将数据划分为子数据集,对每一子数据集用线性回归模型进行表达,采集每一线性回归模型所覆盖的最大键,构建二层递归式模型索引架构rmi,对局部最大键进行索引,检索得到目标键所属的模型地址;
13.数据部分:包括两类数据结构,分别为node节点类和buffer缓冲块类;
14.结构型调整部分:根据数据结构类型,分为缓冲块扩张、缓冲块转换、节点转换和节点分裂,用于保证索引在整个工作负载进行的过程中始终保持正确性和高效性。
15.优选的,所述模型部分包括:采用贪婪算法细分键空间,将只有服从相近线性分布的数据划分到同一个子数据集;采用dram为模型部分分配空间。
16.优选的,数据部分包括:使用nvm为数据部分分配空间;将被频繁访问到的节点的拷贝对象储存在dram中,将这部分节点称作快捷节点,使用dram为快捷节点分配空间。
17.优选的,node节点类数据结构包括:
18.当前层级为d0层级或d1层级的机器学习模型:d0层级的模型由模型部分训练和索引得到,是索引数据部分的入口,负责输出目标键的所在位置;d1层级的模型在工作负载中动态生成,负责输出索引初始构建完成后新插入的键的位置;
19.元数据:用于指示当前node的状态和当前node所处层级;
20.键和对应数据所存放的数组;
21.有效位数组:用于指示键数组中的元素是否有效,实现原地更新和删除操作;
22.指向下层buffer缓冲块类数据结构或d1层级的模型的数组:用于对新插入的键进行数据操作。
23.优选的,根据node节点类所包含模型所在层级的不同,将node节点类进一步细分为d0_node和d1_node,每个d0_node对象下挂有多个buffer对象,用于吸收插入到该节点覆盖范围内的新的不重复的数据;当buffer对象增长到预设大小后转换为新的node对象并代替buffer对象下挂在d0_node下,根据其相对d0_node对象的层级关系,把由buffer对象转换而来的node对象称作d1_node。
24.优选的,buffer缓冲块类数据结构是在工作负载过程中动态生成的数据结构,用于存放索引初始构建阶段完成后新插入的数据。
25.优选的,缓冲块扩张:在buffer达到其容量上限时,为其分配更多内存空间以容纳更多新插入的数据,将能容纳更多数据的buffer称作alpha-buffer;
26.缓冲块转换:在alpha-buffer达到其容量上限时,把alpha-buffer实例转换为node实例,该转换只作用于下挂在d0层级节点下的alpha-buffer,并且只转化为d1层级的node对象;
27.节点转换:将d0_node转换为一个新的节点对象d0_node_new,d0_node_new覆盖新插入的数据,用于使面向dram-nvm混合内存的持久学习型索引具备自适应动态变化的数据分布的能力;
28.节点分裂:将一个大的d0_node_new分裂成为两个或多个小的d0_node对象,用于确保每个模型的误差始终在阈值范围内。
29.优选的,通过hybridmemallocator类和hybridmemmanager类对混合内存中的索引结构进行统一的资源分配和释放管理;
30.所述hybridmemallocator类包括:
31.nvm_file_,用于建立内存映射的储存于nvm中的文件名称;
32.base_nvm_addr_和curr_nvm_addr_,分别标记nvm内存资源池的起始地址和当前地址,每成功完成一次nvm内存分配,curr_nvm_addr_相对base_nvm_addr_增加相应大小的偏移量;
33.dram_ptrs_,用于记录每次dram内存分配返回的首地址;
34.alloc_in_nvm和alloc_in_dram函数,分别为各自内存分配指定大小的空间,前者对数据成员curr_nvm_addr_进行偏移并保证其始终在资源池有效地址范围内,后者调用malloc库函数进行动态dram分配;
35.free_nvm和free_dram函数,对各自内存的空间进行释放;
36.log函数,记录内存使用情况信息;
37.所述hybridmemmanager类为应用程序提供接口,通过allocate函数根据传入参数对任意个数、任意类型的数据结构在任意内存完成资源分配或释放。
38.优选的,第一个试图在d1_node下创建buffer对象并插入新数据k_new的写操作触发快捷节点在dram的创建,d1_node_quick的创建需要将d1_node中的键值对与模型参数拷贝到dram空间,d1_node_quick创建完成后,新建d0_node到d1_node_quick的指针;同时d1_node对象不释放,保留d0_node到d1_node的指针,将该d1_node对象设为冻结状态,之后对d1_node的读写都重定向到dram空间中的d1_node_quick。
39.优选的,d1_node_quick周期性地迁移到nvm中,当d1_node_quick下的buffer触发了d1_node_quick经历节点转换时,启动节点转换在nvm中构建d0_node_new;当d1_node_quick长期未接受到读写操作请求时,后台迁移线程将d1_node_quick下挂的buffer拷贝到nvm中冻结状态的原d1_node下,并更新原d1_node中的有效位数组。
40.与现有技术相比,本发明具有如下的有益效果:
41.(1)通过提出针对索引模型部分的构建与搜索算法,规避了不同模型之间误差波动大的可能性,使得索引模型部分能够同时兼具最小重训开销和最小平均模型误差;
42.(2)通过提出针对索引数据部分的细粒度的数据结构分配与管理策略,解决了高并发场景下的资源竞争问题,提升了索引系统的可扩展性;
43.(3)通过提出针对索引框架的四类结构型调整操作,解决了索引高度不受限的问题,保证了索引在任意类型工作负载下能进行正确且高效的数据访问。
附图说明
44.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
45.图1为面向dram-nvm混合内存的持久学习型索引框架图;
46.图2为混合内存分配管理器的核心成员和方法框图;
47.图3为快捷节点的生命周期与维护办法框图。
具体实施方式
48.下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
49.实施例:
50.如图1,为本发明提案所提出的面向dram-nvm混合内存的持久学习型索引的总体
框架,左侧模型部分和数据部分描述索引的组织结构,右侧smo描述工作负载描述索引内部数据结构,图上的黑色向下箭头标识了一个请求基于索引完成相关数据操作的可能路径,图上的黑色向右箭头标识了索引内部数据结构模块的调整与转变。该总体框架的设计由三个部分构成,分别是模型部分的设计、数据部分的设计、和结构型调整操作smo的设计。
51.对模型部分设计的描述如下:采用贪婪算法细分键空间,该切分法确保只有服从相近线性分布的数据会被划分到同一个子数据集,对每一子数据集用简单的线性回归模型进行精确表达;采集每一模型所覆盖的最大键,构建二层递归式模型索引架构rmi对局部最大键进行索引;给出一个目标键,遵循二层rmi架构检索得到的是该目标键可能所属的模型的地址。由于模型部分只需要储存用于组织各模型的索引结构(由最大键索引模型算法生成),占用空间小,因此采用更快的dram为模型部分分配空间。
52.对数据部分设计的描述如下:数据部分主要存在两类数据结构,一类为node类,在图1中用矩形表示;一类为buffer类,在图1中用三角形表示。由于数据部分在整个索引结构中占最主要空间,用储存密度更高的nvm为数据部分分配空间;考虑到真实世界工作负载中的冷热数据效应,即近期内访问的数据有更大可能性在短期未来内被再次访问,本发明同时使用dram空间为部分热点数据结构(快捷节点)开辟空间。
53.节点类node中包含:
54.(1)一个当前层级(d0或d1)的机器学习模型。d0层级的模型由上文模型部分的训练和索引得到,是索引数据部分的入口,负责输出目标键的所在位置;d1层级的模型在工作负载中动态生成,负责输出索引初始构建完成后新插入的键的位置。d1层级的模型由其所在node的父级node中的数据训练得到,目的是减少一个请求在某个大型node中的检索时间。
55.(2)元数据,用于指示当前node的状态、当前node所处层级等信息。
56.(3)键和对应数据所存放的数组。
57.(4)有效位数组,用于指示键数组中的元素是否还有效,实现原地更新和删除操作,减少内存空间反复分配释放和碎片化的问题。
58.(5)指向下层buffer结构或者d1级别模型的数组,用于对新插入的键进行数据操作。根据node所包含模型所在层级的不同(d0或d1),为了区分表述,将node类进一步细分为d0_node和d1_node。每个d0_node对象下挂有多个buffer对象,这些buffer对象的作用是吸收插入到该节点覆盖范围内的新的不重复的数据。当buffer对象增长到一定大小后会转换为新的node对象并代替buffer下挂在d0_node下,根据其相对d0_node对象的层级关系,把由buffer对象转换而来的node对象称作d1_node。
59.缓冲块类buffer是在工作负载过程中动态生成的数据结构,用于存放索引初始构建阶段完成后新插入的数据。由于buffer结构独立于node之外,新插入到buffer的数据不会影响已经训练好的模型的准确性。本发明中的一个buffer类实例的生命周期经历创建、扩张、转换、释放四个阶段。
60.对结构型调整操作smo的设计的描述如下:索引框架结构型调整指的是某些数据操作会触发索引发生结构性的变化。根据结构型调整作用对象的不同(node类型、buffer类型),smo可分为四类:缓冲块扩张(buffer expand)、缓冲块转换(buffer transform)、节点转换(node transform)、节点分裂(node split)。之所以要求索引框架在某些条件下进行
结构型调整,是为了保证索引在整个工作负载进行的过程中始终保持正确性和高效性。若不加调整,索引内部结构(如buffer)会持续膨胀,索引高度会不断增大,对nvm的访问次数会不断增多,这些现象都会导致数据检索所需时间大大增加,成为索引工作的性能瓶颈。
61.缓冲块扩张在buffer达到其容量上限时为其分配更多内存空间以容纳更多新插入的数据,这个能够容纳更多数据的buffer被称作alpha-buffer。
62.缓冲块转换在alpha-buffer达到其容量上限时把alpha-buffer实例转换为node实例;该转换只能作用于下挂在d0层级节点下的alpha-buffer,并且只能转化为d1层级的node对象。
63.节点转换将d0_node转换为一个新的节点对象d0_node_new,d0_node_new覆盖了新插入的数据,其意义是使面向dram-nvm混合内存的持久学习型索引具备自适应动态变化的数据分布的能力。
64.节点分裂将一个大的d0_node_new分裂成为两个或多个小的d0_node对象:d0_node_i_new
→
d0_node_i0+d0_node_i1+...,其意义是确保每个模型的误差始终在阈值范围内。
65.如图2,为本发明提案所提出的混合内存分配管理器的核心成员和方法图。由于混合内存不同的内存分配方法一方面增加了编码难度,一方面难以对外界应用提供统一的内存管理调用接口,所以本发明提案渴望提供灵活的配置方案,使得程序员能够根据服务器硬件配置和业务需求的不同灵活地选择索引各模块所存放位置。基于以上考虑,本发明提案设计hybridmemallocator类和hybridmemmanager类对混合内存中的索引结构进行统一的资源分配和释放管理。hybridmemallocator类为混合内存资源管理提供具体实现办法。hybridmemallocator类的核心数据成员有:nvm_file_为用于建立内存映射的储存于nvm中的文件名称;base_nvm_addr_和curr_nvm_addr_分别标记nvm内存资源池的起始地址和当前地址,每成功完成一次nvm内存分配,curr_nvm_addr_相对base_nvm_addr_增加相应大小的偏移量;dram_ptrs_用于记录每次dram内存分配返回的首地址。hybridmemallocator类的核心方法有:alloc_in_nvm和alloc_in_dram函数分别为各自内存分配指定大小的空间,前者对数据成员curr_nvm_addr_进行偏移并保证其始终在资源池有效地址范围内,后者调用malloc库函数进行动态dram分配;free_nvm和free_dram函数对各自内存的空间进行释放;log函数记录诸如两种内存使用情况等信息。hybridmemmanager类为应用程序提供简单易使用的接口。allocate函数会根据传入参数自动调用hybridmemallocator类对象hybrid_mem_manager的内存分配办法。就编程层面而言,程序员只需提供需要分配内存的对象的个数以及指定使用何种内存进行分配,就能够通过allocate函数对任意个数、任意类型的数据结构在任意内存完成资源分配。同样地,只需额外提供需要释放的内存起始地址就能够通过deallocate函数完成对任意个数、任意类型的数据结构在任意内存的释放。定义枚举类memorytype对内存介质进行选择;若没有指定使用何种内存,则默认使用更充裕的nvm资源进行内存分配,减轻索引结构对dram的负担。
66.利用该混合内存分配管理器,本发明提案提议将面向dram-nvm混合内存的持久学习型索引中的数据部分储存在nvm中,而将模型部分与少量被频繁访问到的节点的拷贝对象储存在dram中,将这部分节点称作快捷节点(quick node)。对快捷节点的管理与维护如图3所示。第一个试图在d1_node下创建buffer对象并插入新数据k_new的写操作触发快捷
节点在dram的创建。d1_node_quick的创建需要将d1_node中的键值对与模型参数等拷贝到dram空间。d1_node_quick创建完成后,新建d0_node到d1_node_quick的指针;同时d1_node对象不释放,保留d0_node到d1_node的指针,但将该d1_node对象设为"frozen"状态,之后对d1_node的读写都重定向到dram空间中的d1_node_quick。d1_node_quick周期性地迁移到nvm中,有两种情况会触发它的迁移:(1)当d1_node_quick下的buffer触发了d1_node_quick经历节点转换时,启动节点转换在nvm中构建d0_node_new,如图3中标有节点转换字样的箭头。(2)当d1_node_quick长期未接受到读写操作请求时,后台迁移线程将d1_node_quick下挂的buffer拷贝到nvm中"冻结"状态的原d1_node下,并更新原d1_node中的有效位数组,如图3中标有节点迁移字样的箭头。
67.本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
68.以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
技术特征:
1.一种面向dram-nvm混合内存的持久学习型索引系统,其特征在于,包括:模型部分:将数据划分为子数据集,对每一子数据集用线性回归模型进行表达,采集每一线性回归模型所覆盖的最大键,构建二层递归式模型索引架构rmi,对局部最大键进行索引,检索得到目标键所属的模型地址;数据部分:包括两类数据结构,分别为node节点类和buffer缓冲块类;结构型调整部分:根据数据结构类型,分为缓冲块扩张、缓冲块转换、节点转换和节点分裂,用于保证索引在整个工作负载进行的过程中始终保持正确性和高效性。2.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,所述模型部分包括:采用贪婪算法细分键空间,将只有服从相近线性分布的数据划分到同一个子数据集;采用dram为模型部分分配空间。3.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,数据部分包括:使用nvm为数据部分分配空间;将被频繁访问到的节点的拷贝对象储存在dram中,将这部分节点称作快捷节点,使用dram为快捷节点分配空间。4.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,node节点类数据结构包括:当前层级为d0层级或d1层级的机器学习模型:d0层级的模型由模型部分训练和索引得到,是索引数据部分的入口,负责输出目标键的所在位置;d1层级的模型在工作负载中动态生成,负责输出索引初始构建完成后新插入的键的位置;元数据:用于指示当前node的状态和当前node所处层级;键和对应数据所存放的数组;有效位数组:用于指示键数组中的元素是否有效,实现原地更新和删除操作;指向下层buffer缓冲块类数据结构或d1层级的模型的数组:用于对新插入的键进行数据操作。5.根据权利要求4所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,根据node节点类所包含模型所在层级的不同,将node节点类进一步细分为d0_node和d1_node,每个d0_node对象下挂有多个buffer对象,用于吸收插入到该节点覆盖范围内的新的不重复的数据;当buffer对象增长到预设大小后转换为新的node对象并代替buffer对象下挂在d0_node下,根据其相对d0_node对象的层级关系,把由buffer对象转换而来的node对象称作d1_node。6.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,buffer缓冲块类数据结构是在工作负载过程中动态生成的数据结构,用于存放索引初始构建阶段完成后新插入的数据。7.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,缓冲块扩张:在buffer达到其容量上限时,为其分配更多内存空间以容纳更多新插入的数据,将能容纳更多数据的buffer称作alpha-buffer;缓冲块转换:在alpha-buffer达到其容量上限时,把alpha-buffer实例转换为node实例,该转换只作用于下挂在d0层级节点下的alpha-buffer,并且只转化为d1层级的node对象;节点转换:将d0_node转换为一个新的节点对象d0_node_new,d0_node_new覆盖新插入
的数据,用于使面向dram-nvm混合内存的持久学习型索引具备自适应动态变化的数据分布的能力;节点分裂:将一个大的d0_node_new分裂成为两个或多个小的d0_node对象,用于确保每个模型的误差始终在阈值范围内。8.根据权利要求1所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,通过hybridmemallocator类和hybridmemmanager类对混合内存中的索引结构进行统一的资源分配和释放管理;所述hybridmemallocator类包括:nvm_file_,用于建立内存映射的储存于nvm中的文件名称;base_nvm_addr_和curr_nvm_addr_,分别标记nvm内存资源池的起始地址和当前地址,每成功完成一次nvm内存分配,curr_nvm_addr_相对base_nvm_addr_增加相应大小的偏移量;dram_ptrs_,用于记录每次dram内存分配返回的首地址;alloc_in_nvm和alloc_in_dram函数,分别为各自内存分配指定大小的空间,前者对数据成员curr_nvm_addr_进行偏移并保证其始终在资源池有效地址范围内,后者调用malloc库函数进行动态dram分配;free_nvm和free_dram函数,对各自内存的空间进行释放;log函数,记录内存使用情况信息;所述hybridmemmanager类为应用程序提供接口,通过allocate函数根据传入参数对任意个数、任意类型的数据结构在任意内存完成资源分配或释放。9.根据权利要求3所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,第一个试图在d1_node下创建buffer对象并插入新数据k_new的写操作触发快捷节点在dram的创建,d1_node_quick的创建需要将d1_node中的键值对与模型参数拷贝到dram空间,d1_node_quick创建完成后,新建d0_node到d1_node_quick的指针;同时d1_node对象不释放,保留d0_node到d1_node的指针,将该d1_node对象设为冻结状态,之后对d1_node的读写都重定向到dram空间中的d1_node_quick。10.根据权利要求9所述的面向dram-nvm混合内存的持久学习型索引系统,其特征在于,d1_node_quick周期性地迁移到nvm中,当d1_node_quick下的buffer触发了d1_node_quick经历节点转换时,启动节点转换在nvm中构建d0_node_new;当d1_node_quick长期未接受到读写操作请求时,后台迁移线程将d1_node_quick下挂的buffer拷贝到nvm中冻结状态的原d1_node下,并更新原d1_node中的有效位数组。
技术总结
本发明提供了一种面向DRAM-NVM混合内存的持久学习型索引系统,包括:模型部分:将数据划分为子数据集,对每一子数据集用线性回归模型进行表达,采集每一线性回归模型所覆盖的最大键,构建二层递归式模型索引架构RMI,对局部最大键进行索引,检索得到目标键所属的模型地址;数据部分:包括两类数据结构,分别为Node节点类和Buffer缓冲块类;结构型调整部分:根据数据结构类型,分为缓冲块扩张、缓冲块转换、节点转换和节点分裂,用于保证索引在整个工作负载进行的过程中始终保持正确性和高效性。本发明解决了索引高度不受限的问题,保证了索引在任意类型工作负载下能进行正确且高效的数据访问。访问。访问。
技术研发人员:姚建国 陈佩琦 管海兵
受保护的技术使用者:上海交通大学
技术研发日:2023.05.25
技术公布日:2023/8/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/