CN115237821A - 一种应用程序内存使用优化方法、装置、设备及介质 - Google Patents

一种应用程序内存使用优化方法、装置、设备及介质 Download PDF

Info

Publication number
CN115237821A
CN115237821A CN202210899020.1A CN202210899020A CN115237821A CN 115237821 A CN115237821 A CN 115237821A CN 202210899020 A CN202210899020 A CN 202210899020A CN 115237821 A CN115237821 A CN 115237821A
Authority
CN
China
Prior art keywords
memory
memories
access
time threshold
preset time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210899020.1A
Other languages
English (en)
Inventor
崔士伟
王传国
张宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210899020.1A priority Critical patent/CN115237821A/zh
Publication of CN115237821A publication Critical patent/CN115237821A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提出了一种应用程序内存使用优化方法,包括:将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值,本发明还提出了一种应用程序内存使用优化装置、设备及介质,有效地降低了占用的CPU资源。

Description

一种应用程序内存使用优化方法、装置、设备及介质
技术领域
本发明涉及内存优化领域,尤其是涉及一种应用程序内存使用优化方法、装置、设备及介质。
背景技术
如今在Linux系统上运行的许多应用程序都需要使用大量的内存资源,这些内存在被分配之后可能有些内存会被频繁访问,而有些内存可能会长时间不被访问,访问频率比较高的内存被称为热内存,访问频率比较低的内存被称为冷内存。对于冷内存虽然内核的内存回收机制会在系统内存不足的时候对其进行回收,但这会导致内存不足时的内存分配存在延迟,严重影响运行中的业务程序,而对于频繁访问的热内存如果能使用大页则可以提升内存访问性能。
解决这个问题的核心是能够识别出应用程序对自身分配的所有内存的访问频率,从而让应用程序能够根据内存的冷热进行相应的优化。现有的技术中Linux内核已经提供了Idle page tracking机制(Linux内核的空闲页跟踪机制,可以识别到指定时间内未访问过的内存页),Idle page tracking机制可以在应用层判断一个应用程序的虚拟内存页在指定时间内有没有被访问过,基于Idle page tracking机制可以在用户态实现应用程序内存冷热的判断,通常的做法是通过轮询判断每个内存页是否在指定的时间内被访问过,因为每个判断都需要把虚拟地址也转换成物理地址页,然后再根据物理地址页通过内核提供的接口去查询物理页的空闲状态。
但是,这些操作相对比较耗时,如果应用程序使用的内存非常大时,每次轮询需要判断冷热的内存页会非常多,这将严重占用CPU资源。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种应用程序内存使用优化方法、装置、设备及介质,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
本发明第一方面提供了一种应用程序内存使用优化方法,包括:
将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
可选地,每个基准内存对应一个数据结构,所述数据结构用于描述对应基准内存的访问热度,所述数据结构具体包括对应基准内存的访问次数、连续访问次数、连续未访问次数、冷热页标识。
进一步地,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况具体包括:
将虚拟内存中随机选取的页的虚拟地址映射为物理地址;判断当前预设轮询时间间隔内虚拟内存中随机选取的页的虚拟地址是否映射为物理地址;
如果随机选取的页的虚拟地址尚未映射物理地址,则设置基准内存对应数据结构中的访问次数为0,连续未访问次数加1;
如果随机选取的页的虚拟地址已经映射物理地址,则获取物理地址的idle标记,如果idle标记被清除,将基准内存对应的数据结构中访问次数加1、连续访问次数加1、连续未访问次数置0,再次设置该页的状态为idle;如果idle标记未被清除,将基准内存对应的数据结构中连续访问次数置0、连续未访问次数加1。
进一步地,还包括:
如果基准内存对应数据结构中的连续未访问次数大于第三预设次数阈值,并且访问次数大于第四预设次数阈值,将该基准内存的访问次数置0,其中,第四预设次数阈值大于第二预设次数阈值。
可选地,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分具体包括:
每计算完成当前预设轮询时间间隔内一个基准内存的访问频率后,获取相邻基准内存对应的数据结构中的连续访问次数以及连续未访问次数;
如果当前基准内存以及相邻基准内存的连续访问次数均大于第五预设次数阈值,则将两个相邻基准内存合并为一个基准内存,并将合并后的基准内存标识为热内存;如果合并的热基准内存的连续未访问次数大于第八次数阈值,则将合并的热基准内存拆分为两个基准内存;并将拆分后的基准内存均标识为冷内存;
如果当前基准内存以及相邻基准内存的连续未访问次数均大于第六预设次数阈值,则将两个相邻的基准内存合并为一个基准内存,并并将合并后的基准内存标识为冷内存;如果合并后的冷基准内存的连续访问次数大于第七预设次数阈值,则将合并的冷基准内存拆分为两个基准内存,并将拆分后的基准内存均标识为热内存;其中,第五预设次数阈值大于第七预设次数阈值,第八预设次数阈值小于第六预设次数阈值。
进一步地,合并后的基准内存对应的数据结构使用首个基准内存的数据结构,并且数据结构中的访问次数、连续访问次数、连续未访问次数为两个基准内存中相应较小的值。
可选地,合并的基准内存拆分之后,每个基准内存对应的数据结构中的访问次数、连续访问次数、连续未访问次数均为合并的基准内存对应的数据结构中访问次数、连续访问次数、连续未访问次数的值。
本发明第二方面提供了一种应用程序内存使用优化装置,包括:
分割模块,将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
合并及拆分模块,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
迁移及回收模块,当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
本发明第三方面提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如本发明第一方面所述的一种应用程序内存使用优化方法的步骤。
本发明第四方面提供了一种计算机可读存储介质,其特征是,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的一种应用程序内存使用优化方法的步骤。
本发明采用的技术方案包括以下技术效果:
1、本发明将应用程序使用的虚拟内存分割为多个基准内存,使用采样技术在基准内存中随机选择一个页来判断其冷热代表整个基准内存的冷热,这样避免了对应用程序所有内存页的冷热判断,可以大大减少需要进行冷热判断的内存页个数,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
2、本发明技术方案中相邻的基准内存如果都长时间未被访问说明这两块内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块内存都是热内存,对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
3、本发明技术方案中如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,将合并的基准内存进行拆分,以便于提升基准内存冷热识别的精度。
4、本发明技术方案中将冷内存进行回收,将热内存进行大页迁移,可以有效提升使用大内存的应用程序的内存访问性能和节省内存使用量。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方案中实施例一方法的流程示意图;
图2为本发明方案中实施例一方法中虚拟内存分割为多个基准内存的示意图;
图3为本发明方案中实施例一方法中步骤S1的一流程示意图;
图4为本发明方案中实施例一方法中步骤S1的另一流程示意图;
图5为本发明方案中实施例一方法中步骤S2的流程示意图;
图6为本发明方案中实施例二装置的结构示意图;
图7为本发明方案中实施例三设备的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图1所示,本发明提供了一种应用程序内存使用优化方法,包括:
S1,将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
S2,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
S3,当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
其中,在步骤S1中,首先扫描需要进行内存使用优化的应用程序所使用的虚拟内存,包括栈内存空间、堆内存空间和通过mmap(一种内存映射文件的方法)映射的匿名内存空间等,然后对扫描到的指定进程的虚拟内存按照一定大小进行分割为多个基准内存(比如X86架构下分割为2M),这里称为基准内存,如图2所示,每个基准内存对应512个page(页)。每个基准内存对应一个数据结构,用来描述该基准内存的访问热度,具体可以包括该基准内存的访问次数、连续访问次数、连续未访问次数、冷热页标识等。
如图3所示,步骤S1中,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况具体包括:
S11,将虚拟内存中随机选取的页的虚拟地址映射为物理地址;判断当前预设轮询时间间隔内虚拟内存中随机选取的页的虚拟地址是否映射为物理地址;
S12,判断随机选取的页的虚拟地址是否尚未映射物理地址,如果判断结果为是,则执行步骤S13;如果判断结果为否,则执行步骤S14;
S13,则设置基准内存对应数据结构中的访问次数为0,连续未访问次数加1;
S14,则获取物理地址的idle标记,判断物理地址的idle标记是否被清除,如果判断结果为是,则执行步骤S15;如果判断结果为否,则执行步骤S16;
S15,将基准内存对应的数据结构中访问次数加1、连续访问次数加1、连续未访问次数置0,再次设置该页的状态为idle;
S16,将基准内存对应的数据结构中连续访问次数置0、连续未访问次数加1。
其中,在步骤S11-S16中,预设轮询时间间隔可以指定,最低为60秒,每次轮询开始先判断进程是否有新增或释放的虚拟内存,并相应的更新基准内存对应的数据结构。基准内存的访问情况(频率)计算具体是:使用采样技术随机选取基准内存内的一个页验证其是否被访问过,只要该页被访问过则认为该基准内存被访问过。具体操作为在基准内存内选取一个页,然后通过/proc/[pid]/pagemap将虚拟地址映射转换为物理地址;
1)如果该虚拟内存页尚未映射物理地址则设置基准内存数据结构中的访问次数为0,连续未访问次数加1;
2)如果该虚拟内存页已经映射物理内存页,则基于Linux内核的Idle pagetracking机制获取物理页的idle标记,如果idle标记被清除,说明在两次预设轮询时间间隔内虚拟内存页(基准内存中随机选取的页)已被访问过,此时将基准内存对应数据结构中的访问次数加1、连续访问次数加1、连续未访问次数置0,然后再次设置该页的状态为idle,等待下次轮询时判断该页是否被访问;如果idle标记未被清除,说明在两次预设轮询时间间隔内虚拟内存页未被访问过,此时将基准内存对应数据结构中的连续访问次数置0、连续未访问次数加1。
进一步地,如图4所示,步骤S1中还包括:
S17,判断基准内存对应数据结构中的连续未访问次数是否大于第三预设次数阈值,并且访问次数大于第四预设次数阈值,如果判断结果为是,则执行步骤S18,如果判断结果为否,则执行步骤S19;
S18,将该基准内存的访问次数置0,其中,第四预设次数阈值大于第二预设次数阈值;
S19,进行下一预设轮询时间间隔内,随机选取基准内存的页,并根据下一预设轮询时间间隔内随机选取基准内存的页访问情况更新所述基准内存下一预设轮询时间间隔的访问情况。
在步骤S17-S19中,如果一个基准内存的连续未访问次数大于指定值K1(第三预设次数阈值,K1小于N2,且大于M2,即第三预设次数阈值小于第六预设次数阈值,且大于第八预设次数阈值),并且访问次数大于指定值K2(第四预设次数阈值,K2大于X2),则说明该基准内存在经历一段时间的频繁访问之后,不再被访问,此时将该基准内存的访问次数置0,后续会重新计算其访问热度。
其中,如图5所示,步骤S2具体包括:
S201,每计算完成当前预设轮询时间间隔内一个基准内存的访问频率后,获取相邻基准内存对应的数据结构中的连续访问次数以及连续未访问次数;
S202,当前基准内存以及相邻基准内存的连续访问次数是否均大于第五预设次数阈值,如果判断结果为是,则执行步骤S203;如果判断结果为否,则执行步骤S204;
S203,将两个相邻基准内存合并为一个基准内存,并将合并后的基准内存标识为热内存;
S204,两个相邻基准内存不合并;
S205,合并的热基准内存的连续未访问次数是否大于第八次数阈值,如果判断结果为是,则执行步骤S206;如果判断结果为否,则执行步骤S207;
S206,则将合并的热基准内存拆分为两个基准内存;并将拆分后的基准内存均标识为冷内存;
S207,合并的热基准内存不拆分;
S208,当前基准内存以及相邻基准内存的连续未访问次数均大于第六预设次数阈值,如果判断结果为是,则执行步骤S209;如果判断结果为否,则执行步骤S210;
S209,则将两个相邻的基准内存合并为一个基准内存,并并将合并后的基准内存标识为冷内存;
S210,两个相邻基准内存不合并;
S211,合并后的冷基准内存的连续访问次数是否大于第七预设次数阈值,如果判断结果为是,则执行步骤S212;如果判断结果为否,则执行步骤S213;
S212,则将合并的冷基准内存拆分为两个基准内存,并将拆分后的基准内存均标识为热内存;
S213,合并的冷基准内存不拆分。
其中,在步骤S201-S213中,相邻的基准内存如果都长时间未被访问说明这两块基准内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块基准内存都是热内存。对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
在步骤S1中每个预设轮询时间间隔内进行基准内存的访问频率计算完成时,即每计算完一个基准内存的访问频率后都会获取相邻基准内存对应的数据结构中的连续访问次数以及连续未访问次数,然后进行如下判断:
1)如果当前基准内存的连续访问次数大于指定值N1(第五预设次数阈值,N1大于M1,即第五预设次数阈值大于第七预设次数阈值),并且前一个地址连续的基准内存的连续访问次数也大于N1,则将这两个基准内存合并成一个更大的基准内存并标识为热内存;
2)如果当前基准内存的连续未访问次数大于指定值N2(第六预设次数阈值,N2大于K1,K1大于M2,即第六预设次数阈值、第三预设次数阈值、第八预设次数阈值依次减小),并且前一个连续地址的基准内存的连续未访问次数也大于N2,则将这两个基准内存合并成一个更大的基准内存并标识为冷内存;
3)合并后的基准内存对应的数据结构使用首个基准内存的数据结构,并且数据结构中的访问次数、连续访问次数、连续未访问次数等于两个基准内存中相应较小的值。
如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,则为了更精确的识别基准内存的冷热,需要将合并过的基准内存进行拆分,具体操作如如下:
1)如果合并的冷基准内存的连续访问次数大于指定值M1(第七预设次数阈值,M1小于N1),则将合并的基准内存拆分为两个或多个基准内存;
2)如果合并的热基准内存的连续未访问次数大于指定值M2(第八预设次数阈值,M2小于K1,K1小于N2),则将合并的基准内存拆分为两个多个基准内存;
3)合并的基准内存拆分之后,每个基准内存对应的数据结构中的访问次数、连续访问次数、连续未访问次数都等于合并的基准内存中的相应值。
其中,在步骤S3中,基准内存的优化裁决
每个预设轮询时间间隔内进行基准内存的访问频率计算完成时,都会进行如下判断:
1)如果经过X1次(第一预设次数阈值)轮询之后,基准内存的访问次数大于X2(第二预设次数阈值,X1>X2,且X2小于K2),说明该基准内存属于经常访问的热内存,将对其进行内存访问优化,优化的策略是如果该基准内存没有使用大页(大页:页面是Linux管理内存的基本单位,X86架构下一般为4KB,但也可以使用2M/1G的大页,使用大页的好处是能增加TLB转译后备缓冲区的命中,提升内存访问性能),则该基准内存迁移到大页,提升内存访问性能
2)如果经过X1次轮询之后,基准内存的访问次数小于X2(X1>X2),说明该基准内存属于冷内存,将对其进行内存访问优化,优化的策略是将该基准内存进行内存回收,节省更多的内存。具体地,基准内存迁移到大页或进行回收均是通过madvise实现,madvise:Linux内核的一个系统调用,可以将指定的一块内存进行回收节省内存或者使用大页提升性能。
本发明技术方案中块内存如果频繁的被访问,则是热内存,如果访问频率较低,则是冷内存。
本发明将应用程序使用的虚拟内存分割为多个基准内存,使用采样技术在基准内存中随机选择一个页来判断其冷热代表整个基准内存的冷热,这样避免了对应用程序所有内存页的冷热判断,可以大大减少需要进行冷热判断的内存页个数,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
本发明技术方案中相邻的基准内存如果都长时间未被访问说明这两块内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块内存都是热内存,对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
本发明技术方案中如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,将合并的基准内存进行拆分,以便于提升基准内存冷热识别的精度。
本发明技术方案中将冷内存进行回收,将热内存进行大页迁移,可以有效提升使用大内存的应用程序的内存访问性能和节省内存使用量。
实施例二
如图6所示,本发明技术方案还提供了一种应用程序内存使用优化装置,包括:
分割模块101,将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
合并及拆分模块102,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
迁移及回收模块103,当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
本发明将应用程序使用的虚拟内存分割为多个基准内存,使用采样技术在基准内存中随机选择一个页来判断其冷热代表整个基准内存的冷热,这样避免了对应用程序所有内存页的冷热判断,可以大大减少需要进行冷热判断的内存页个数,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
本发明技术方案中相邻的基准内存如果都长时间未被访问说明这两块内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块内存都是热内存,对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
本发明技术方案中如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,将合并的基准内存进行拆分,以便于提升基准内存冷热识别的精度。
本发明技术方案中将冷内存进行回收,将热内存进行大页迁移,可以有效提升使用大内存的应用程序的内存访问性能和节省内存使用量。
实施例三
如图7所示,本发明技术方案还提供了一种电子设备,包括:存储器201,用于存储计算机程序;处理器202,用于执行所述计算机程序时实现如实施例一中的一种应用程序内存使用优化方法的步骤。
本申请实施例中的存储器201用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器201可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-OnlyMemory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagneticrandom access memory)、快闪存储器(FlashMemory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous StaticRandom Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous DynamicRandom Access Memory)、增强型同步动态随机存取存储器(ESDRAM,EnhancedSynchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器201旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器202中,或者由处理器202实现。处理器202可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器202可以是通用处理器、DSP(Digital Signal Processing,即指能够实现数字信号处理技术的芯片),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器202可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器201,处理器202读取存储器201中的程序,结合其硬件完成前述方法的步骤。处理器202执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
本发明将应用程序使用的虚拟内存分割为多个基准内存,使用采样技术在基准内存中随机选择一个页来判断其冷热代表整个基准内存的冷热,这样避免了对应用程序所有内存页的冷热判断,可以大大减少需要进行冷热判断的内存页个数,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
本发明技术方案中相邻的基准内存如果都长时间未被访问说明这两块内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块内存都是热内存,对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
本发明技术方案中如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,将合并的基准内存进行拆分,以便于提升基准内存冷热识别的精度。
本发明技术方案中将冷内存进行回收,将热内存进行大页迁移,可以有效提升使用大内存的应用程序的内存访问性能和节省内存使用量。
实施例四
本发明技术方案还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如实施例一中的一种应用程序内存使用优化方法的步骤。
例如包括存储计算机程序的存储器201,上述计算机程序可由处理器202执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、FlashMemory、磁表面存储器、光盘、或CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本发明将应用程序使用的虚拟内存分割为多个基准内存,使用采样技术在基准内存中随机选择一个页来判断其冷热代表整个基准内存的冷热,这样避免了对应用程序所有内存页的冷热判断,可以大大减少需要进行冷热判断的内存页个数,有效解决由于现有技术造成内存页轮询时严重占用CPU资源的问题,有效地降低了占用的CPU资源。
本发明技术方案中相邻的基准内存如果都长时间未被访问说明这两块内存都是冷内存,或者相邻的基准内存如果都长时间被访问说明这两块内存都是热内存,对于这两种情况需要将相邻的基准内存进行合并,这样可以减少后续进行冷热判断的基准内存个数,有利于提升性能。
本发明技术方案中如果一个合并的冷基准内存连续多次被访问,或者一个合并的热基准内存连续多次未被访问,将合并的基准内存进行拆分,以便于提升基准内存冷热识别的精度。
本发明技术方案中将冷内存进行回收,将热内存进行大页迁移,可以有效提升使用大内存的应用程序的内存访问性能和节省内存使用量。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

Claims (10)

1.一种应用程序内存使用优化方法,其特征是,包括:
将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
2.根据权利要求1所述的一种应用程序内存使用优化方法,其特征是,每个基准内存对应一个数据结构,所述数据结构用于描述对应基准内存的访问热度,所述数据结构具体包括对应基准内存的访问次数、连续访问次数、连续未访问次数、冷热页标识。
3.根据权利要求2所述的一种应用程序内存使用优化方法,其特征是,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况具体包括:
将虚拟内存中随机选取的页的虚拟地址映射为物理地址;判断当前预设轮询时间间隔内虚拟内存中随机选取的页的虚拟地址是否映射为物理地址;
如果随机选取的页的虚拟地址尚未映射物理地址,则设置基准内存对应数据结构中的访问次数为0,连续未访问次数加1;
如果随机选取的页的虚拟地址已经映射物理地址,则获取物理地址的idle标记,如果idle标记被清除,将基准内存对应的数据结构中访问次数加1、连续访问次数加1、连续未访问次数置0,再次设置该页的状态为idle;如果idle标记未被清除,将基准内存对应的数据结构中连续访问次数置0、连续未访问次数加1。
4.根据权利要求3所述的一种应用程序内存使用优化方法,其特征是,还包括:
如果基准内存对应数据结构中的连续未访问次数大于第三预设次数阈值,并且访问次数大于第四预设次数阈值,将该基准内存的访问次数置0,其中,第四预设次数阈值大于第二预设次数阈值。
5.根据权利要求2所述的一种应用程序内存使用优化方法,其特征是,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分具体包括:
每计算完成当前预设轮询时间间隔内一个基准内存的访问频率后,获取相邻基准内存对应的数据结构中的连续访问次数以及连续未访问次数;
如果当前基准内存以及相邻基准内存的连续访问次数均大于第五预设次数阈值,则将两个相邻基准内存合并为一个基准内存,并将合并后的基准内存标识为热内存;如果合并的热基准内存的连续未访问次数大于第八次数阈值,则将合并的热基准内存拆分为两个基准内存;并将拆分后的基准内存均标识为冷内存;
如果当前基准内存以及相邻基准内存的连续未访问次数均大于第六预设次数阈值,则将两个相邻的基准内存合并为一个基准内存,并并将合并后的基准内存标识为冷内存;如果合并后的冷基准内存的连续访问次数大于第七预设次数阈值,则将合并的冷基准内存拆分为两个基准内存,并将拆分后的基准内存均标识为热内存;其中,第五预设次数阈值大于第七预设次数阈值,第八预设次数阈值小于第六预设次数阈值。
6.根据权利要求5所述的一种应用程序内存使用优化方法,其特征是,合并后的基准内存对应的数据结构使用首个基准内存的数据结构,并且数据结构中的访问次数、连续访问次数、连续未访问次数为两个基准内存中相应较小的值。
7.根据权利要求5所述的一种应用程序内存使用优化方法,其特征是,合并的基准内存拆分之后,每个基准内存对应的数据结构中的访问次数、连续访问次数、连续未访问次数均为合并的基准内存对应的数据结构中访问次数、连续访问次数、连续未访问次数的值。
8.一种应用程序内存使用优化装置,其特征是,包括:
分割模块,将应用程序使用的虚拟内存分割为多个基准内存,对分割后的每个基准内存中随机选取其中一个页,根据随机选取的页在当前预设轮询时间间隔内访问情况更新所述基准内存当前的访问情况;
合并及拆分模块,根据多个预设轮询时间间隔内基准内存的访问情况,将相邻基准内存进行合并或拆分;
迁移及回收模块,当轮询次数大于第一预设次数阈值时,将访问次数大于第二预设次数阈值的热内存迁移到大页,将访问次数小于第二预设次数阈值的冷内存进行内存回收,其中,第一预设次数阈值大于第二预设次数阈值。
9.一种电子设备,其特征是,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的一种应用程序内存使用优化方法的步骤。
10.一种计算机可读存储介质,其特征是,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的一种应用程序内存使用优化方法的步骤。
CN202210899020.1A 2022-07-28 2022-07-28 一种应用程序内存使用优化方法、装置、设备及介质 Pending CN115237821A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210899020.1A CN115237821A (zh) 2022-07-28 2022-07-28 一种应用程序内存使用优化方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210899020.1A CN115237821A (zh) 2022-07-28 2022-07-28 一种应用程序内存使用优化方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN115237821A true CN115237821A (zh) 2022-10-25

Family

ID=83677277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210899020.1A Pending CN115237821A (zh) 2022-07-28 2022-07-28 一种应用程序内存使用优化方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN115237821A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115718620A (zh) * 2022-11-22 2023-02-28 科东(广州)软件科技有限公司 一种代码程序迁移方法、装置、设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115718620A (zh) * 2022-11-22 2023-02-28 科东(广州)软件科技有限公司 一种代码程序迁移方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
EP3608788B1 (en) Internal memory access method and computer system
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
US9501422B2 (en) Identification of low-activity large memory pages
CN103049392B (zh) 缓存目录的实现方法及装置
CN111930316B (zh) 一种内容分发网络的缓存读写系统和方法
EP2919120B1 (en) Memory monitoring method and related device
CN114356248B (zh) 一种数据处理方法和装置
CN108304259B (zh) 内存管理方法及系统
JP6167646B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
WO2023029971A1 (zh) 基于异构内存的数据迁移方法
US20240086332A1 (en) Data processing method and system, device, and medium
CN115237821A (zh) 一种应用程序内存使用优化方法、装置、设备及介质
CN115756312A (zh) 数据访问系统、数据访问方法和存储介质
US7562204B1 (en) Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory
CN115617542A (zh) 内存交换方法、装置、计算机设备及存储介质
US20080189495A1 (en) Method for reestablishing hotness of pages
CN109558093B (zh) 一种针对图像处理型负载的混合内存页面迁移方法
CN108563586B (zh) 一种分离固态盘中垃圾回收数据与用户数据的方法
CN117555816A (zh) 内存回收方法、装置、计算设备及计算机存储介质
CN111143238B (zh) 基于eFlash存储芯片的数据擦写方法及系统
CN106649143B (zh) 一种访问缓存的方法、装置及电子设备
CN108897618B (zh) 一种异构内存架构下基于任务感知的资源分配方法
CN109299021B (zh) 页迁移方法、装置和中央处理器
EP3296878B1 (en) Electronic device and page merging method therefor
CN108845959B (zh) 一种内存数据处理方法、装置和电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination