一种确定内存大页数目的方法及其装置制造方法及图纸

技术编号:19177070 阅读:21 留言:0更新日期:2018-10-17 00:19
本申请提供了一种确定内存大页数目的方法,所述方法应用于Linux操作系统中,包括:根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,其中,nr_hugepages表征所述Linux系统提供的内存大页总数,所述nr_overcommit_hugepages表征所述系统能够提供的最大内存大页总数。因此,本申请提供的方法能够对当前系统的内存大页数目进行合理的调整,提供了一种简洁高效的确定内存大页数目的方法,既满足了应用程序对内存大页的需求,又降低人工需求。

Method and device for determining large page number of memory

This application provides a method for determining the number of large pages in memory, which is applied to a Linux operating system, including: configuring the total number of large pages in memory nr_hugepages and the total number of large pages allowed in memory nr_ov according to the HugePages_Total, the add_pages, and at least one of the HugePages_Free or the HugePages_Surp Ercommit_hugepages, where nr_hugepages represent the total number of large pages of memory provided by the Linux system, and nr_overcommit_hugepages represent the maximum total number of large pages of memory that the system can provide. Therefore, the method provided in this application can reasonably adjust the number of large pages in memory of the current system, and provides a concise and efficient method to determine the number of large pages in memory, which not only meets the demand of the application for large pages in memory, but also reduces the manual demand.

【技术实现步骤摘要】
一种确定内存大页数目的方法及其装置
本申请涉及计算机领域,并且更具体地,涉及一种确定内存大页数目的方法及其装置。
技术介绍
随着计算规模的不断增加,应用程序对系统内存的需求也不断增大,为了更好的对内存进行管理,现代CPU采用虚拟内存地址代替物理内存地址,内存管理单元将虚拟内存地址转换为物理内存地址提供CPU使用。同时Linux操作系统引入了内存分页管理机制,默认的内存页大小为4KB。虚拟内存地址到物理内存地址的映射关系存放于内存页表中,访问内存页表时获得虚拟内存地址到物理内存地址的映射关系。内存页表的访问时间成为了限制CPU内存访问速度的一个瓶颈,为了提高寻址速度,现代CPU架构中引入了转换检测缓冲区(Translationlookasidebuffer,TLB)用于存储一部分经常访问的内存映射关系,访问TLB的速度要快于访问内存页表的速度,但TLB的大小是有限的,当访问的地址不在TLB中则CPU会访问内存页表,这种情况称为TLBMiss,频繁发生TLBMiss的时候将会造成程序性能下降。为此,当操作系统以2MB甚至更大作为分页的单位时,该内存相对较大的分页可以称之为内存大页,相对4KB的分页大小,TLB就能够映射更多的内存空间,降低了TLBMiss,提高CPU访问内存的性能。目前针对Linux操作系统的内存大页设置主要是通过管理员手动向/proc/sys/vm/nr_hugepages文件中写入内存大页数目来进行设定,当需要对内存大页数目进行修改的时候则需要重新设定。目前对系统参数的修改主要是采用手工方式向大页文件中写入要设定的内存大页的数目,这种方式需要首先预估应用程序需要的内存大小,然后设定大页内存的数目,一旦发生应用程序需要的内存超过大页内存时,就会发生大页内存分配失败的警告信息,需要管理员再次重新设定大页内存数目,当应用程序不需要使用那么多内存的时候,可能需要释放一部分大页内存,这时同样需要管理员重新设定大页内存的数目,费时费力。因此,亟需一种确定内存大页数目的方法,能够简洁、高效地确定内存大页数目。
技术实现思路
本申请提供一种,能够够简洁、高效地确定内存大页数目。第一方面,提供一种确定内存大页数目的方法,所述方法应用于Linux操作系统中,包括:根据内存信息文件,获取当前内存大页总数HugePages_Total,空闲的大页内存总数HugePages_Free,超过所述HugePages_Total使用的大页数目HugePages_Surp;获取额外内存大页数目add_pages,所述add_pages表示表示当应用程序使用的内存大于HugePages_Total提供的内存大小时,所述Linux系统额外能够提供的内存大页数目;根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,其中,nr_hugepages表征所述Linux系统提供的内存大页总数,所述nr_overcommit_hugepages表征所述系统能够提供的最大内存大页总数。结合第一方面,在第一方面的第一种可能的实现方式中,在根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages之前,所述方法还包括:根据所述Linux系统的内存大小,初始化所述nr_hugepages和所述nr_overcommit_hugepages。结合第一方面及其上述实现方式,在第一方面的第二种可能的实现方式中,所述根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,包括:当确定所述HugePages_Surp值非零时,确定所述nr_hugepages=HugePages_Total+add_pages;当所述HugePages_Surp值为零时,且HugePages_Free大于add_pages时,确定所述nr_hugepages=nr_hugepages–(HugePages_Free–add_pages);当所述HugePages_Surp值为零时,且HugePages_Free不大于add_pages时,确定nr_hugepages=HugePages_Total。结合第一方面及其上述实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:当所述nr_hugepages发生变化时,将所述nr_hugepages的值更新在/proc/sys/vm/nr_hugepages中。结合第一方面及其上述实现方式,在第一方面的第四种可能的实现方式中,根据所述Linux系统的内存大小,初始化所述nr_hugepages和所述nr_overcommit_hugepages,包括:获取当前Linux系统内存大小,按照内存大页为2M的大小计算空闲内存的总页数,并将所述系统空闲内存大页数的百分之三十设定为所述nr_hugepages的初始值,所述系统空闲内存大页数百分之七十设定为所述nr_overcommit_hugepages的初始值。第二方面,提供一种确定内存大页数目的装置,包括:获取单元,所述获取单元用于根据内存信息文件,获取当前Linux系统中内存大页总数HugePages_Total,空闲的大页内存总数HugePages_Free,超过所述HugePages_Total使用的大页数目HugePages_Surp;所述获取单元还用于获取额外内存大页数目add_pages,所述add_pages表示表示当应用程序使用的内存大于HugePages_Total提供的内存大小时,所述Linux系统额外能够提供的内存大页数目;处理单元,所述处理单元用于根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,其中,nr_hugepages表征所述Linux系统提供的内存大页总数,所述nr_overcommit_hugepages表征所述系统能够提供的最大内存大页总数。结合第二方面,在第二方面的第一种可能的实现方式中,所述获取单元用于:根据所述Linux系统的内存大小,初始化所述nr_hugepages和所述nr_overcommit_hugepages。结合第二方面及其上述实现方式,在第二方面的第二种可能的实现方式中,所述处理单元用于:当确定所述HugePages_Surp值非零时,确定所述nr_hugepages=HugePages_Total+add_pages;当本文档来自技高网
...

【技术保护点】
1.一种确定内存大页数目的方法,其特征在于,所述方法应用于Linux操作系统中,包括:根据内存信息文件,获取当前内存大页总数HugePages_Total,空闲的大页内存总数HugePages_Free,超过所述HugePages_Total使用的大页数目HugePages_Surp;获取额外内存大页数目add_pages,所述add_pages表示表示当应用程序使用的内存大于HugePages_Total提供的内存大小时,所述Linux系统额外能够提供的内存大页数目;根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,其中,nr_hugepages表征所述Linux系统提供的内存大页总数,所述nr_overcommit_hugepages表征所述系统能够提供的最大内存大页总数。

【技术特征摘要】
1.一种确定内存大页数目的方法,其特征在于,所述方法应用于Linux操作系统中,包括:根据内存信息文件,获取当前内存大页总数HugePages_Total,空闲的大页内存总数HugePages_Free,超过所述HugePages_Total使用的大页数目HugePages_Surp;获取额外内存大页数目add_pages,所述add_pages表示表示当应用程序使用的内存大于HugePages_Total提供的内存大小时,所述Linux系统额外能够提供的内存大页数目;根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,其中,nr_hugepages表征所述Linux系统提供的内存大页总数,所述nr_overcommit_hugepages表征所述系统能够提供的最大内存大页总数。2.根据权利要求1所述的方法,其特征在于,在根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages之前,所述方法还包括:根据所述Linux系统的内存大小,初始化所述nr_hugepages和所述nr_overcommit_hugepages。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述HugePages_Total、所述add_pages、以及所述HugePages_Free或所述HugePages_Surp中的至少一项,配置内存大页总数nr_hugepages和允许内存大页总数nr_overcommit_hugepages,包括:当确定所述HugePages_Surp值非零时,确定所述nr_hugepages=HugePages_Total+add_pages;当所述HugePages_Surp值为零时,且HugePages_Free大于add_pages时,确定所述nr_hugepages=nr_hugepages–(HugePages_Free–add_pages);当所述HugePages_Surp值为零时,且HugePages_Free不大于add_pages时,确定nr_hugepages=HugePages_Total。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:当所述nr_hugepages发生变化时,将所述nr_hugepages的值更新在/proc/sys/vm/nr_hugepages中。5.根据权利要求2所述的方法,其特征在于,根据所述Linux系统的内存大小,初始化所述nr_hugepages和所述nr_overcommit_hu...

【专利技术属性】
技术研发人员:郭靖伟
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1