混合内存动态调度方法及系统与流程

文档序号:19527233发布日期:2019-12-27 15:02阅读:210来源:国知局
混合内存动态调度方法及系统与流程

本公开涉及混合内存技术领域,特别是涉及混合内存动态调度方法及系统。



背景技术:

本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。

在实现本公开的过程中,发明人发现现有技术中存在以下技术问题:

由于混合内存尚在研究阶段,当前的操作系统并不支持对于混合内存异构性的管理,有部分研究工作通过修改硬件实现了异构感知,但是修改硬件开销较大。另一部分工作利用软件方法实现异构感知,但对整体性能有一定影响。



技术实现要素:

为了解决现有技术的不足,本公开提供了混合内存动态调度方法及系统;为了能够高效利用混合内存,发挥dram的速度优势和nvm的容量与能耗优势,需要一种新的内存管理机制,该机制可以在不修改硬件的条件下对下层混合内存的异构性进行管理,同时对上层应用透明,对应用提供高效的接口,帮助应用充分利用混合内存的优势。

第一方面,本公开提供了混合内存动态调度方法;

混合内存动态调度方法,包括:

通过配置pcie总线的温度寄存器来改变内存延迟和内存带宽,进而模拟出慢内存存储器nvm;

将内存分组:根据内存的带宽和延迟,将内存划分为快内存存储器dram和慢内存存储器nvm;

程序运行时:根据程序的时延要求或程序的执行速度要求,把与程序对应的待处理数据集调入到快内存存储器dram或慢内存存储器nvm中;

获取程序的运行特征;根据程序的运行特征,获取程序在快内存存储器dram和慢内存存储器nvm之间相互转移的概率,如果概率大于设定阈值,则进入下一步;

获取程序对内存延迟的敏感度和内存带宽的敏感度;根据程序对内存延迟的敏感度和内存带宽的敏感度,实现程序在快内存存储器dram和慢内存存储器nvm之间相互转移。

第二方面,本公开还提供了混合内存动态调度系统;

混合内存动态调度系统,包括:

配置模块,其被配置为:通过配置pcie总线的温度寄存器来改变内存延迟和内存带宽,进而模拟出慢内存存储器nvm;

内存分组模块,其被配置为:根据内存的带宽和延迟,将内存划分为快内存存储器dram和慢内存存储器nvm;

程序运行模块,其被配置为:根据程序的时延要求或程序的执行速度要求,把与程序对应的待处理数据集调入到快内存存储器dram或慢内存存储器nvm中;

概率计算模块,其被配置为:获取程序的运行特征;根据程序的运行特征,获取程序在快内存存储器dram和慢内存存储器nvm之间相互转移的概率,如果概率大于设定阈值,则进入转移模块;

转移模块,其被配置为:获取程序对内存延迟的敏感度和内存带宽的敏感度;根据程序对内存延迟的敏感度和内存带宽的敏感度,实现程序在快内存存储器dram和慢内存存储器nvm之间相互转移。

与现有技术相比,本公开的有益效果是:

该运行时系统对上层应用透明,通过软件方法实现对下层内存的异构。在程序执行时自动获取程序特征信息并实现高效的混合内存管理。

混合内存的异构性感知机制。研究利用现有的操作系统(linux)接口及系统管理工具实现异构性感知机制,该机制应尽量不修改linux内核,并对应用透明。

混合内存的运行时状态信息获取分析方法。利用现有分析工具,获取混合内存运行时特征信息,包括混合空间分区、访问时延和访问带宽等,为运行时管理提供依据。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为第一个实施例的方法流程图;

图2为第一个实施例的地址为cf8h的寄存器。

具体实施方式

应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

术语解释:

nvm(non-volatilememory,固定存储器,非易失存储器);

dram(dynamicrandomaccessmemory,快内存);

nvm(non-volatilememory,慢内存);

第一方面,本公开提供了混合内存动态调度方法;

如图1所示,混合内存动态调度方法,包括:

s1:通过配置pcie总线的温度寄存器来改变内存延迟和内存带宽,进而模拟出慢内存存储器nvm;

s2:将内存分组:根据内存的带宽和延迟,将内存划分为快内存存储器dram和慢内存存储器nvm;

s3:程序运行时:根据程序的时延要求或程序的执行速度要求,把与程序对应的待处理数据集调入到快内存存储器dram或慢内存存储器nvm中;

s4:获取程序的运行特征;根据程序的运行特征,获取程序在快内存存储器dram和慢内存存储器nvm之间相互转移的概率,如果概率大于设定阈值,则进入下一步;

s5:获取程序对内存延迟的敏感度和内存带宽的敏感度;根据程序对内存延迟的敏感度和内存带宽的敏感度,实现程序在快内存存储器dram和慢内存存储器nvm之间相互转移。

作为一个或多个实施例,所述pcie总线,是处理器与内存之间的连线。

作为一个或多个实施例,所述配置pcie总线的温度寄存器,是配置设备总线、设备号和设备功能。

应理解的,图2是地址为cf8h的寄存器,如果要设置pcie总线温度寄存器,需要:

1、将设备总线写入cf8h中的16-23位;

2、设备号写入cf8h中的11-15位;

3、设备功能写入cf8h中的8-10位。

总结来说,就是用寄存器cf8h指定我们要写入配置的地址,用寄存器cfch存储需要写入的值,随后写入该地址。通过修改温度寄存器的值,就可以修改内存的带宽和延迟。

作为一个或多个实施例,所述根据内存的带宽和延迟,将内存划分为快内存存储器dram和慢内存存储器nvm;具体包括:

如果内存的带宽大于第一设定阈值且内存的延迟小于第二设定阈值,则内存为快内存存储器dram;

如果内存的带宽小于第一设定阈值且内存的延迟大于第二设定阈值,则内存为慢内存存储器nvm。

将内存模拟为快内存和慢内存,而快内存和慢内存的区别就在于内存的带宽和延迟的大小。

本公开设计模拟dram和nvm这两种介质共存的内存结构。dram的特点是单位面积内内存容量小,访问速度快;nvm的特点是单位面积内内存容量大,访问速度慢。它们的指标特征就反映在内存带宽和延迟上。利用混合内存的结构可以更加灵活的支持上层程序。

应理解的,如果程序是一个对时延要求较高的程序,则需要在快内存上执行,以保证其性能。如果程序是一个对执行速度要求低的程序,则可以在慢内存上执行。如果程序内存较少,即便它是一个对时延要求较高的程序,仍然可以在慢内存上执行。因为对于内存较少的程序,内存带宽和时延对其性能影响不大。应理解的,假设当前程序是图像处理程序,则所述待处理数据集,例如是图片。

作为一个或多个实施例,所述将内存分组,是指:利用现有温度寄存器接口和资源管理工具cgroups将内存分组。

作为一个或多个实施例,所述程序运行特征,包括:

处理器的占用情况、内存的占用情况、磁盘带宽的占用情况、网络带宽的占用情况、程序的内存情况或内存资源的占用情况。

应理解的,所述处理器的占用情况、内存的占用情况、磁盘带宽的占用情况、网络带宽的占用情况,利用性能分析工具如collectl进行获取。

应理解的,所述程序的内存情况,利用性能分析工具如perf获取。所述程序的内存情况,例如:最后一级缓存的引用llcref、最后一级缓存的不命中率llcmiss等;

应理解的,所述内存资源的占用情况,是指占用内存的大小,例如,内存时8g,一个程序占用了2g。利用内存资源监控工具如memstat实时获取。

llcmiss高的数据属于密集访问的数据,这些数据是从nvm迁移到dram的潜在对象。但是为了能让被迁移的数据更准确,则需要综合考虑程序数据对内存延迟和内存带宽的敏感度。

作为一个或多个实施例,所述程序运行时的步骤s3包括:

如果程序的时延要求大于设定阈值或者程序的执行速度要求大于设定阈值,则将程序放在快内存存储器dram上执行,则把与程序对应的待处理数据集调入快内存存储器dram;

如果程序的时延要求小于设定阈值或者执行速度要求小于设定阈值,则将程序放在慢内存存储器nvm上执行,则把与当前程序对应的待处理数据集调入慢内存存储器nvm;

如果程序的时延要求大于设定阈值且程序的内存小于设定阈值,则将程序放在慢内存存储器nvm上执行,则把与当前程序对应的待处理数据集调入慢内存存储器nvm。

应理解的,如果程序对内存延迟和带宽敏感,则意味着程序在慢内存执行时性能会大幅度下降,则需要把程序的数据集调度到快内存。

如果程序对内存延迟和带宽不敏感,则意味着程序在慢内存执行时性能不会大幅度下降,则可以把程序的数据集调度到慢内存。

作为一个或多个实施例,所述s4:根据程序的运行特征,获取程序在快内存存储器dram和慢内存存储器nvm之间相互转移的概率,如果概率大于设定阈值,则进入下一步;具体步骤包括:

根据程序的运行特征,获取程序在快内存存储器dram内的执行性能,如果程序在快内存存储器dram内的执行性能大于设定性能要求,则进入s5;

根据程序的运行特征,获取程序在慢内存存储器nvm内的执行性能,如果程序在慢内存存储器nvm内的执行性能小于设定性能要求,则进入s5。

作为一个或多个实施例,所述根据程序对内存延迟的敏感度和内存带宽的敏感度,实现程序在快内存存储器dram和慢内存存储器nvm之间相互转移,具体步骤包括:

当程序对内存延迟的敏感度和对内存带宽的敏感度均大于设定阈值时,则将程序从快内存存储器dram转移到慢内存存储器nvm;

当程序对内存延迟的敏感度和内存带宽的敏感度均小于设定阈值时,则将程序从慢内存存储器nvm转移到快内存存储器dram。

作为一个或多个实施例,所述s5获取程序对内存延迟的敏感度步骤如下:

将内存延迟视为一个维度,在该维度上,按照由小到大的顺序设置若干个资源限制点,设置内存的总存储空间的20%为最小资源限制点;设置内存的总存储空间为最大资源限制点;

通过修改pcie温度寄存器改变内存延迟和内存带宽的大小,将内存延迟和内存带宽改动成资源限制点上的值,获取程序在内存延迟维度上各个资源限制点上的性能,将各个资源限制点上的性能值组成程序在内存延迟维度上的敏感度曲面,该敏感度曲面即为程序对内存延迟的敏感度。

程序的性能包括程序的执行时间或程序的响应时间,在各个资源限制点上的性能值是一个介于[0,1]之间的常数,

该敏感度曲面用于指导程序在快内存、慢内存之间的放置策略的设计。

设定一个阈值,如果程序对内存延迟和带宽敏感,则意味着程序在慢内存执行时性能会大幅度下降,则把程序的数据集调度到快内存。

如果程序对内存延迟和带宽不敏感,则意味着程序在慢内存执行时性能不会大幅度下降,则把程序的数据集调度到慢内存。

作为一个或多个实施例,所述s5获取程序对带宽的敏感度的步骤如下:

将内存带宽视为一个维度,在该维度上,按照由小到大的顺序设置多个资源限制点,设置总带宽的20%为最小资源限制点,设置总带宽为最大资源限制点;

通过修改pcie温度寄存器改变内存带宽的大小,将内存带宽改动成资源限制点上的值,获取程序在内存带宽一个维度各个资源限制点上的性能,在各个节点上的性能值是一个介于[0,1]之间的常数,各个节点上的性能值组成程序在内存带宽维度上的敏感度曲面,该敏感度曲面即为程序对带宽的敏感度。

该敏感度曲面指导程序在快内存、慢内存之间的放置策略的设计。

从资源敏感度的角度分析内存延迟和内存带宽对程序的性能影响。调整内存延迟和内存带宽的大小,不同程序对应的性能变化是不同的。有些程序对内存延迟敏感,有些程序对内存带宽敏感,有些程序都不敏感。所以程序对内存延迟和内存带宽的敏感程度可以作为我们在dram内存和nvm内存之间放置数据的依据。而获取程序对内存带宽及延迟的敏感度特征的方法如下:

将内存延迟和内存带宽视为两个维度,在每个维度上,按照由小到大的顺序设置多个资源限制点,设置最大资源限制点的20%为最小资源限制点。通过修改pcie温度寄存器改变内存延迟和内存带宽的大小(将内存延迟和内存带宽改动成资源限制点上的值),获取程序在两个维度各个资源限制点上的性能,在各个节点上的性能值是一个介于[0,1]之间的常数,这些数可以组成程序在内存带宽与延迟两个维度上的敏感度曲面。该敏感度曲面指导程序在快内存、慢内存之间的放置策略的设计。

通过修改pcie温度寄存器改变内存延迟和内存带宽的大小来模拟不同的nvm存储器。并利用资源管理工具cgroups将内存分组,其中包括快内存和慢内存。不同类型的程序对应的数据集会被调度到不同类型的内存。同时,该模块获取程序、系统的运行时信息。例如,获取程序对处理器、内存、磁盘带宽、网络带宽的占用情况,以及程序对llc的访问情况及不命中率。

获取程序对内存延迟和内存带宽的敏感度。将内存延迟和内存带宽视为两个维度,在每个维度上,按照由小到大的顺序设置多个资源限制点,设置最大资源限制点的20%为最小资源限制点。将程序拉入该收资源限制的cgroups组并执行,记录程序性能。而程序在该资源限制点上的敏感度值就是程序在资源受限制时执行的性能与程序在资源不受限时执行的性能的比值。该性能值是一个介于[0,1]之间的常数。所有这些资源限制点上所对应的性能值组成程序在内存带宽与延迟两个维度上的敏感度曲面。

本实施例的有益效果:

该运行时系统对上层应用透明,通过软件方法实现对下层内存的异构。在程序执行时自动获取程序特征信息并实现高效的混合内存管理。

混合内存的异构性感知机制。研究利用现有的操作系统(linux)接口及系统管理工具实现异构性感知机制,该机制应尽量不修改linux内核,并对应用透明。

混合内存的运行时状态信息获取分析方法。利用现有分析工具,获取混合内存运行时特征信息,包括混合空间分区、访问时延和访问带宽等,为运行时管理提供依据。

第二方面,本公开还提供了混合内存动态调度系统;

混合内存动态调度系统,包括:

配置模块,其被配置为:通过配置pcie总线的温度寄存器来改变内存延迟和内存带宽,进而模拟出慢内存存储器nvm;

内存分组模块,其被配置为:根据内存的带宽和延迟,将内存划分为快内存存储器dram和慢内存存储器nvm;

程序运行模块,其被配置为:根据程序的时延要求或程序的执行速度要求,把与程序对应的待处理数据集调入到快内存存储器dram或慢内存存储器nvm中;

概率计算模块,其被配置为:获取程序的运行特征;根据程序的运行特征,获取程序在快内存存储器dram和慢内存存储器nvm之间相互转移的概率,如果概率大于设定阈值,则进入转移模块;

转移模块,其被配置为:获取程序对内存延迟的敏感度和内存带宽的敏感度;根据程序对内存延迟的敏感度和内存带宽的敏感度,实现程序在快内存存储器dram和慢内存存储器nvm之间相互转移。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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