本发明涉及内存管理与应用性能优化领域,特别是涉及一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法。
背景技术:
随着以高带宽内存(highbandwidthmemory,hbm)为代表的3d堆叠内存技术的出现,由多种种类、性能各不相同的存储器组成的异构内存系统得到愈发广泛的应用。因为其与传统同构内存系统的不同,研究针对异构内存且能够充分发挥不同存储器特性的高效内存管理机制已成为业界的研发热点。另一方面,两种典型应用:延迟攸关应用与批处理应用对内存特性的敏感度以及自身性能评价指标存在巨大差异,具体体现为延迟攸关延迟攸关应用对客户端请求的处理时间,即服务质量(qualityofservice,qos)有较高要求,而批处理应用则更多考虑到程序吞吐量,对系统提供的内存带宽有较高要求。因此,研究如何利用异构内存系统提供的多种内存资源,来优化延迟攸关延迟攸关应用与批处理应用混合部署时的系统整体性能具有重要意义。
已有的研究工作通过分析应用数据对象的访存特性,获取单个数据对象的带宽敏感度以及延迟敏感度作为评估其内存放置位置的依据,以此来提高应用的性能。然而这类方法均忽略了延迟攸关应用与批处理应用访存特性以及对性能指标要求的巨大差异,不支持在应用运行过程中依据应用的相关性能数据对数据对象进行动态迁移。也有一些研究工作针对运行时系统,从高速缓存(以下简称cache)以及处理器资源的角度,通过实验分析延迟攸关应用,获取其阶段性行为特征来作为系统资源分配的依据;在分配资源时仅分配适当的资源给延迟攸关应用以保证其服务质量,并将剩余的资源分配给批处理应用以提高系统整体资源利用率。但这类方法并没有涉及异构内存系统以及内存管理机制,而且忽视批处理应用内部存在的竞争问题以及隐藏的性能受损隐患。
目前关于异构内存管理机制优化以及多类应用混合部署场景下性能优化的相关研究已经不断深入,各种针对应用数据对象的放置与迁移机制已经在hbm、双倍速率(doubledatarate,ddr)存储器、非易失性存储器(non-volatilememory,nvm)等多种内存组成的各种异构内存系统上得到了验证。但现有的研究仍存在以下几个主要问题:
(1)在延迟攸关应用与批处理应用混合部署场景下,缺少相关内存管理机制可以充分利用异构内存系统提供的多种不同特性的内存资源,以同时满足延迟攸关应用与批处理应用各自不同的性能需求。
(2)在制定数据对象放置与迁移策略时,均采用启发式思想:基于事先分析得到的单个数据对象的敏感度特性规定数据对象对应的放置位置,即放置策略;默认按照制定的放置策略放置所有数据对象便可取得应用整体的最优性能。然而该启发式算法无法保证解最优,因为将应用的数据划分为单个数据对象意味着忽视应用的整体特性,而应用中的所有单个数据对象性能最优不等同于应用整体性能最优。
(3)仅从静态的数据放置工具或者动态迁移运行时系统的角度去进行内存管理优化,并未考虑将两者进行结合可以更全面地优化应用性能。
技术实现要素:
为了克服当前研究存在的问题,本发明针对单个延迟攸关应用与多个批处理应用的混合部署场景以及由hbm与ddr组成的异构内存系统,设计一种数据放置与迁移方法,不仅在静态分析阶段从数据对象角度出发对应用进行拆分时考虑到应用的整体性,还可以在应用运行过程中从运行时的角度对应用进行动态监控与数据迁移调整,从而达到充分利用异构内存系统提供的多种内存资源,满足延迟攸关应用与批处理应用各自的性能需求以及提升系统整体性能的目的。
本发明的技术方案:一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法,其特征包括三部分:应用静态分析方法、数据静态放置方法和运行时动态迁移机制,其中:
应用静态分析方法:用于实现应用数据对象的提取、分析以及逻辑划分;分析应用程序源代码,提取出所有数据对象;基于各个函数之间通过各种数据对象进行信息传递这一前提,以函数作为评估数据对象之间依赖关系的媒介,以数据对象是否是该函数的输入或输出以及数据量的大小作为二者是否存在依赖关系的依据,生成对应的数据对象流图;基于数据对象流图,量化函数与相关的数据对象之间的依赖度;将依赖紧密的部分数据对象划分为一个逻辑数据对象(logicdataobject,ldo),作为后续进行数据放置与动态迁移的基本单位;而针对延迟攸关应用以及批处理应用,基于各自在应用输入上的不同特性,设计不同的逻辑数据对象划分机制;应用静态分析方法最终会生成与目标应用程序对应的一个逻辑数据对象集合。
数据静态放置方法:用于实现对逻辑数据对象的敏感度分析以及数据对象静态放置策略的生成;以应用静态分析方法提供的逻辑数据对象集合作为输入,定义带宽敏感度以及延迟敏感度,分别代表逻辑数据对象对内存带宽以及内存延迟的敏感程度;对逻辑数据对象集合中的所有逻辑数据对象分别进行带宽敏感度和延迟敏感度分析,得出单个逻辑数据对象的敏感类型,并确定单个逻辑数据对象对应的放置策略;针对hbm高带宽、高访问延迟以及ddr低带宽、低访问延迟的特性,规定带宽敏感型数据对象优先放置于hbm,延迟敏感型数据对象优先放置于ddr;基于延迟攸关应用与批处理应用的不同性能需求与特性,提供两种不同的敏感度分析策略;待全部逻辑数据对象分析完毕后,基于所有敏感度数据,进行全局分析,生成目标应用最终的数据对象静态放置策略表。
运行时动态迁移机制:用于在应用运行过程中,利用硬件性能取样工具提供的数据实时分析应用性能状况,并及时动态地对相关应用的逻辑数据对象进行迁移;在应用部署完成开始运行时,根据数据静态放置方法提供的放置策略表进行数据对象的初始放置;基于硬件性能取样工具提供的关于cache的相关数据,分析延迟攸关应用的行为特征并评估其处于空闲(以下简称idle)阶段或者处于活跃(以下简称active)阶段;依据延迟攸关应用所处的阶段,以优先保证延迟攸关应用的qos为首要原则,制定相应的数据对象迁移策略;当延迟攸关应用由active阶段转变为idle阶段时,需要根据上一个active阶段延迟攸关应用的性能数据对延迟攸关应用相关数据对象的放置策略进行调整;同时,针对应用间的公平性问题,通过对比数据静态放置方法提供的各个逻辑数据对象的初始放置策略与实际放置位置,评估所有批处理应用中性能受损最严重的应用,对与该应用相关的逻辑数据对象进行动态迁移;而当延迟攸关应用由idle阶段转变为active阶段时,需要根据前一个idle阶段调整的放置策略对延迟攸关应用的逻辑数据对象进行动态迁移。
本发明与现有技术相比的创新之处在于:本发明实现了一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法,基于数据对象对应于进行拆分的同时考虑到应用的整体性,充分利用异构内存系统提供的多种内存资源以满足延迟攸关应用与批处理应用不同的性能需求。具体体现在:
(1)针对hbm高带宽、高访问延迟、小容量与ddr低带宽、低访问延迟、大容量的特性,为带宽敏感型数据对象与延迟敏感型数据对象分别制定不同的放置策略,以全面、充分地利用异构内存资源。
(2)不以单个数据对象作为数据放置、迁移的单位,而是基于对应用整体性的考虑,以数据对象与函数之间存在的输入输出关系作为媒介,评估各个数据对象间的依赖度;并以该依赖度为依据,将依赖紧密的部分数据对象划分为一个逻辑数据对象,作为放置与迁移操作的基本单位,从而最大程度上保持其与应用整体行为特征的一致性。
(3)本发明从静态的数据放置工具以及动态迁移运行时系统两种角度设计,可以更全面地覆盖应用的执行流程,从而更有效地优化应用性能。
附图说明
图1为本发明的系统整体架构图;
图2为本发明中的应用静态分析方法的实现过程;
图3为本发明中的应用静态分析方法中定义的数据对象流图示例;
图4为本发明中的数据静态放置方法的实现原理;
图5为本发明中的运行时动态迁移机制的实现原理。
具体实施方式
如图1所示的系统构架图可知,本发明提出一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法,由应用静态分析方法、数据静态放置方法以及运行时动态迁移机制组成。整体实现过程如下:
(一)应用静态分析方法:用于实现应用数据对象的提取、分析以及逻辑划分;分析应用程序源代码,提取出所有数据对象;基于各个函数之间通过各种数据对象进行信息传递这一前提,以函数作为评估数据对象之间依赖关系的媒介,以数据对象是否是该函数的输入或输出以及数据量的大小作为二者是否存在依赖关系的依据,生成对应的数据对象流图;基于数据对象流图,量化函数与相关的数据对象之间的依赖度;将依赖紧密的部分数据对象划分为一个逻辑数据对象,作为后续进行数据放置与动态迁移的基本单位;而针对延迟攸关应用以及批处理应用,基于各自在应用输入上的不同特性,设计不同的逻辑数据对象划分机制;应用静态分析方法最终会生成与目标应用程序对应的一个逻辑数据对象集合。
(二)数据静态放置方法:用于实现对逻辑数据对象的敏感度分析以及数据对象静态放置策略的生成;以应用静态分析方法提供的逻辑数据对象集合作为输入,定义带宽敏感度以及延迟敏感度,分别代表逻辑数据对象对内存带宽以及内存延迟的敏感程度;对逻辑数据对象集合中的所有逻辑数据对象分别进行带宽敏感度和延迟敏感度分析,得出单个逻辑数据对象的敏感类型,并确定单个逻辑数据对象对应的放置策略;针对hbm高带宽、高访问延迟以及ddr低带宽、低访问延迟的特性,规定带宽敏感型数据对象优先放置于hbm,延迟敏感型数据对象优先放置于ddr;基于延迟攸关应用与批处理应用的不同性能需求与特性,提供两种不同的敏感度分析策略;待全部逻辑数据对象分析完毕后,基于所有敏感度数据,进行全局分析,生成目标应用最终的数据对象静态放置策略表。
(三)运行时动态迁移机制:用于在应用运行过程中,利用硬件性能取样工具提供的数据实时分析应用性能状况,并及时动态地对相关应用的逻辑数据对象进行迁移;在应用部署完成开始运行时,根据数据静态放置方法提供的放置策略表进行数据对象的初始放置;基于硬件性能取样工具提供的关于cache的相关数据,分析延迟攸关应用的行为特征并评估其处于idle阶段或者处于active阶段;依据延迟攸关应用所处的阶段,以优先保证延迟攸关应用的qos为首要原则,制定相应的数据对象迁移策略;当延迟攸关应用由active阶段转变为idle阶段时,需要根据上一个active阶段延迟攸关应用的性能数据对延迟攸关应用相关数据对象的放置策略进行调整;同时,针对应用间的公平性问题,通过对比数据静态放置方法提供的各个逻辑数据对象的初始放置策略与实际放置位置,评估所有批处理应用中性能受损最严重的应用,对与该应用相关的逻辑数据对象进行动态迁移;而当延迟攸关应用由idle阶段转变为active阶段时,需要根据前一个idle阶段调整的放置策略对延迟攸关应用的逻辑数据对象进行动态迁移。
上述各组成部分的实现原理及过程如下:
1.应用静态分析方法的实现
该方法的实现过程如图2所示:
(1)扫描应用程序源代码,提取数据对象,并生成数据对象流图。
(2)数据对象流图是整个静态分析的基础。其定义示例如图3所示。本发明基于各个函数之间通过各种数据对象进行信息传递这一前提,以函数作为评估数据对象之间依赖关系的媒介。数据对象流图以函数为中心,以数据对象是否是该函数的输入或输出以及数据量的大小作为是否存在依赖关系的依据,生成对应的数据对象流图。其中从数据对象出发,指向函数的单项箭头表明该数据对象为该函数的输入;反之则表明该数据对象为该函数的输出。对于批处理应用,因为其应用总输入已知,所以对应各个数据对象的数据量大小也随之确定;而延迟攸关应用的输入则一般不确定,所以数据对象流图无法确定其各个数据对象的数据量大小。
(3)数据对象流图依据函数与相关的数据对象之间的依赖关系来划分子图,每个子图包含的所有数据对象构成一个逻辑数据对象。而延迟攸关应用与批处理应用的具体划分算法则各不相同。
批处理应用:
延迟攸关应用:
2.数据静态放置方法的实现
本方法的实现原理如图4所示,具体实现原理如下:
(1)首先定义逻辑数据对象的延迟敏感度:通过改变实验部署环境下存储器的访问延迟而测试得到的目标逻辑数据对象单位大小下的访存延迟改变比例。其形式化定义如下:
其中latency(s,a)表示访存指令s访问逻辑数据对象a所消耗的cpu周期数,c(a)为n次实验取平均值,即平均访存延迟。而cremote(a),clocal(a)分别代表在改变存储器访问延迟前后得到的平均访存延迟。ls(a)代表访存延迟改变比例,即延迟敏感度。
定义逻辑数据对象的带宽敏感度:通过改变处理访问该逻辑数据对象请求的处理器核心数目而测试得到的目标逻辑数据对象的访存延迟改变比例。其中考虑到数据移动产生的带宽开销以及hbm的容量,针对批处理应用,需要对访存延迟改变比例进行单位化,即除以目标数据逻辑对象的大小。对于延迟攸关应用,因为其对qos的高要求性,则不需要单位化。带宽敏感度形式化定义如下:
其中cmulti(a)代表多核处理访存请求时得到的目标逻辑数据对象的平均访存延迟,cone(a)代表单核处理访存请求时得到的目标逻辑数据对象的平均访存延迟。bs(a)代表访存延迟改变比例,即带宽敏感度。
(2)对逻辑数据对象进行敏感度分析,之后依据敏感度类型判定策略进行敏感类型判定。这里延迟攸关应用与批处理应用的处理流程各不相同。
批处理应用:
延迟攸关应用:
其中,
(3)针对所有敏感度数据,计算生成全局放置策略:
(4)数据静态放置方法最终生成一份数据对象静态放置策略表,包括逻辑数据对象的编号、类型(即属于延迟攸关应用或批处理应用以及为带宽敏感型或延迟敏感型)、初始放置位置以及实际的放置位置等信息。
(5)同时生成一份延迟攸关应用放置策略备用方案表,记录所有初始逻辑数据对象通过遗传算法得出的部分子集组合的放置策略。该备用方案表为后续的运行时动态迁移机制进行放置策略调整时提供查询依据。
3.运行时动态迁移机制的实现
运行时动态迁移机制的实现原理如图5所示,本机制用于在应用运行过程中保证延迟攸关应用的服务质量以及批处理应用之间的公平性。具体实现过程如下:
(1)利用硬件性能采样工具提供的最后一级cache(lastlevelcache,llc)未命中数量等相关性能数据,判定延迟攸关应用的状态,即延迟攸关应用处于idle阶段或者处于active阶段;处于idle阶段说明延迟攸关应用此时处于低负载状态,active阶段则说明延迟攸关应用处于高负载状态;以这一状态信息驱动整个运行时动态迁移机制的运行。
(2)定义lc-change原则:当应用的整体负载量变化时,若一个逻辑数据对象由带宽敏感型变为了延迟敏感型,则需要将其由hbm移动至ddr。此时可以将该逻辑数据对象与和其同处一个逻辑内存区域的批处理应用的相关逻辑数据对象进行位置交换。
(3)当延迟攸关应用由active转为idle阶段时:
(4)延迟攸关应用由idle转为active阶段时:
本发明未详细阐述部分属于本领域公知技术。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。