在多进程计算环境中精确跟踪内存使用制造技术

技术编号:14872693 阅读:50 留言:0更新日期:2017-03-23 20:27
方法、系统、和装置包括在计算机存储介质上编码的计算机程序,以用于在多进程计算环境中精确地跟踪内存使用。所述方法中的一个包括在计算机系统的节点中运行的每个进程中实现内存使用跟踪器(MUT)的实例。MUT能够对于运行在其上MUT运行的进程上的多个逻辑拥有者中的每一个维持内存使用的账户。MUT能够确定每个拥有者的实际内存配额,并且施行所述拥有者的实际内存配额。施行拥有者的实际内存配额能够包括:接收每个内存分配请求,相对实际配额来检查每个分配请求和账户的当前状态,批准或拒绝每个分配请求,将所述批准或拒绝传输到底层内存管理器,以及对于每个所批准的分配请求,更新该拥有者账户。

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
内存是很大程度上确定数据库性能和稳定性的关键系统资源。在本说明书中,术语“内存(memory)”,除非修改,指的是随机存取存储器。在没有足够内存存在的情况下,因为溢出或简单地出错,查询会缓慢,而导致不期望的行为。由于内存是无限的,适当内存管理是确保公平和可接受的使用以及最佳的可能用户体验的关键。在大规模并行处理(MPP)数据库中,以下高级步骤描述了查询处理:1.用户提交查询。2.解析器解析查询。3.计划器对查询进行计划并产生查询计划树,其由不同进程构成;进程可以在该树上多次发生。4.内存配额进程向每个操作器指派限定该操作器能够使用的最大内存的一定内存配额,以限制其运行时内存分配。5.计划被调度给多个工作者节点来以分布式方式执行。6.每个工作者节点接收它的计划树的副本,其指示被指派给该进程的内存配额。7.查询执行引擎执行计划。8.通过服务器,向用户返回结果。贯穿此过程,内存由多个查询分配。为了确保内存的公平使用和适当利用以及确保系统稳定性,系统必须进行下述操作:1.测量每个查询的内存使用。2.检查以了解内存使用是否在配额内。3.对于不同查询施行(enforce)内存配额。每个主要数据库具有内存管理器来有效率地分配和释放内存。此外,主要的数据库具有算法来在对查询的计划期间向SQL(结构查询语言)语句指派内存配额。在执行期间,内存管理器通常使用内存区域来将内存分配给SQL操作器,其主要为了效率以及为了跟踪分配。
技术实现思路
本说明书描述了用于在计算环境中跟踪内存使用的技术。这些技术大体上涉及在计算机系统的节点中运行的多个进程中的每一个中实现内存使用跟踪器(MUT)的实例。每个MUT对于运行在与该MUT相关联的相应进程上的多个拥有者中的每一个维持内存使用的账户。每个拥有者是与公共功能相关联的代码的一个或多个区域的集合的逻辑拥有者。MUT能够确定每个拥有者的实际内存配额。MUT通过以下操作来施行每个拥有者的实际内存配额:接收每个拥有者所作出的对于内存的分配请求,相对该拥有者的实际配额来检查每个分配请求和该拥有者的账户的当前状态,批准或拒绝每个分配请求,将所述批准或拒绝传输到底层内存管理器,以及对于每个所批准的分配请求,更新该拥有者的账户。附图说明图1A是用于跟踪内存使用的示例系统的图。图1B是多进程计算系统中的示例内存使用跟踪器(MUT)的图。图2是在多进程计算系统中执行内存分配的流程图。图3是在多进程计算系统中释放所分配的内存的流程图。图4是在多进程计算系统中执行逻辑内存仲裁的流程图。图5是确定账户和/或子账户的共享报头是否存在并且为账户和/或子账户分配新的共享报头的流程图。图6是在多进程计算系统中释放内存块(memorychunk)的流程图。图7是在多进程计算系统中执行对内存的成批释放的流程图。图8描绘了示例数据库管理系统。具体实施方式1.1内存管理器系统任何内存管理器的可用性依赖于测量每个查询的内存使用的精确度。如果测量错误或不精确,则不可能确保公平的内存使用或者确保系统稳定性。本说明书描述了内存管理器系统,其能够跟踪不同查询的精确内存使用并且提供了这些功能。内存管理器系统能够确保公平的内存使用和适当的内存利用,并且最重要的是,其能够改善系统稳定性。因为内存管理器系统通过不同组件提供了对内存使用的精确跟踪,所以其不需要作出这三个通常的假设:1.存在已知的内存密集型查询的集合2.对内存密集型查询的内存使用的跟踪足够好,以确保公平使用和适当内存利用3.内存密集型查询在独占(exclusive)内存区域的集合中分配并且存在对内存区域和内存密集型操作器的一对一映射在示例实施方式中将在数据库管理系统(DBMS)中描述内存管理器系统。DBMS实现并行处理并且能够是MPP数据库。数据库操作于多个物理计算机节点上。在一些实施方式中,在每个节点上,一个或多个段——即段实例——被实例化。每个段是逻辑节点,并且可以被认为是虚拟机。每个段通常将运行许多进程;每个进程是个体可执行单元。每个进程具有其本身的内存配额及其本身的内存管理器系统的实例。特定进程的内存管理器系统具有一些能力来与节点上其他进程的内存管理器系统交互,稍后将对其描述。DBMS将复杂查询分成小任务且将它们分发以供执行。节点一起工作以形成单个并行查询处理系统。内存管理器系统能够监视使用,施行配额以确保公平,以及基于系统负载来调整以确保适当的内存利用。内存管理器系统具有以下特征:1.其跟踪不同查询的精确内存使用。2.其提供可扩展框架以灵活地限定跟踪哪些查询;使用该框架,能够跟踪任何数目的SQL进程,以及非进程组件。3.其能够基于分配地点(诸如代码区域的功能或文件)来测量在任意代码区域处的内存使用。这样的任意代码区域被称为内存拥有代码类型或简单被称为拥有者类型。使用代码区域的实例被称为内存拥有代码或简称为拥有者。4.作为代码区段的内存拥有者类型均能够被指派任何数目的不同角色中的一个,例如与SQL进程相对应的表扫描、排序或汇总,或者甚至与非SQL进程组件相对应的角色,例如查询计划器。5.内存管理器系统能够对每拥有者来从不同内存区域收集分配且能够区分单个内存区域内的对不同拥有者的分配。在跟踪分配以作为内存账户的场境(context)中,对拥有者分配和拥有者账户的引用应当总是被理解为是对拥有者的分配和账户的引用。6.内存管理器系统能够跟踪丢失的利用。7.内存管理器系统能够检测低系统内存并暂停或终止一个或多个查询以确保系统稳定性。内存管理器系统基于分配地点——即作出内存分配请求的代码中的地点,来跟踪分配所有权——即哪个代码实例负责内存分配。每个分配地点与标识拥有者类型的信息相关联,在缺乏对所有权的特定指派时其可以是全方位(catch-all)的。此外,内存管理器系统框架支持多态分配地点,使得从共享库所作出的分配能够基于分配共享库进程、对库的调用的拥有者、以及进程在查询计划树的何处执行来假设多个所有权。这允许获得精确的所有权跟踪。1.2拥有者和内存账户内存的拥有者类型是基于代码基的逻辑划分来定义的,例如MPPDBMS的代码基。与数据库进程——例如SQL进程——相关的代码的区域或者与解析器、计划器、优化器、调度器、查询串行器和解串器、执行器或其他操作器、或者视需要的其他非进程组件相关的代码的区域,能够被识别为相异的拥有者类型。在划分被决定后,其能够以多种方式来实现,只要净效果是内存管理器系统能够对于每个内存分配确定划分的哪个实例——即哪个拥有者——应当是分配的起因。例如,利用向内存管理器系统API的调用可以将代码仪表化,所述呼叫在任何时候通知内存管理器系统哪个拥有者代码正被执行。替选地,内存管理器系统能够包括网关,通过该网关能够作出对与拥有者相对应的进程——例如数据库进程——的调用,并且网关能够提供或维持切换所有权所需的信息。然后,内存管理器系统能够在相应内存账户中记录拥有者的内存使用,所述内存账户是记录拥有者的内存使用的计数器。拥有者中的每一个能够进一步通过使用子内存账户来将其内存使用与底层子系统——诸如存储、互连、目录访问等——的内存使用分离。拥有者具有拥有者类型。拥有者仅具有一个拥有者类型,其对应于与拥有者类型的进程或非进程组件相关联的代码的区域。每个拥有本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201580038376.html" title="在多进程计算环境中精确跟踪内存使用原文来自X技术">在多进程计算环境中精确跟踪内存使用</a>

【技术保护点】
一种装置,包括:计算机系统,包括一个或多个操作地互连的主机,每个主机包括计算机和一个或多个存储设备,所述存储设备存储指令,所述指令可操作以在所述一个或多个主机上被执行时,使得所述一个或多个主机在计算机系统的节点中运行的多个进程中的每一个中实现内存使用跟踪器(MUT)的实例,所述内存使用跟踪器的每个实例可操作以对该实例在其上运行的进程执行以下操作:对于运行在该进程上的多个拥有者中的每一个维持内存使用的账户,每个拥有者是逻辑拥有者的实例,每个逻辑拥有者是与公共功能相关联的代码的一个或多个区域的集合;确定每个拥有者的实际内存配额;以及对于每个拥有者来施行该拥有者的实际内存配额,包括:接收每个拥有者所作出的对于内存的每个分配请求;相对该拥有者的实际配额来检查每个分配请求和该拥有者的账户的当前状态;批准或拒绝每个分配请求,并且将所述批准或拒绝传输到底层内存管理器;以及对于每个所批准的分配请求,更新该拥有者的账户。

【技术特征摘要】
【国外来华专利技术】2014.06.13 US 62/012,2561.一种装置,包括:计算机系统,包括一个或多个操作地互连的主机,每个主机包括计算机和一个或多个存储设备,所述存储设备存储指令,所述指令可操作以在所述一个或多个主机上被执行时,使得所述一个或多个主机在计算机系统的节点中运行的多个进程中的每一个中实现内存使用跟踪器(MUT)的实例,所述内存使用跟踪器的每个实例可操作以对该实例在其上运行的进程执行以下操作:对于运行在该进程上的多个拥有者中的每一个维持内存使用的账户,每个拥有者是逻辑拥有者的实例,每个逻辑拥有者是与公共功能相关联的代码的一个或多个区域的集合;确定每个拥有者的实际内存配额;以及对于每个拥有者来施行该拥有者的实际内存配额,包括:接收每个拥有者所作出的对于内存的每个分配请求;相对该拥有者的实际配额来检查每个分配请求和该拥有者的账户的当前状态;批准或拒绝每个分配请求,并且将所述批准或拒绝传输到底层内存管理器;以及对于每个所批准的分配请求,更新该拥有者的账户。2.如权利要求1所述的装置,其中,对于每个拥有者施行该拥有者的实际内存配额进一步包括:接收一个或多个解除分配请求以对先前由拥有者分配的内存解除分配,并且对于每个解除分配请求:识别先前分配该内存的拥有者;以及更新该拥有者的账户。3.如权利要求1所述的装置,其中,所述操作进一步包括:对于一个或多个多态拥有者中的每一个维持内存使用的子账户,每个多态拥有者是多态逻辑拥有者的实例,每个多态逻辑拥有者是与公共功能相关联的代码的一个或多个区域的集合,每个多态拥有者针对相应的拥有者来运行;以及将针对拥有者运行的多态拥有者所作的任何分配请求计入该拥有者的账户以及该多态拥有者的子账户。4.如权利要求1所述的装置,其中所述一个或多个计算机存储介质是非暂时性的;所述多个逻辑拥有者包括作为代码的多个非毗连区域的集合的逻辑拥有者;初始地确定每个拥有者的实际内存配额作为该逻辑拥有者的逻辑内存配额;以及所述底层内存管理器是基于区域的内存管理器。5.如权利要求1所述的装置,所述操作进一步包括:接收表示每个逻辑拥有者的逻辑内存配额的数据;以及根据对应的逻辑拥有者的逻辑内存配额,确定每个拥有者的实际内存配额。6.如权利要求1所述的装置,所述操作进一步包括:在具有长寿命分配的账户和任何子账户的原始拥有者已经终止之后,将所有权从所述原始拥有者切换至滚转账户。7.如权利要求1所述的装置,所述操作进一步包括:当包括多个逻辑拥有者的程序的寿命的新分区开始时,根据划分该寿命的逻辑执行模型来将所有权从账户和任何子账户的原始拥有者切换至滚转账户。8.如权利要求1所述的装置,所述操作进一步包括:从在所述计算机系统的与所述内存使用跟踪器的所述实例相同的节点中运行的一个或多个其他内存使用跟踪器实例获得内存使用数据;检测影响在所述计算机系统的与所述内存使用跟踪器的所述实例相同的节点中运行的全部的所述多个进程的低内存状况;以及从由在所述相同的节点中运行的全部的内存使用跟踪器实例跟踪的拥有者当中识别特定拥有者作为应当被终止的拥有者;以及当所述特定拥有者运行在与所述内存使用跟踪器的所述实例相同的进程中时,终止所述特定拥有者。9.如权利要求1所述的装置,所述操作进一步包括:从在所述计算机系统的与所述内存使用跟踪器的所述实例相同的节点中运行的一个或多个其他内存使用跟踪器实例中获得每任务内存使用数据;检测影响在所述计算机系统的与所述内存使用跟踪器的所述实例相同的节点中运行的全部的所述多个进程的低内存状况;确定所述多个进程中执行的多个更高级别任务中的每一个的汇总内存使用和汇总配额,其中,所述更高级别任务中的每一个包括一个或多个拥有者;基于所述任务中的每一个的所述汇总内存使用和所述汇总配额之间的关系来确定该任务的分值;选择具有最差分值的特定任务作为待终止的任务;以及当所述特定任务在与所述内存使用跟踪器的所述实例相同的进程中运行时,终止所述特定任务。10.如权利要求1所述的装置,所述操作进一步包括:接收表示查询计划树的数据,所述查询计划树是SQL查询的SQL查询计划的一部分,所述查询计划树包括表示SQL操作器的操作器节点元素和表示非SQL操作器的非操作器节点元素;以及根据与所述查询计划树相对应的账户树结构来维持每个拥有者的内存使用的账户,其中,每个拥有者具有逻辑拥有者,该逻辑拥有者具有执行所述查询计划树的对应操作器节点元素的操作的代码。11.如权利要求10所述的介质,所述操作进一步包括:从...

【专利技术属性】
技术研发人员:穆罕默德·福伊祖尔·拉赫曼乔治·康斯坦丁·卡拉贾卡洛斯·加西亚阿尔瓦拉多米哈伊尔·彼得罗普洛斯
申请(专利权)人:皮沃塔尔软件公司
类型:发明
国别省市:美国;US

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

1