一种内存迁移的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种内存迁移的方法和装置。
背景技术
服务器系统一般带有大量内存,有数据显示,内存占整个服务器能耗比为30%,仅次于中央处理器(Central Processing Unit,CPU),占整个服务器的能耗比33%。在系统空闲时,内存也消耗大量能量。并且,随着智能手机、平板电脑的大量普及,手持设备的系统配置快速提高,在内存方面,由原来的兆字节(Mb)级别,迅速增长到千兆字节(Gb)级别,随之带来的是能耗的成倍增加,给电池供电的手持设备带来严峻的挑战,因此,如何有效降低内存的能耗,成为一个迫切需要解决的问题。
现有技术针对内存节能问题提出如下方案:
将存储区域分为两个区域,一个区域进行低能耗处理,即冷区,一个区域进行高能耗处理,即热区。以内存中的一个能耗控制粒度的内存空间为监控粒度,监控每个能耗控制粒度的内存空间的访问频率。将访问频率低于预设阈值的能耗控制粒度的内存空间中的存储数据迁移到低能耗处理区域,将访问频率高于预设阈值的能耗控制粒度的内存空间中的存储数据迁移到高能耗处理区域,由于低能耗处理区域一直处于节能状态,从而实现了降低内存能耗的目的。
然而,在现有技术提出的解决方案中,由于在确定是否对能耗控制粒度的内存空间进行迁移时,仅考虑该能耗控制粒度的内存空间的访问频率,这很容易造成重复迁移,甚至出现迁移震荡,从而大大降低了系统的性能。
发明内容
本发明的实施例提供一种内存迁移的方法和装置,能够减少内存迁移次数,提高系统性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种内存迁移的方法,该方法包括:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;
根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。
在第一种可能的实施方式中,结合第一方面,所述获得每个能耗控制粒度的内存空间和整个内存的新增访问次数具体包括:
接收内存控制器上报的预设监测周期内第一时刻和第二时刻的每个能耗控制粒度的内存空间的访问次数;
根据所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得每个能耗控制粒度的内存空间的新增访问次数;
根据将所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得所述整个内存第一时刻和第二时刻的访问次数;
根据所述整个内存第一时刻和第二时刻的访问次数,获得所述整个内存的新增访问次数。
在第二种可能的实施方式中,结合第一方面,所述获得每个能耗控制粒度的内存空间和整个内存的新增访问次数具体包括:
接收内存控制器在预设监测周期内上报的N-1次每个能耗控制粒度的内存空间的访问次数;
根据第一次上报的所述每个能耗控制粒度的内存空间的访问次数和第N-1次上报的每个能耗控制粒度的内存空间的访问次数,获得所述第一次上报时和第N-1次上报时整个内存的访问次数;
根据所述第一次上报时和第N-1次上报时整个内存的访问次数,获得所述整个内存在第N-1次上报时的新增访问次数;
接收内存控制器在预设监测周期内第N次上报的能耗控制粒度的内存空间i的访问次数,其中,所述0<i<I,所述I为整个内存的总页数;
根据所述内存控制器上报的能耗控制粒度的内存空间i第一次和第N次的访问次数,获得所述能耗控制粒度的内存空间i的新增访问次数;
将每个已上报第N次访问次数的第一能耗控制粒度的内存空间的访问次数与所述第一能耗控制粒度的内存空间的第N-1次上报的访问次数的差值之和,与所述整个内存在第N-1次上报时的新增访问次数相加,作为整个内存的新增访问次数;
所述根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移具体包括:
根据所述能耗控制粒度的内存空间i和所述整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间i的存储数据进行迁移。
在第三种可能的实施方式中,结合第一方面、第一种可能的实施方式或第二种可能的实施方式中的任一种,所述根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移具体包括:
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
第二方面,本发明实施例提供了一种内存迁移装置,该装置包括:获得单元和判断单元;
所述获得单元,用于获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;
所述判断单元,用于根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。
在第一种可能的实施方式中,结合第二方面,所述获得单元具体用于:
接收内存控制器上报的预设监测周期内第一时刻和第二时刻的每个能耗控制粒度的内存空间的访问次数;
根据所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得每个能耗控制粒度的内存空间的新增访问次数;
根据将所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得所述整个内存第一时刻和第二时刻的访问次数;
根据所述整个内存第一时刻和第二时刻的访问次数,获得所述整个内存的新增访问次数。
在第二种可能的实施方式中,结合第二方面,所述获得单元具体用于:
接收内存控制器在预设监测周期内上报的N-1次每个能耗控制粒度的内存空间的访问次数;
根据第一次上报的所述每个能耗控制粒度的内存空间的访问次数和第N-1次上报的每个能耗控制粒度的内存空间的访问次数,获得所述第一次上报时和第N-1次上报时整个内存的访问次数;
根据所述第一次上报时和第N-1次上报时整个内存的访问次数,获得所述整个内存在第N-1次上报时的新增访问次数;
接收内存控制器在预设监测周期内第N次上报的能耗控制粒度的内存空间i的访问次数,其中,所述0<i<I,所述I为整个内存的总页数;
根据所述内存控制器上报的能耗控制粒度的内存空间i第一次和第N次的访问次数,获得所述能耗控制粒度的内存空间i的新增访问次数;
将每个已上报第N次访问次数的第一能耗控制粒度的内存空间的访问次数与所述第一能耗控制粒度的内存空间的第N-1次上报的访问次数的差值之和,与所述整个内存在第N-1次上报时的新增访问次数相加,作为整个内存的新增访问次数;
所述判断单元具体用于:
根据所述能耗控制粒度的内存空间i和所述整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间i的存储数据进行迁移。
在第三种可能的实施方式中,结合第二方面、第一种可能的实施方式或第二种可能的实施方式中的任一种,所述判断单元具体用于:
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
第三方面,本发明实施例提供了一种计算机系统,包括:
总线;
与总线相连的处理器;
与总线相连的内存;
其中,所述处理器通过所述总线调用所述内存中的执行指令,以用于:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。
在第一种可能的实施方式中,结合第三方面,所述处理器通过所述总线调用所述内存中的执行指令,获得每个能耗控制粒度的内存空间和整个内存的新增访问次数后,根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移具体包括:
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
本发明实施例提供了一种内存迁移的方法和装置,该方法包括:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。基于该方法,能够减少内存迁移次数,提高系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种操作系统划分能耗控制区域示意图;
图2为本发明实施例提供的一种内存迁移的方法流程图;
图3为DIMM内存条中内存控制器对内存页的访问次数计数示意图;
图4为本发明实施例提供的又一种内存迁移的方法流程图;
图5为本发明实施例提供的再一种内存迁移的方法流程图;
图6为本发明实施例提供的一种内存迁移的装置示意图;
图7为本发明实施例提供的一种计算机系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于系统内存占整个系统的能耗比很高,随着手持设备的快速发展,其配置的提高在内存方面体现为内存容量的增大,但这也带来了内存能耗的成倍增加,给电池供电的手持设备带来严峻的挑战,因此,如何有效降低内存的能耗,成为一个迫切需要解决的问题。
目前采用的一种解决方法是将访问量较低的内存进行低功耗处理。结合图1,示例性的描述操作系统(Operating System,OS)针对不同内存区域支持的节能性能将内存划分为几个不同能耗控制区域的过程。在系统启动时,基本输入输出系统(Basic Input OutputSystem,BIOS)向OS上报内存条的能耗控制粒度的内存空间信息和能耗控制粒度的内存空间的拓扑结构信息以及每个能耗控制粒度的内存空间的节能特性。以图1所示的双列直插式存储模块(Dual InlineMemory Modules,DIMM)内存条为例,一个DIMM内存条由多个Bank组成,其最小能耗控制粒度的内存空间为内存库Bank,能耗控制粒度的内存空间的拓扑结构信息包括每个Bank所处内存条的位置,每个Bank的地址范围等等,其中每个能耗控制粒度的内存空间的节能特性可以是自刷新、休眠、可直接断电关断等特性。具体的,BIOS可以将内存条的能耗控制粒度的内存空间信息和能耗控制粒度的内存空间的拓扑结构信息以表格的形式上报给OS。
OS根据每个Bank的拓扑结构信息和支持的节能特性信息,将内存中的所有Bank划分为不同的能耗控制区域,比如按照Bank支持自刷新和休眠的节能特性,可以将内存划分为图1所示的如下三个能耗控制区域:非节能区域、浅度节能区域和深度节能区域,其中浅度节能区域支持自刷新节能特性,深度节能区域支持休眠节能特性。当一个Bank的访问频率较高时,若其处于非节能区域,则不进行迁移,若其处于节能区域,则将其存储数据迁移至非节能区域,以使得系统不必在每次对该存储数据访问时需要将该内存区域从自休眠或自刷新状态设为正常工作的状态,从而能够提高系统对所述存储数据的访问速度,保证了系统性能;当一个Bank的访问频率较低时,若其处于非节能区域,将其存储数据迁移至浅度节能区域,若其处于浅度节能区域,则不进行迁移;若所述Bank的访问频率较高,该Bank处于深度节能区域,则将其存储数据迁移到非节能区域,若其访问频率较低,则将其存储数据迁移到浅度节能区域,这样,当深度节能区域的访问频率较高或较低的所有存储数据都被迁移出去后,可以使该区域实现休眠节能,从而达到深度节能的目的。
当然,对于DIMM内存条而言,其能耗控制粒度的内存空间为一个Bank,但对于其他的硬件内存而言,具有不同形式的能耗控制粒度的内存空间,本发明实施例对此不作具体限制。对此,可以将一个内存页作为一个能耗控制粒度的内存空间,在系统启动时,BIOS将硬件的内存页信息上报OS,OS根据接收到的内存页信息,包括内存页的拓扑结构信息,支持的节能特性信息等将内存划分为不同等级的能耗控制区域,可以是图1所示的非节能区域,浅度节能区域和深度节能区域,也可以按照内存页支持的节能特性将所述内存划分为N个能耗控制区域,所述N>=2,例如,根据内存页所支持的自刷新、休眠、自关断节能特性,可以将内存划分为四个能耗控制区域,分别为非节能区域,第一层节能区域,第二层节能区域,第三层节能区域。
实施例一
基于图1所示的操作系统划分能耗控制区域的方法,本发明实施例提供了一种内存迁移的方法,结合图2,该方法具体包括:
201、获得每个能耗控制粒度的内存空间和整个内存的新增访问次数。
需要说明的是,所述能耗控制粒度的内存空间可以是Bank,也可以是内存页,本发明实施例对此不作具体限定。
具体的,可以从内存控制器获得每个能耗控制粒度的内存空间在一段时间的访问次数。据此,根据在预设监测周期内获得每个能耗控制粒度的内存空间的新增访问次数,然后将在预设监测周内获得的每个能耗控制粒度的内存空间的新增访问次数相加,可获得整个内存的新增访问次数。
当然,对于预设监测周期的设定,可以依据具体情况进行设置,本发明实施例对此不做限定。
举例来说,如图3所示,能耗控制粒度的内存空间为一个内存页,内存控制器向每个内存页设置一个监控器,用于监控每个内存页的访问次数,实现对内存页的访问次数进行计数。然后内存控制将每个监控器监控到的每个内存页的访问次数上报给处理器。
202、根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述内存页的存储数据进行迁移。
为了避免能耗控制粒度的内存空间重复迁移,以至于迁移震荡的问题,提高系统的性能,本发明实施例基于每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。即考虑整个内存当前是否处于繁忙状态还是空闲状态,以及每个能耗控制粒度的内存空间当前是否处于繁忙状态还是空闲状态。具体的,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移具体包括:
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述内存页处于节能区域,确定不对所述能耗控制粒度的内存空间的存储数据进行迁移;
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述内存页处于非节能区域,确定不对所述能耗控制粒度的内存空间的存储数据进行迁移;
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述内存页的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
举例来说,所述能耗控制粒度的内存空间为内存页为例进行说明,所述第一预设值设为50,以此表示内存页是否繁忙,若某一内存页的访问次数大于50,则表示所述某一内存页繁忙,若某一内存页的访问次数小于50,则表示所述某一内存页空闲;所述第二预设值设为1000,以此表示系统是否繁忙,若整个内存的访问次数大于1000,则表示系统繁忙,若整个内存的访问次数小于1000,则表示系统空闲。
假设某个内存页在一个预设监测周期内的新增访问次数为35次,所述整个内存的新增访问次数为800次,该内存页处于节能区域,则该内存页的访问次数小于所述第一预设值50,在该预设监测周期内该内存页处于空闲状态,而整个内存的访问次数小于第二预设值1000次,则整个内存在该预设监测周期内处于空闲状态,此时且该内存页处于节能区域,则不需要对该内存页的存储数据进行迁移,以减少能耗。
假设某个内存页在一个预设监测周期内的新增访问次数为65次,所述整个内存的新增访问次数为1200次,该内存页处于非节能区域,则该内存页的访问次数大于所述第一预设值50,在该预设监测周期内该内存页处于繁忙状态,而整个内存的访问次数大于第二预设值1000次,则整个内存在该预设监测周期内处于繁忙状态,此时且该内存页处于非节能区域,则不需要对该内存页的存储数据进行迁移,以保证系统性能。
假设某个内存页在一个预设监测周期内的新增访问次数为65次,所述整个内存的新增访问次数为1500次,该内存页处于节能区域,则该内存页的访问次数大于所述第一预设值50,在该预设监测周期内该内存页处于繁忙状态,而整个内存的访问次数大于第二预设值1000次,则整个内存在该预设监测周期内处于繁忙状态,此时且该内存页处于节能区域,则将所述内存页的存储数据迁移至非节能区域以保证系统性能。
假设某个内存页在一个预设监测周期内的新增访问次数为35次,所述整个内存的新增访问次数为800次,该内存页处于非节能区域,则该内存页的访问次数小于所述第一预设值50,在该预设监测周期内该内存页处于空闲状态,而整个内存的访问次数小于第二预设值1000次,则整个内存在该预设监测周期内处于空闲状态,此时且该内存页处于非节能区域,则将所述内存页的存储数据迁移至节能区域以减少能耗。
假设某个内存页在一个预设监测周期内的新增访问次数为65次,所述整个内存的新增访问次数为800次,该内存页处于节能区域,则该内存页的访问次数大于所述第一预设值50,在该预设监测周期内该内存页处于繁忙状态,而整个内存的访问次数小于第二预设值1000次,则整个内存在该预设监测周期内处于空闲状态,此时且该内存页处于节能区域,若将所述内存页的存储数据迁移至非节能区域,则在下一预设监测周期内该内存页的存储数据的新增访问次数小于50的可能性较大,需要重新被迁移至节能区域,这样同样造成重复迁移的问题,降低系统性能。同时考虑到若在系统空闲的情况下若该内存页长期较长段时间处于繁忙状态,若该内存页一直处于节能区域会降低系统访问速度。基于此,若所述内存页连续L次的访问次数大于50次,所述整个内存的访问次数连续L次小于1000次,例如L为3,则可认为所述内存页在下一预设监测周期的新增访问次数小于50次的可能性较小,将其存储数据迁移至非节能区域。
假设某个内存页在一个预设监测周期内的新增访问次数为35次,所述整个内存的新增访问次数为1200次,该内存页处于非节能区域,则该内存页的访问次数小于所述第一预设值50,在该预设监测周期内该内存页处于空闲状态,而整个内存的访问次数大于第二预设值1000次,则整个内存在该预设监测周期内处于繁忙状态,此时且该内存页非节能区域,由于系统处于繁忙的情况下,若将所述内存页的存储数据迁移至节能区域,则在下一预设监测周期内该内存页的存储数据的新增访问次数大于50的可能性较大,需要重新被迁移至非节能区域,这样造成重复迁移,降低系统性能。但是,考虑到若在系统繁忙的情况下若该内存页长期处于空闲状态,若该内存页一直处于非节能区域会达不到降低能耗的目的。基于此,若所述内存页连续L次的访问次数小于50次,所述整个内存的访问次数连续L次大于1000次,例如L为3,则认为所述内存页在下一预设监测周期的新增访问次数大于50次的可能性较小,将其存储数据迁移至节能区域。
需要说明的是,上述实施例仅是针对节能区域和非节能区域进行的说明,而本发明的宗旨也是适用N个能耗控制区域,N>=2。例如,针对图1所示的三个能耗控制区域:非节能区域,浅度节能区域和深度节能区域。
需要说明的是,在N个能耗控制区域中,若第N个能耗控制区域是通过使内存页处于休眠状态节能的,则在判断其它第N-1个能耗控制区域的存储数据是否进行迁移时,是无法迁移至第N个能耗控制区域,否则会造成数据的丢失。而若第N个能耗控制区域有存储数据时,需要根据内存页和整个内存的新增访问次数确定将第N个能耗控制区域的所有存储数据迁移至其它第N-1个能耗控制区域,才能使得第N个能耗控制区域处于休眠状态,达到节能的目的。
例如,如图1所示,若根据DIMM内存条的每个能耗控制粒度的内存空间所支持的节能特性,操作系统将内存划分为三个能耗控制区域:非节能区域,浅度节能区域和深度节能区域,其中浅度节能区域通过自刷新节能,深度节能区域通过休眠节能。由于DIMM内存条在休眠状态时内存空间的数据会丢失,这样非节能区域和浅度节能区域的存储数据在判断迁移时,无法迁移至深度节能区域。而若深度节能区域有存储数据时,需要根据内存页和整个内存的新增访问次数将深度节能区域的所有存储数据迁移至非节能区域或浅度节能区域,才能使得深度节能区域处于休眠状态,达到节能的目的。
本发明实施例提供了一种内存迁移的方法,该方法包括:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。基于该方法,能够减少内存迁移次数,提高系统性能。
实施例二
本发明实施例提供了一种内存迁移的方法,结合图4,该方法中能耗控制粒度的内存空间为内存页,该方法具体包括:
401、接收内存控制器上报的预设监测周期内第一时刻和第二时刻的每个内存页的访问次数。
接收内存控制器在预设监测周期的开始时刻遍历的每个内存页的访问次数和结束时刻遍历的每个内存页的访问次数,也就是所述第一时刻和第二时刻的每个内存页的访问次数。
402、根据所述每个内存页第一时刻和第二时刻的访问次数,获得每个内存页的新增访问次数。
将所述第二时刻每个内存页的访问次数与第一时刻每个内存页的访问次数相减,获得在所述预设监测周期内每个内存页的新增访问次数。例如,结合图1,假设一个内存页在第一时刻的访问次数为10,在第二时刻的访问次数为55,则所述内存页在所述预设监测周期内的新增访问次数为45次,按照这种方法,获得每个内存页在所述预设监测周期内的新增访问次数。
403、根据将所述每个内存页第一时刻和第二时刻的访问次数,获得所述整个内存第一时刻和第二时刻的访问次数。
假设整个内存有10个内存页,内存控制器在预设监测周期的开始第一次遍历每个内存页的访问次数,假设为0、3、2、5、4、11、3、7、5、12,则将每个内存页的访问次数相加获得整个内存在预设监测周期开始时,也就是第一时刻的访问次数为57次。
同样的,假设内存控制器在预设监测周期的结束时遍历每个内存页的访问次数,假设为50、70、60、25、84、33、90、120、65、55,则将每个内存页的访问次数相加获得整个内存在预设监测周期结束时,即第二时刻的访问次数为652次。
404、根据所述整个内存第一时刻和第二时刻的访问次数,获得所述整个内存的新增访问次数。
将所述第二时刻整个内存的访问次数与第一时刻整个内存的访问次数相减,获得整个预设监测周期内整个内存的新增访问次数,例如,整个内存第二时刻的访问次数652次减去第一时刻的访问次数57次,获得整个内存在预设监测周期的新增访问次数595次。
405、根据所述每个内存页和整个内存的新增访问次数,判断是否将所述内存页的存储数据进行迁移。
步骤405的详细实施过程可参见实施例一中的步骤202的描述,本发明实施例不再赘述。
本发明实施例提供了一种内存迁移的方法,该方法包括:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。基于该方法,能够减少内存迁移次数,提高系统性能。
本发明实施例还提供了一种内存迁移的方法,该方法中能耗控制粒度的内存空间为内存页,结合图5,该方法具体包括:
501、接收内存控制器在预设监测周期内上报的N-1次每个内存页的访问次数。
接收内存控制器在预设监测周期内多次遍历的每个内存页的访问次数,假设为N次,首先接收内存控制器上报的前N-1次每个内存页的访问次数。
502、根据第一次上报的所述每个内存页的访问次数和第N-1次上报的每个内存页的访问次数,获得所述第一次上报时和第N-1次上报时整个内存的访问次数。
将所述第一次上报的所述每个内存页的访问次数和第N-1次上报的每个内存页的访问次数相加,获得所述第一次上报时和第N-1次上报时整个内存的访问次数。
举例来说,假设整个内存有10个内存页,内存控制器在预设监测周期的开始第一次遍历每个内存页的访问次数,假设为0、3、2、5、4、11、3、7、5、12,则将每个内存页的访问次数相加获得整个内存在预设监测周期开始时,也就是第一时刻的访问次数为57次;内存控制器在预设监测周期多次遍历每个内存页的访问次数,在预设监测周期结束之前的第N-1次,假设N为10,即第9次遍历每个内存页的访问次数,假设为48、69、59、23、83、32、87、115、64、52,将第9次上报的每个内存页的访问次数相加,得到第9次上报时整个内存的访问次数为632次。
503、根据所述第一次上报时和第N-1次上报时整个内存的访问次数,获得所述整个内存在第N-1次上报时的新增访问次数。
将所述获得的第N-1次上报时整个内存的访问次数与第一次上报时整个内存的访问次数相减,获得整个内存在第N-1次上报时的新增访问次数。
例如,第一次上报时整个内存的访问次数为57次,第N-1次,即第9次上报时整个内存的访问次数为632次,则在第9次上报时整个内存的新增访问次数为575次。
504、接收内存控制器在预设监测周期内第N次上报的内存页i的访问次数,其中,所述0<i<I,所述I为整个内存的总页数。
内存控制器在预设监测周期的结束时最后一次遍历每个内存的访问次数,假设N为10,即第10次遍历每个内存页的访问次数。接收第十次上报的内存页i的访问次数,假设接收10个内存页中第5个内存页的访问次数为84次。
505、根据所述内存控制器上报的内存页i第一次和第N次的访问次数,获得所述内存页i的新增访问次数。
内存控制器第一次上报的内存页5的访问次数为4次,第10次上报的内存页5的访问次数为84次,则在所述预设监测周期内,内存页5的新增访问次数为80次。
506、将每个已上报第N次访问次数的第一内存页的访问次数与所述第一内存页的第N-1次上报的访问次数的差值之和,与所述整个内存在第N-1次上报时的新增访问次数相加,作为整个内存的新增访问次数。
假设第10次遍历时,内存页1至内存页5的访问次数依次为50、70、60、25、84,将其与第9次上报时内存页1至内存页5访问次数48、69、59、23、83对应做差值获得每个内存页第10次上报时相对于第9次上报时的新增访问次数依次为2、1、1、2、1,相加获得在第10次上报内存页5的访问次数时整个内存相对于第9次上报时的新增访问次数为7次,相对于第一次上报时的新增访问次数为第9次上报时整个内存的新增访问次数575次与7次的和为582次,将所述582次作为整个内存在第10次上报内存页5的访问次数时的新增访问次数。
507、根据所述每个内存页和整个内存的新增访问次数,判断是否将所述内存页的存储数据进行迁移。
当内存控制器第N次遍历每个内存页的访问次数时,当遍历到一个内存页的访问次数时,如内存页5,在内存控制器第10次遍历时的访问次数为84次,计算得其在预设监测周期内的新增访问次数为80次,当第10次上报内存页5的访问次数时整个内存的新增访问次数为582次。结合图3所示的方法,整个内存在预设监测周期内的实际新增访问次数为595次,因此,由本实施例方案获得的整个内存的新增访问次数与实际整个内存的新增访问次数相差较小。但是,基于本实施例提出的内存迁移方法,可以在内存控制器最后一次遍历每个内存页的访问次数的同时,计算出所述内存页的新增访问次数和内存控制器遍历到该内存页时的整个内存的新增访问次数。例如,当内存控制器第10次遍历到内存页5的访问次数时,立刻计算出内存页5的新增访问次数时80次,此时整个内存的新增访问次数是582次,并根据所述内存页5的新增访问次数和此时整个内存的新增访问次数判断是否将内存页5的存储数据进行迁移,而不必全部遍历完所有的内存页的访问次数,计算出整个内存的新增访问次数后在对每个内存页做判断,提高了处理速度和实时性。
其中,步骤507的详细判断过程可参见实施例一中的步骤202的描述,本发明实施例不再赘述。
本发明实施例提供了一种内存迁移的方法,该方法包括:获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。基于该方法,能够减少内存迁移次数,提高系统性能。
实施例三
本发明实施例提供了一种内存迁移的装置,结合图6,该装置具体包括:获得单元61和判断单元62;
所述获得单元61,用于获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;
所述判断单元62,用于根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。
可选的,所述获得单元61具体用于:
接收内存控制器上报的预设监测周期内第一时刻和第二时刻的每个能耗控制粒度的内存空间的访问次数;
根据所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得每个能耗控制粒度的内存空间的新增访问次数;
根据将所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得所述整个内存第一时刻和第二时刻的访问次数;
根据所述整个内存第一时刻和第二时刻的访问次数,获得所述整个内存的新增访问次数。
可选的,所述获得单元61具体用于:
接收内存控制器在预设监测周期内上报的N-1次每个能耗控制粒度的内存空间的访问次数;
根据第一次上报的所述每个能耗控制粒度的内存空间的访问次数和第N-1次上报的每个能耗控制粒度的内存空间的访问次数,获得所述第一次上报时和第N-1次上报时整个内存的访问次数;
根据所述第一次上报时和第N-1次上报时整个内存的访问次数,获得所述整个内存在第N-1次上报时的新增访问次数;
接收内存控制器在预设监测周期内第N次上报的能耗控制粒度的内存空间i的访问次数,其中,所述0<i<I,所述I为整个内存的总页数;
根据所述内存控制器上报的能耗控制粒度的内存空间i第一次和第N次的访问次数,获得所述能耗控制粒度的内存空间i的新增访问次数;
将每个已上报第N次访问次数的第一能耗控制粒度的内存空间的访问次数与所述第一能耗控制粒度的内存空间的第N-1次上报的访问次数的差值之和,与所述整个内存在第N-1次上报时的新增访问次数相加,作为整个内存的新增访问次数;
所述判断单元62具体用于:
根据所述能耗控制粒度的内存空间i和所述整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间i的存储数据进行迁移。
所述判断单元62具体用于:
若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
其中,所述装置的各个组成部分的工作过程的描述可参考上述方法实施例的描述,本发明实施例在此不再赘述。
本发明实施例提供了一种内存迁移的装置,该装置具体包括:获得单元和判断单元。所述获得单元获得每个能耗控制粒度的内存空间和整个内存的新增访问次数后,所述判断单元根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。基于该装置,能够减少内存迁移次数,提高系统性能。
实施例四
本发明实施例还提供了一种计算机系统,具体如图7所示,包括:
总线71;
与所述总线71相连的处理器72;
与所述总线相连的内存73。
其中,所述处理器72通过总线71调用所述内存73中的执行指令,以用于:获得每个能耗控制粒度的内存空间的存储空间和整个内存的新增访问次数;
根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。
在一些实施方式中,内存73存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
应用模块,包含各种应用程序,用于实现各种应用业务。
应用模块中包括但不限于获得单元和判断单元。
可选的,所述获得单元具体用于:接收内存控制器上报的预设监测周期内第一时刻和第二时刻的每个能耗控制粒度的内存空间的访问次数;
根据所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得每个能耗控制粒度的内存空间的新增访问次数;
根据将所述每个能耗控制粒度的内存空间第一时刻和第二时刻的访问次数,获得所述整个内存第一时刻和第二时刻的访问次数;
根据所述整个内存第一时刻和第二时刻的访问次数,获得所述整个内存的新增访问次数。
可选的,所述获得单元具体用于:接收内存控制器在预设监测周期内上报的N-1次每个能耗控制粒度的内存空间的访问次数;
根据第一次上报的所述每个能耗控制粒度的内存空间的访问次数和第N-1次上报的每个能耗控制粒度的内存空间的访问次数,获得所述第一次上报时和第N-1次上报时整个内存的访问次数;
根据所述第一次上报时和第N-1次上报时整个内存的访问次数,获得所述整个内存在第N-1次上报时的新增访问次数;
接收内存控制器在预设监测周期内第N次上报的能耗控制粒度的内存空间i的访问次数,其中,所述0<i<I,所述I为整个内存的总页数;
根据所述内存控制器上报的能耗控制粒度的内存空间i第一次和第N次的访问次数,获得所述能耗控制粒度的内存空间i的新增访问次数;
将每个已上报第N次访问次数的第一能耗控制粒度的内存空间的访问次数与所述第一能耗控制粒度的内存空间的第N-1次上报的访问次数的差值之和,与所述整个内存在第N-1次上报时的新增访问次数相加,作为整个内存的新增访问次数;
所述根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移具体包括:
根据所述能耗控制粒度的内存空间i和所述整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间i的存储数据进行迁移。
具体的,所述判断单元用于:若所述能耗控制粒度的内存空间的新增访问次数大于第一预设值,所述整个内存的新增访问次数大于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数小于第一预设值,所述整个内存的新增访问次数小于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次大于第一预设值,所述整个内存的新增访问量连续L次小于第二预设值,且所述能耗控制粒度的内存空间位于节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至非节能区域;
若所述能耗控制粒度的内存空间的新增访问次数连续L次小于第一预设值,所述整个内存的新增访问次数连续L次大于第二预设值,且所述能耗控制粒度的内存空间位于非节能区域,确定将所述能耗控制粒度的内存空间的存储数据迁移至节能区域。
其中,对所述计算机系统中各个应用模块的工作过程的描述可参考上述方法实施例的描述,本发明实施例在此不再赘述。
本发明实施例提供的一种计算机系统,通过处理器获得每个能耗控制粒度的内存空间和整个内存的新增访问次数;根据所述每个能耗控制粒度的内存空间和整个内存的新增访问次数,判断是否将所述能耗控制粒度的内存空间的存储数据进行迁移。解决内存存储数据重复迁移和迁移振荡的问题,减少内存迁移次数,提高了系统性能。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。