一种基于X86平台的内存大页动态切换方法与流程

文档序号:14727201发布日期:2018-06-19 11:50阅读:423来源:国知局

本发明涉及信息技术领域,特别涉及一种Linux操作系统下进行内存大页动态切换的方法与系统。



背景技术:

在当前的Linux系统中为默认的内存页大小为4k,但是在大容量内存系统中,4k页大小会导致访存效率较低,因此Linux系统提供了内存大页机制,在x86架构下可用的内存大页包括2M大页及1G大页。

目前x86平台的Linux系统中系统启动后默认只有2M大页会生效,如果要使用1G大页需要在系统启动项中加入相应的参数指定系统启动后生效的为1G大页并重启系统,但是2M与1G的大页无法在系统不重启的情况下进行切换。

现有的技术在系统运行过程中无法实现2M大页与1G大页的动态切换,系统默认为使用2M大页,但是由于当前的很多大容量内存的平台中使用2M的大页仍然会限制访存性能,因此当系统需要使用1G大页时需要通过设置系统启动参数来指定使用1G大页并将系统进行重启,从而影响了系统中的原有程序的运行。



技术实现要素:

为了解决如上的技术问题,本发明提出了一种基于X86平台的内存大页动态切换方法以及对应的切换系统。本发明主要是在系统非重启的情况下时,动态的设置当前生效的大页,实现2M大页与1G大页的动态切换,从而可以使系统根据场景的变化动态设置需要使用的大页,实现了大页切换的灵活性。

其中,本发明提出了一种基于X86平台的内存大页动态切换方法,包括如下步骤:

步骤1,系统开机运行,并在系统启动过程中执行多个大页的初始化过程,所述多个大页的大小彼此不同;

步骤2,对步骤1中所述的多个大页所对应的系统文件分别执行注册使能操作;

步骤3,读取所注册使能的系统文件内容以判断出当前生效的大页;

步骤4,根据步骤3所判断出的当前生效的大页对系统参数进行设置;

步骤5,当前平台的系统基于步骤4中所设置的系统参数而选择采用对应的大页的大小执行内存页操作。

优选的,所述步骤1中的多个大页包括2M大页及1G大页;

优选的,所述步骤2中对步骤1中所述的多个大页所对应的系统文件分别执行注册使能操作,具体为:注册使能2M大页及1G大页的系统文件;

优选的,所述步骤4中系统参数为default_hstate_idx变量;

优选的,所述步骤4中根据步骤3所判断出的当前生效的大页对系统参数进行设置,具体为:读取所注册使能的系统文件内容判断当前生效的是2M大页还是1G大页,如果是2M大页则设置系统default_hstate_idx变量为0,如果是1G大页则设置系统default_hstate_idx变量为1;

对应地,本发明还提出一种基于X86平台的内存大页动态切换系统,实现在基于X86平台的主机上,该内存大页动态切换系统包括:

初始化模块:用于在系统开机运行的系统启动过程中执行多个大页的初始化过程,所述多个大页的大小彼此不同;

注册使能模块;用于对初始化模块所初始化的多个大页所对应的系统文件分别执行注册使能操作;

读取判断模块,用于读取注册使能模块所注册使能的系统文件内容以判断出当前生效的大页;

参数设置模块,用于根据读取判断模块所判断出的当前生效的大页对系统参数进行设置;

执行模块,用于使得当前平台的系统基于参数设置模块所设置的系统参数而选择采用对应的大页的大小执行内存页操作。

优选的,所述初始化模块所初始化的多个大页包括2M大页及1G大页;

优选的,所述注册使能模块所执行的具体操作包括:注册使能2M大页及1G大页的系统文件;

优选的,所述参数设置模块所设置的系统参数为default_hstate_idx变量;

优选的,所述参数设置模块具体执行的操作为:读取所注册使能的系统文件内容判断当前生效的是2M大页还是1G大页,如果是2M大页则设置系统default_hstate_idx变量为0,如果是1G大页则设置系统default_hstate_idx变量为1。

通过本发明所提出的如上系统与方法,可以在x86平台的linux系统中通过系统文件的方式动态设置当前生效的内存大页,实现2M大页与1G大页的动态切换,避免了由于内存大页的切换而产生的系统重启,从而使系统能够根据实际的需求动态的选择合适的大页,增强了内存大页机制的灵活性。

附图说明

图1是本发明实施例中的设计方法工作流程示意图;

图2是本发明实施例中的设计方法工作流程示意图;

图3是本发明实施例中的系统体系架构图;

具体实施例

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

本发明提出了一种基于X86平台的内存大页动态切换方法,参见如图1所示的方法流程图,包括:

步骤1,系统开机运行,并在系统启动过程中执行多个大页的初始化过程,所述多个大页的大小彼此不同;

步骤2,对步骤1中所述的多个大页所对应的系统文件分别执行注册使能操作;

步骤3,读取所注册使能的系统文件内容以判断出当前生效的大页;

步骤4,根据步骤3所判断出的当前生效的大页对系统参数进行设置;

步骤5,当前平台的系统基于步骤4中所设置的系统参数而选择采用对应的大页的大小执行内存页操作。

为了更清楚地介绍本发明的技术方案,可以参见如图2所示的方法流程图,包括:

步骤1,在系统开机启动之后,执行该步骤1,步骤1中要初始化2M大页及1G大页;本发明的实施例中首先对多个不同大小的内存大页执行初始化操作,将该工作提前到系统启动运行之时,为后续的设置步骤做出准备;

步骤2,对步骤1中所初始化的2M大页执行注册使能操作,使得该2M大页的系统文件使能有效,并处于准备待用的状态;

步骤3,对步骤1中所初始化的1G大页执行注册使能操作,使得该1G大页的系统文件使能有效,并处于准备待用的状态;

步骤2与步骤3分别将步骤1中所初始化完成的内存大页执行注册使能操作,这一操作使得多个不同大小的内存大页的系统文件处于待用的状态,为后续的不重启机器的情况下即可选择启用某一大小的内存大页做出充分的准备;

步骤4,读取注册的系统文件内容;本步骤中可以读取所注册的系统文件,包括读取2M及1G大页的系统文件;

步骤5,根据步骤4所读取的内容,以判断当前生效的是是2M大页还是1G大页,例如判断所生效是否为2M大页;如果判断所生效的是2M大页则跳转到步骤6,否则跳转到步骤7;

步骤6,设置系统default_hstate_idx变量为0;由于步骤5中判断2M大页生效,因此在该步骤6中可以设置系统变量default_hstate_idx的参数值,以使得当前平台的操作系统能够根据所设置的这一参量而知晓当前所需要执行的内存策略,例如以2M大小的内存大页执行内存操作,包括但不限于内存存取操作;

步骤7,设置系统default_hstate_idx变量为1;步骤7同样能够设置与生效的内存大页策略对应的参量值,以使得平台系统能够根据该设置而选择采用对应的内存策略。

本发明的主要创新点在x86平台的Linux系统中通过系统文件的方式动态设置当前生效的内存大页,实现2M大页与1G大页的动态切换,避免了由于内存大页的切换而产生的系统重启,从而使系统能够根据实际的需求动态的选择合适的大页,增强了内存大页机制的灵活性。

对应地,本发明还提出一种一种基于X86平台的内存大页动态切换系统,实现在基于X86平台的主机上,参见图3,该内存大页动态切换系统包括:

初始化模块:用于在系统开机运行的系统启动过程中执行多个大页的初始化过程,所述多个大页的大小彼此不同;

注册使能模块;用于对初始化模块所初始化的多个大页所对应的系统文件分别执行注册使能操作;

读取判断模块,用于读取注册使能模块所注册使能的系统文件内容以判断出当前生效的大页;

参数设置模块,用于根据读取判断模块所判断出的当前生效的大页对系统参数进行设置;

执行模块,用于使得当前平台的系统基于参数设置模块所设置的系统参数而选择采用对应的大页的大小执行内存页操作。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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