用于数据流式计算的内存管理系统及其方法技术方案

技术编号:16152658 阅读:28 留言:0更新日期:2017-09-06 18:10
提供了一种用于数据流式计算的内存管理系统及其方法。所述内存管理系统包括:内存回收装置,用于从数据流式计算的结尾回收原本应被释放给操作系统的内存;内存托管装置,用于托管由内存回收装置回收的内存;以及内存分配装置,用于响应于来自数据流式计算的开端的申请,向数据流式计算的开端分配由内存托管装置托管的内存。通过所述系统及方法,不仅克服了实际向操作系统申请内存的效率问题,而且保留了数据流式计算部分的相对独立性。

【技术实现步骤摘要】
用于数据流式计算的内存管理系统及其方法
本专利技术的示例性实施例总体说来涉及数据计算领域,更具体地说,涉及一种用于数据流式计算的内存管理系统以及利用所述内存管理系统来管理内存的方法。
技术介绍
随着数据量增多,数据流式计算被广泛应用到各个计算系统当中。一般来说,处理非常大规模数据的算法并不会涉及很复杂的计算操作,不然数据量乘计算量之后是一个无法在常规时间内得到结果的任务。当计算操作并不太复杂时,数据的读写、网络延迟等便会成为数据流式计算的效率瓶颈。图1示出现有技术中由操作系统在数据流式计算过程中管理内存分配的示例。具体说来,图1所示的系统包括数据流式计算装置200和系统内存管理装置300。这里,数据流式计算装置200用于执行数据流式计算,而系统内存管理装置300可由操作系统中负责内存管理的部分来充当。具体说来,数据流式计算装置200需要在数据流式计算的开端向系统内存装置300申请内存分配,并在数据流式计算的结尾释放掉相应的内存。然而,随着各种耗时被不断的优化,数据的读写当中内存申请释放的时间占比变得越来越大,逐渐成为数据流式计算的新效率瓶颈。这个瓶颈出现的原因是在数据流式计算装置200以多线程来执行计算的情况下,系统内存管理装置300仍按照单线程来管理系统内存的申请和释放,而当在多线程下频繁地申请释放内存时,管理系统内存的互斥锁便成为了很大的效率瓶颈。目前出现了一些技术方案来解决多线程环境下的内存申请和释放问题,例如,公开号为CN104881324A的中国专利申请《一种多线程下的内存管理方法》通过实现一种多线程内存池来避免访问系统内存的单一互斥锁,通过并行的方法实现加速,该方案需要考虑的应用情况较多,实现逻辑复杂,特别是涉及底层的系统逻辑很难保证正确性和通用性。此外,在数据流式计算背景下,即便使用了多线程内存池,在计算框架申请和释放内存时,内存池还是做了实际的内存申请和释放操作,效率方面仍有不足。
技术实现思路
本专利技术的示例性实施例旨在克服现有流式计算中内存分配的效率瓶颈问题。根据本专利技术的示例性实施例,提供一种用于数据流式计算的内存管理系统,包括:内存回收装置,用于从数据流式计算的结尾回收原本应被释放给操作系统的内存;内存托管装置,用于托管由内存回收装置回收的内存;以及内存分配装置,用于响应于来自数据流式计算的开端的申请,向数据流式计算的开端分配由内存托管装置托管的内存。可选地,在所述内存管理系统中,内存分配装置在内存托管装置托管的内存之中不存在适于分配的可用内存时,向数据流式计算的开端分配从操作系统申请到的内存或向数据流式计算的开端发送用于指示其直接向操作系统申请内存的指示信号。可选地,在所述内存管理系统中,内存回收装置通过回收在数据流式计算的结尾得到的对象来回收内存。可选地,在所述内存管理系统中,内存托管装置包括一个或多个内存池,其中,每个内存池包含一个或多个由针对相同类型的对象的容器组成的容器队列。可选地,在所述内存管理系统中,每个容器具有一个互斥锁。可选地,在所述内存管理系统中,每个内存池包括两个容器队列,其中,所述两个容器队列之中的一个容器队列用于回收对象,并且,所述两个容器队列之中的另一容器队列用于分配对象。可选地,在所述内存管理系统中,每个容器队列具有一个互斥锁。可选地,在所述内存管理系统中,当所述另一容器队列分配对象失败时,内存托管装置将所述一个容器队列与所述另一容器队列互相交换。可选地,在所述内存管理系统中,数据流式计算用于机器学习模型训练,对象对应于机器学习模型的样本。根据本专利技术的另一示例性实施例,提供一种用于数据流式计算的内存管理方法,包括:(A)从数据流式计算的结尾回收原本应被释放给操作系统的内存;(B)托管所回收的内存;以及(C)响应于来自数据流式计算的开端的申请,向数据流式计算的开端分配所托管的内存。可选地,所述内存管理方法还包括:(D)在托管的内存之中不存在适于分配的可用内存时,向数据流式计算的开端分配从操作系统申请到的内存或向数据流式计算的开端发送用于指示其直接向操作系统申请内存的指示信号。可选地,在所述内存管理方法中,在步骤(A)中,通过回收在数据流式计算的结尾得到的对象来回收内存。可选地,在所述内存管理方法中,在步骤(B)中,通过一个或多个内存池来托管所回收的内存,其中,每个内存池包含一个或多个由针对相同类型的对象的容器组成的容器队列。可选地,在所述内存管理方法中,每个容器具有一个互斥锁。可选地,在所述内存管理方法中,每个内存池包括两个容器队列,其中,所述两个容器队列之中的一个容器队列用于回收对象,并且,所述两个容器队列之中的另一容器队列用于分配对象。可选地,在所述内存管理方法中,每个容器队列具有一个互斥锁。可选地,在所述内存管理方法中,在步骤(C)中,当所述另一容器队列分配对象失败时,将所述一个容器队列与所述另一容器队列互相交换。可选地,在所述内存管理方法中,数据流式计算用于机器学习模型训练,对象对应于机器学习模型的样本。根据本专利技术的另一示例性实施例,提供一种用于数据流式计算的内存管理的计算装置,其中,所述计算装置包括存储部件和处理器,存储部件中存储有计算机可执行指令集合,当所述计算机可执行指令集合被所述处理器执行时,执行根据本专利技术示例性实施例的上述方法。在根据本专利技术示例性实施例的内存管理系统及其内存管理方法中,独立于操作系统设置了针对数据流式计算的内存分配回收机制,不仅克服了实际向操作系统申请内存的效率问题,而且保留了数据流式计算部分的相对独立性。同时,上述方案在易实现性和稳定性方面也具有突出的优势,能够满足数据流式计算的性能要求。附图说明从下面结合附图对本专利技术实施例的详细描述中,本专利技术的这些和/或其他方面和优点将变得更加清楚并更容易理解,其中:图1示出现有技术中由操作系统在数据流式计算过程中管理内存分配的示例;图2示出根据本专利技术示例性实施例的包括内存管理系统的计算系统的示例;图3示出根据本专利技术示例性实施例的内存管理系统的结构的框图;图4示出根据本专利技术示例性实施例的内存管理方法的流程图;图5示出根据本专利技术示例性实施例的内存分配步骤的流程图;图6示出根据本专利技术另一示例性实施例的内存分配步骤的流程图;图7示出根据本专利技术示例性实施例的内存托管装置中的内存池的示例;以及图8示出根据本专利技术另一示例性实施例的内存托管装置中的内存池的示例。具体实施方式为了使本领域技术人员更好地理解本专利技术,下面结合附图和具体实施方式对本专利技术的示例性实施例作进一步详细说明。数据流式计算要求计算系统可以接受大量的、不间断的数据,相应地,不再进行流式数据的存储,而是当流动的数据到来后在内存中直接进行数据的实时计算。本专利技术的示例性实施例涉及一种用于数据流式计算的内存管理系统,作为示例,该内存管理系统可置于操作系统之上层,用于针对数据流式计算进行内存的分配与回收。图2示出根据本专利技术示例性实施例的包括内存管理系统的计算系统的示例。参照图2,除了数据流式计算装置200和系统内存管理装置300之外,所述计算系统还包括内存管理系统100。这里,所述数据流式计算装置200用于针对流式数据执行处理。具体说来,数据流式计算装置200用于接收数据流,并利用申请到的内存来执行相应数据流的处理。对于数据流式计算而言,本文档来自技高网
...
用于数据流式计算的内存管理系统及其方法

【技术保护点】
一种用于数据流式计算的内存管理系统,包括:内存回收装置,用于从数据流式计算的结尾回收原本应被释放给操作系统的内存;内存托管装置,用于托管由内存回收装置回收的内存;以及内存分配装置,用于响应于来自数据流式计算的开端的申请,向数据流式计算的开端分配由内存托管装置托管的内存。

【技术特征摘要】
1.一种用于数据流式计算的内存管理系统,包括:内存回收装置,用于从数据流式计算的结尾回收原本应被释放给操作系统的内存;内存托管装置,用于托管由内存回收装置回收的内存;以及内存分配装置,用于响应于来自数据流式计算的开端的申请,向数据流式计算的开端分配由内存托管装置托管的内存。2.如权利要求1所述的内存管理系统,其中,内存分配装置在内存托管装置托管的内存之中不存在适于分配的可用内存时,向数据流式计算的开端分配从操作系统申请到的内存或向数据流式计算的开端发送用于指示其直接向操作系统申请内存的指示信号。3.如权利要求1所述的内存管理系统,其中,内存回收装置通过回收在数据流式计算的结尾得到的对象来回收内存。4.如权利要求3所述的内存管理系统,其中,内存托管装置包括一个或多个内存池,其中,每个内存池包含一个或多个由针对相同类型的对象的容器组成的容器队列。5.如权利要求4所述的内存管理系统,其中,每个内存池包括两个容器队列,其中,...

【专利技术属性】
技术研发人员:戴文渊杨强陈雨强焦英翔石光川涂威威
申请(专利权)人:第四范式北京技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1