一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法与流程

文档序号:16971876发布日期:2019-02-26 18:37阅读:159来源:国知局
一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法与流程

本发明涉及内存管理与应用性能优化领域,特别是涉及一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法。



背景技术:

随着以高带宽内存(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)数据对象流图依据函数与相关的数据对象之间的依赖关系来划分子图,每个子图包含的所有数据对象构成一个逻辑数据对象。而延迟攸关应用与批处理应用的具体划分算法则各不相同。

批处理应用:

数据对象a只作为函数的输入:其数据量大小用sizea表示,设定阈值yinput,当sizea>yinput时,将a与对应的函数划分在一个子图内;若存在循环访问属性,循环次数为n,则当时,将a与对应的函数划分在一个子图内。

数据对象a只作为函数的输出:其数据量大小用sizea表示,设定阈值youtput,当sizea>youtput时,将a与对应的函数划分在一个子图内;若存在循环访问属性,循环次数为n,则当时,将a与对应的函数划分在一个子图内。

数据对象a既为函数的输入又为函数的输出:直接将a与该函数划分在一个子图内。

设划分出的子图包含的总数据量大小为sizedata_object_sum,并规定阈值sizemax,若sizedata_object_sum>sizemax,则需要进行进一步的拆分,直至子图对应的sizedata_object_sum≤sizemax。

若一个数据对象同时包含在了多个子图内,则优先将其划分在与核心函数相关的数据量大小较大的子图内。

延迟攸关应用:

依据宏观的应用功能逻辑,将数据对象流图进行分组,生成初始子图集合。

在每组初始子图中,将函数和与其存在输出依赖的数据对象划分在一个子图内。

设一个子图内数据对象的总个数为numbersum,并规定数据对象个数上限numbermax,若numbersum>numbermax,则需要进一步拆分,直至该子图对应的numbersum≤numbermax。

若一个数据对象同时包含在了多个子图内,则运用随机算法决定其归属的子图。

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)对逻辑数据对象进行敏感度分析,之后依据敏感度类型判定策略进行敏感类型判定。这里延迟攸关应用与批处理应用的处理流程各不相同。

批处理应用:

针对应用静态分析方法提供的所有初始逻辑数据对象,分别进行带宽敏感度与延迟敏感度分析。

测试带宽敏感度时,考虑到数据移动产生的带宽开销以及hbm的容量,需要除以目标数据逻辑对象的大小进行单位化;延迟敏感度则不需要进行单位化。

规定带宽敏感型阈值bsbatch,目标逻辑数据对象a的带宽敏感度为bs(a),若bs(a)>bsbatch,则将a划定为带宽敏感型;规定延迟敏感型阈值lsbatch,目标逻辑数据对象a的延迟敏感度为ls(a),若ls(a)>lsbatch,则将a划定为延迟敏感型;若目标逻辑数据对象a既为带宽敏感型,又为延迟敏感型,则基于批处理应用对带宽的高需求,将a划定为带宽敏感型。

带宽敏感型的目标逻辑数据对象优先放置在hbm,延迟敏感型则优先放置在ddr。

延迟攸关应用:

针对应用静态分析方法提供的所有初始逻辑数据对象,分别进行带宽敏感度与延迟敏感度分析。

带宽敏感度与延迟敏感度均不需要进行单位化。

规定带宽敏感型阈值bslc,目标逻辑数据对象a的带宽敏感度为bs(a),若bs(a)>bsls,则将a划定为带宽敏感型;规定延迟敏感型阈值lslc,目标逻辑数据对象a的延迟敏感度为ls(a),若ls(a)>lslc,则将a划定为延迟敏感型;若目标逻辑数据对象a既为带宽敏感型,又为延迟敏感型,则基于延迟攸关应用对qos的高需求,将a划定为延迟敏感型。

带宽敏感型的目标逻辑数据对象优先放置在hbm,延迟敏感型则优先放置在ddr。

因为延迟攸关应用的数据对象流图信息不完整,即缺少数据量信息,其子图划分的效果得不到保障,所以需要为运行时机制进行动态数据迁移调整时准备预备方案:针对每个目标逻辑数据对象,运用遗传算法,对随机拆分得到的部分子集组合进行敏感度计算,记录下所有的中间解以及最终的最优解作为备用方案。在运用遗传算法进行迭代时,采用的评价公式定义如下:

其中,代表该子集组合下所有逻辑数据对象的延迟敏感度加和,代表该子集组合下所有逻辑数据对象的带宽敏感度加和。记当前迭代对应的子集组合的评价为judge(a),此前的最优解对应的评价为judgebest。若judge(a)>judgebest,则标记当前迭代对应的子集组合为最优解,并从该子集组合中随机挑选子集作为下一轮迭代的目标;否则,则从上一轮迭代的子集组合中再随机挑选其他子集组合进行新一轮迭代。

因为延迟攸关应用总体输入的不确定性,即用户操作的随机性,在不同输入负载下,延迟攸关应用中各个数据对象表现出的敏感类型可能是不同的。所以需要在低、高两种负载类型下进行测试与敏感度分析。

(3)针对所有敏感度数据,计算生成全局放置策略:

所有带宽敏感型的逻辑数据对象要优先放置在hbm。但因为hbm容量有限,所以采用背包问题的处理思想解决针对带宽敏感型逻辑数据对象的放置问题:将hbm视为容量为weight的背包,逻辑数据对象a视为物品,其带宽敏感度为物品的价值value(a),其数据量大小为物品容量weight(a)。寻求的目标为在满足的前提下,使得最大。最终求得的集合即为应放置在hbm中的所有逻辑数据对象。

将剩余的逻辑数据对象全部放入ddr。

对内存系统进行逻辑划分,每个逻辑内存区域由一部分hbm以及一部分ddr组成。进行数据对象放置时,规定每个逻辑内存区域放置一个延迟攸关应用以及若干个批处理应用对应的逻辑数据对象。

(4)数据静态放置方法最终生成一份数据对象静态放置策略表,包括逻辑数据对象的编号、类型(即属于延迟攸关应用或批处理应用以及为带宽敏感型或延迟敏感型)、初始放置位置以及实际的放置位置等信息。

(5)同时生成一份延迟攸关应用放置策略备用方案表,记录所有初始逻辑数据对象通过遗传算法得出的部分子集组合的放置策略。该备用方案表为后续的运行时动态迁移机制进行放置策略调整时提供查询依据。

3.运行时动态迁移机制的实现

运行时动态迁移机制的实现原理如图5所示,本机制用于在应用运行过程中保证延迟攸关应用的服务质量以及批处理应用之间的公平性。具体实现过程如下:

(1)利用硬件性能采样工具提供的最后一级cache(lastlevelcache,llc)未命中数量等相关性能数据,判定延迟攸关应用的状态,即延迟攸关应用处于idle阶段或者处于active阶段;处于idle阶段说明延迟攸关应用此时处于低负载状态,active阶段则说明延迟攸关应用处于高负载状态;以这一状态信息驱动整个运行时动态迁移机制的运行。

(2)定义lc-change原则:当应用的整体负载量变化时,若一个逻辑数据对象由带宽敏感型变为了延迟敏感型,则需要将其由hbm移动至ddr。此时可以将该逻辑数据对象与和其同处一个逻辑内存区域的批处理应用的相关逻辑数据对象进行位置交换。

(3)当延迟攸关应用由active转为idle阶段时:

当判定延迟攸关应用变为idle阶段时,首先依据lc-change原则进行调整。

若前一active阶段,延迟攸关应用的qos未达到标准,则需要对高负载下的放置策略进行调整:选取产生llc未命中数最多的内存区域中的逻辑数据对象,选取该逻辑数据对象对应的备用方案表中的当前最优解,作为新的放置策略应用在下一active阶段,同时将该最优解标记为已使用。

针对批处理应用间的公平性问题(即系统中如果某个或多个应用的性能需求长时间得不到满足,整个系统的性能评价会因此大幅下降),制定相应策略以尽可能均衡地满足所有批处理应用的需求:评估处于同一逻辑内存单元的各个批处理应用的性能受损程度,即各个批处理应用包含的逻辑数据对象的初始放置位置与当前实际放置位置的匹配程度;对匹配程度最差的批处理应用包含的逻辑数据对象进行动态迁移,具体操作是将未放入初始放置位置的逻辑数据对象迁移至初始位置;同时为避免额外的占用内存空间,可将这些逻辑数据对象与性能受损最小的批处理应用包含的逻辑数据对象进行位置交换。

(4)延迟攸关应用由idle转为active阶段时:

首先依据lc-change原则以及在前一idle阶段进行调整后的延迟攸关应用放置策略,即参照放置策略表以及备用方案表,对延迟攸关应用的相关逻辑数据对象进行相应拆分,并实时迁移至应放置的内存位置。

当通过硬件性能取样工具监测到延迟攸关应用对应的逻辑内存区域存在严重的争用现象时,具体体现为该逻辑内存区域内的llc未命中数明显高于其他逻辑内存区域,则立刻查找出当前逻辑内存区域内延迟攸关应用中未按照初始放置策略放置的逻辑数据对象,将其动态迁移至应放置的内存位置。此时为减少额外占用内存空间,可将该逻辑数据对象与同处一个逻辑内存区域内的批处理应用中未按照初始放置策略放置的逻辑数据对象进行位置交换。

本发明未详细阐述部分属于本领域公知技术。

以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1