CN106970881B - 一基于大页的冷热页追踪及压缩回收方法 - Google Patents
一基于大页的冷热页追踪及压缩回收方法 Download PDFInfo
- Publication number
- CN106970881B CN106970881B CN201710142306.4A CN201710142306A CN106970881B CN 106970881 B CN106970881 B CN 106970881B CN 201710142306 A CN201710142306 A CN 201710142306A CN 106970881 B CN106970881 B CN 106970881B
- Authority
- CN
- China
- Prior art keywords
- page
- linked list
- cold
- active
- hot
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000011084 recovery Methods 0.000 title claims abstract description 20
- 230000006835 compression Effects 0.000 title claims abstract description 11
- 238000007906 compression Methods 0.000 title claims abstract description 11
- 230000015654 memory Effects 0.000 claims abstract description 57
- 230000006870 function Effects 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 45
- 230000000694 effects Effects 0.000 claims description 24
- 230000035939 shock Effects 0.000 claims description 10
- 238000013507 mapping Methods 0.000 claims description 5
- 230000007958 sleep Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 14
- 238000004064 recycling Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于大页的冷热页追踪及压缩回收方法,该方法采用双标志位PG_active和Ref确定大页的活动程度,并根据大页的活动程度移动大页于热页链表与冷热链表之间,基于上述的内容调用相关的函数对大页进行冷热页追踪及压缩回收。该方法使内存回收机制更加完善,内存回收力度大大加强,使相同的物理内存能够执行更多的程序。
Description
技术领域
本发明属于计算机操作系统技术领域,具体涉及一种基于大页的冷热页追踪及压缩回收方法。
背景技术
现代CPU是通过寻址来访问内存的。32位CPU的寻址范围是 0~0xFFFFFFFF,可支持的物理内存最大是4G。但在实践过程中,经常会有这样的问题,多个应用程序同时需要占用的内存总量大于4G或者程序需要使用4G内存但是可用物理内存小于4G。为了解决内存不够用的问题,现代CPU引入内存管理单元(Memory Management Unit,MMU),MMU 的核心思想是利用虚拟地址替代物理地址,即CPU寻址时使用虚拟地址,由MMU负责将虚拟地址映射为物理地址。MMU的引入,解决了对物理内存的限制,对程序来说,就像自己在使用4G内存一样。内存分页(Paging) 是在使用MMU的基础上,提出的一种内存管理机制。它将虚拟地址和物理地址按固定大小(如传统的4KB)分割成页(page)和页帧(page frame),并保证页与页帧的大小相同。这种机制,从数据结构上,保证了访问内存的高效,并使操作系统能支持非连续性的内存分配。
目前,linux内核中用于解决内存不够的技术主要是基于小页(4KB) 的页面回收和页交换技术。内核通过将很少使用的部分内存页换出到块设备,这样就相当于提供了更多的主存。内核在基于小页的页交换和页面回收的实现中,使用了很多关键性的技术:主动回收与被动回收相结合的交换与回收策略;使用双标志位的冷热页判断机制;引入预读机制的缺页异常处理;基于优先级的具有热插拔属性的交换区管理。
对于用作服务器的机器来说,其内存相对于普通计算机要高得多。这时候采用原始的基于4K的分页机制已经渐渐地无法很好地适用当前的应用场景。例如:对于具有128GB内存的linux服务器来说,4KB分一页那么共分成32M(32,000,000)个页,这是一个非常庞大的数字,渐渐的管理这些页需要消耗的资源会削弱分页机制带来的好处。同时针对用户需要大量使用内存的情况,原有的小页会增加缺页次数与内存的访问次数。因此在linux内核2.6版本以后,linux内核也引入了内存大页的机制。但是,对于大页的冷热页追踪,当前内核并没有实现,而是将大页分解成多个小页进行冷热页追踪。因此实现一个基于大页的冷热页追踪是非常重要的,它对于更好的进行页交换与页面回收具有举足轻重的作用。
发明内容
鉴于上述,本发明提出了一种基于大页的冷热页追踪及压缩回收方法,该方法基于双标志位确定大页活动程度,能够更加准确地将冷热大页进行分类,且能够实现冷页的压缩回收。
本发明提出了一种基于大页的冷热页追踪及压缩回收方法,包括以下步骤:
(1)针对每个内存节点,系统调用函数hp_kswapd,该函数hp_kswapd 启动内核守护线程,该守护线程周期性地检查大页内存的使用情况;
(2)每个周期内,函数hp_kswapd调用函数hp_balance_node对大页内存进行扫描,针对大页内存不足的节点执行步骤(3)~步骤(6);
(3)函数hp_balance_node调用函数hp_shrink_lruvec对大页内存不足的节点的Lru链表中的大页进行处理,得到处于热页链表上的大页数目 m,处于冷页链表上的大页数目n,若m大于n,执行步骤(4),否则,执行步骤(5);
(4)函数hp_shrink_lruvec调用函数hp_shrink_active_list判断热页链表上的大页的活动程度,并将热页链表上的活动程度低的冷页大页移动到冷页链表上;
(5)函数hp_shrink_lruvec调用函数hp_shrink_inactive_list判断冷页链表上的大页的活动程度,得到没有被进程访问的冷页;
(6)函数hp_shrink_inactive_list调用函数hp_shrink_page_list对冷页链表上没有被进程访问的冷页进行压缩。
内存初始化的时候会设置一个水印值watermark,该水印值watermark 代表当前内核认为比较满意的空闲内存数量,以一个大页为单位,当内存中空闲大页不足watermark所指示的值时,就会执行上述方法来回收大页。
所述的函数hp_kswapd启动内核守护进程,该守护进程周期性地检查大页内存的使用情况,实现方式是在无限循环中周期性睡眠一定时间,该时间可根据业务进行调节,每个周期内函数hp_kswapd调用 hp_balance_node函数。
所述的函数hp_balance_node首先初始化控制扫描参数,该控制扫描参数包括是否允许解除映射、是否允许会写,这些参数会直接影响到接下来是否能够回收大页,只有允许解除映射,系统才会压缩那些被进程映射的页,只有允许回写,系统才会压缩那些被修改过的脏页。参数初始化完毕,实现DEF_PRIORITY(可根据业务调节该值)次循环,每次循环判断每个节点的空闲内存是否充足,如果充足,则直接返回到函数hp_kswapd,否则,函数hp_balance_node调用hp_shrink_lruvec回收内存大页。
所述的函数hp_shrink_lruvec首先计算扫描大页数量,然后,根据热页链表与冷页链表的数量关系来确定是否调用hp_shrink_active_list来回收活动页,最终都会调用hp_shrink_inactive_list来回收非活动页。
所述的函数hp_shrink_active_list回收活动链表上的页,主要是依据大页的活动程度方法来判断是否要将该页从活动链表转移到非活动链表。
所述的函数hp_shrink_inactive_list回收非活动链表上的页,主要是依据大页的活动程度判断是否要将该页压缩回收。具体压缩回收是函数 hp_shrink_page_list实现的。
为确定大页的活动程度,本发明设置大页的标志位PG_active和标志位Ref,其中,标志位PG_active表示页当前的冷热状态,若标志位PG_active 为1,表示页当前处于热状态,若标志位PG_active为0,表示页当前处于冷状态,标志位Ref表示页是否被进程访问,若标志位Ref为0,表示大页在过去一段时间内没有被进程访问;若标志位Ref为1,表示大页在过去一段时间内被进程访问;以上两个标志位的设置,可以实现更巧妙快速准确地判断大页的活动程度。
标志位PG_active的置位与清零:如果当前大页处于热页链表 Lru_active上,则表明该大页为热页,设置标志位PG_active为1,如果当前大页处于冷页链表Lru_inactive上,表明该大页为冷页,设置标志位 PG_active为0,标志位PG_active的置位与否,直接对应于大页所在的LRU 链表。
标志位Ref的置位与清零:每次扫描大页时,根据使用该页进程的页表项中访问位是否置位来确定是否要设置标志位Ref,若页表项中访问位置位,表明该页被进程访问,设置标志位Ref为1,若页表项中访问位清零,表明该页未被进程访问,设置标志位Ref为0。
从热页链表到冷页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页都没有被进程访问,且该大页的标志位 Ref为0,则将该大页从热页链表转移到冷页链表上,且设置标志位 PG_active为0;否则,将该大页返回到热页链表上。
从冷页链表到热页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页被进程访问,且该大页的标志位Ref为1,则将该大页从冷页链表转移到热页链表上,且设置该大页的标志位Ref为 0;否则,将该大页返回到冷页链表上。
开始申请的大页无论放到热页链表还是冷页链表上都不会对其稳定状态造成影响,所以所述转换过程描述的是系统运行一段时间之后,如何确定一个大页的活动程度。
以上所述的大页于热页链表与冷页链表之间的移动方法,包括以下步骤:
(1)对于一个初始于热页链表Lru_active上的大页,系统判断该大页的页描述符中的_count标识位是否为零,若是,将该大页移回到热页链表上,若否,执行步骤(2);
(2)令该大页的页描述符中的_count标识位加1,并将该大页移动到局部链表L_hold上;
(3)调用page_referenced函数判断移动到局部链表L_hold上的大页是否被进程访问过,若是,执行步骤(4),若否,执行步骤(5);
(4)将该大页从局部链表L_hold上移到局部热页链表L_active上,并设置该大页的标志位PG_active为1;
(5)将该大页从局部链表L_hold上移动到局部冷页链表L_inactive 上,并设置该大页的标志位PG_active为0;
(6)对于局部热页链表L_active上的大页,令大页的页描述符中的 _count标识位减1,并判断_count标识位是否为0,若是,执行步骤(7),若是,执行步骤(8);
(6’)对于局部冷页链表L_inactive上的大页,令大页的页描述符中的_count标识位减1,并判断_count标识位是否为0,若是,执行步骤(7),若是,执行步骤(9);
(7)将该大页从局部热页链表L_active或局部冷页链表L_inactive 移动到链表pageset中,进行回收;
(8)将该大页从局部热页链表L_active移动到热页链表Lru_active 上,并设置标志位PG_active为1;
(9)将该大页从局部冷页链表L_inactive移动到冷页链表 Lru_inactive上,并设置标志位PG_active为0。
对于冷页链表Lru_inactive上的大页的处理方法与处于热页链表 Lru_active上的大页的处理方法相同。
该方法确保了内存大页不会在热页链表和冷页链表之间过快的跳跃,如果出现过快的跳跃,显然不利于对大页的活动程度做出一个可靠的判断。所以本发明在将高度活动大页转换为不活动大页之前,会获得第二次机会即连续两次检测结果都被访问,而高度不活动大页在转换为活动大页之前,也需要二次证明,即连续两次检测结果都没有被访问。这就是本发明实现的冷热页判断机制。
本发明基于双标志位的大页冷热程度确定机制能够更加准确的将冷热大页进行分类,通过这两个标志位密切的协调确定冷热页,对冷热页的误判所造成的回收抖动具有很好的效果。
本发明基于大页的冷热页追踪及压缩回收方法能够有效的实现冷页的压缩回收,使内存回收机制更加完善,内存回收力度大大加强,使相同的物理内存能够执行更多的程序。
附图说明
图1是应用实施例大页于热页链表与冷页链表之间的移动方法的冷热页追踪系统框架;
图2是实施例大页于热页链表与冷页链表之间的移动方法的流程示意图;
图3是实施例基于大页的冷热页追踪及压缩回收方法的流程示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
如图1所示的是应用本实施例方法的一种冷热页追踪系统框架,包括:用于存放热页的热页链表Lru_active、用于存放冷页的冷页链表 Lru_inactive、用于存放空闲页的空闲链表Free_list以及压缩空间/外存, linux内核线程hp_kswapd对内存大页进行周期性扫描,根据大页的冷热程度,利用lru算法将大页移动到到与其热页程度相匹配的链表上。
为确定大页的活动程度,本发明设置大页的标志位PG_active和标志位Ref,其中,标志位PG_active表示页当前的冷热状态,若标志位PG_active 为1,表示页当前处于热状态,若标志位PG_active为0,表示页当前处于冷状态,标志位Ref表示页是否被进程访问,若标志位Ref为0,表示大页在过去一段时间内没有被进程访问;若标志位Ref为1,表示大页在过去一段时间内被进程访问;以上两个标志位的设置,可以实现更巧妙快说准确地判断大页的活动程度。
标志位PG_active的置位与清零:如果当前大页处于热页链表 Lru_active上,则表明该大页为热页,设置标志位PG_active为1,如果当前大页处于冷页链表Lru_inactive上,表明该大页为冷页,设置标志位 PG_active为0,标志位PG_active的置位与否,直接对应于大页所在的LRU 链表。
标志位Ref的置位与清零:每次扫描大页时,根据使用该页进程的页表项中访问位是否置位来确定是否要设置标志位Ref,若页表项中访问位置位,表明该页被进程访问,设置标志位Ref为1,若页表项中访问位清零,表明该页未被进程访问,设置标志位Ref为0。
从热页链表到冷页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页都没有被进程访问,且该大页的标志位 Ref为0,则将该大页从热页链表转移到冷页链表上,且设置标志位 PG_active为0;否则,将该大页返回到热页链表上。
从冷页链表到热页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页被进程访问,且该大页的标志位Ref为1,则将该大页从冷页链表转移到热页链表上,且设置该大页的标志位Ref为 0;否则,将该大页返回到冷页链表上。
该方法确保了内存大页不会在热页链表和冷页链表之间过快的跳跃,如果出现过快的跳跃,显然不利于对大页的活动程度做出一个可靠的判断。所以本发明在将高度活动大页转换为不活动大页之前,会获得第二次机会即连续两次检测结果都被访问,而高度不活动大页在转换为活动大页之前,也需要二次证明,即连续两次检测结果都没有被访问。这就是本发明实现的冷热页判断机制。
基于上述的冷热页追踪系统架构,大页于热页链表与冷页链表之间的移动方法,如图2所示,包括以下步骤:
S101,对于一个初始于热页链表Lru_active上的大页,系统判断该大页的页描述符中的_count标识位是否为零,若是,将该大页移回到热页链表上,若否,执行S102;
S102,令该大页的页描述符中的_count标识位加1,并将该大页移动到局部链表L_hold上;
S103,调用page_referenced函数判断移动到局部链表L_hold上的大页是否被进程访问过,若是,执行S104,若否,执行S105;
S104,将该大页从局部链表L_hold上移到局部热页链表L_active上,并设置该大页的标志位PG_active为1;
S105,将该大页从局部链表L_hold上移动到局部冷页链表L_inactive 上,并设置该大页的标志位PG_active为0;
S106,对于局部热页链表L_active上的大页,令大页的页描述符中的 _count标识位减1,并判断_count标识位是否为0,若是,执行S107,若否,执行S108;
S106’,对于局部冷页链表L_inactive上的大页,令大页的页描述符中的_count标识位减1,并判断_count标识位是否为0,若是,执行S107,若否,执行S109;
S107,将该大页从局部热页链表L_active或局部冷页链表L_inactive 移动到链表pageset中,进行回收;
为防止将要被回收的大页被其他函数调用,并将其收回,故将这些大页移动到链表pageset中。
S108,将该大页从局部热页链表L_active移动到热页链表Lru_active 上,并设置标志位PG_active为1;
S109,将该大页从局部冷页链表L_inactive移动到冷页链表 Lru_inactive上,并设置标志位PG_active为0。
基于上述的大页于热页链表与冷页链表之间的移动方法,对大页进行冷热页追踪及压缩回收,具体包括以下步骤:
S201,针对每个内存节点,系统调用函数hp_kswapd,该函数 hp_kswapd启动内核守护线程,该守护线程周期性地检查大页内存的使用情况;
S202,每个周期内,函数hp_kswapd调用函数hp_balance_node对大页内存进行扫描,针对大页内存不足的节点执行步骤(3)~步骤(6);
S203,函数hp_balance_node调用函数hp_shrink_lruvec对大页内存不足的节点的Lru链表中的大页进行处理,得到处于热页链表上的大页数目 m,处于冷页链表上的大页数目n,若m大于n,执行S204,否则,执行 S205;
S204,函数hp_shrink_lruvec调用函数hp_shrink_active_list判断热页链表上的大页的活动程度,并将热页链表上的活动程度低的冷页大页移动到冷页链表上;
S205,函数hp_shrink_lruvec调用函数hp_shrink_inactive_list判断冷页链表上的大页的活动程度,得到没有被进程访问的冷页;
S206,函数hp_shrink_inactive_list调用函数hp_shrink_page_list对冷页链表上没有被进程访问的冷页进行压缩。
以上方法基于双标志位的大页冷热程度确定机制能够更加准确的将冷热大页进行分类,通过这两个标志位密切的协调确定冷热页,对冷热页的误判所造成的回收抖动具有很好的效果,且基于大页的冷热页追踪及压缩回收方法能够有效的实现冷页的压缩回收,使内存回收机制更加完善,内存回收力度大大加强,使相同的物理内存能够执行更多的程序。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于大页的冷热页追踪及压缩回收方法,包括以下步骤:
(1)针对每个内存节点,系统调用函数hp_kswapd,该函数hp_kswapd启动内核守护线程,该守护线程周期性地检查大页内存的使用情况;
(2)每个周期内,函数hp_kswapd调用函数hp_balance_node对大页内存进行扫描,针对大页内存不足的节点执行步骤(3)~步骤(6)
(3)函数hp_balance_node调用函数hp_shrink_lruvec对大页内存不足的节点的LRU链表中的大页进行处理,得到处于热页链表上的大页数目m,处于冷页链表上的大页数目n,若m大于n,执行步骤(4),否则,执行步骤(5);
(4)函数hp_shrink_lruvec调用函数hp_shrink_active_list判断热页链表上的大页的活动程度,并将热页链表上的活动程度低的冷页大页移动到冷页链表上;
(5)函数hp_shrink_lruvec调用函数hp_shrink_inactive_list判断冷页链表上的大页的活动程度,得到没有被进程访问的冷页;
(6)函数hp_shrink_inactive_list调用函数hp_shrink_page_list对冷页链表上没有被进程访问的冷页进行压缩;
所述的函数hp_kswapd启动内核守护进程,该守护进程周期性地检查大页内存的使用情况,实现方式是在无限循环中周期性睡眠一定时间,该时间可根据业务进行调节,每个周期内函数hp_kswapd调用hp_balance_node函数;
所述的函数hp_balance_node首先初始化控制扫描参数,该控制扫描参数包括是否允许解除映射、是否允许会写,这些参数会直接影响到接下来是否能够回收大页,只有允许解除映射,系统才会压缩那些被进程映射的页,只有允许回写,系统才会压缩那些被修改过的脏页;参数初始化完毕,实现DEF_PRIORITY次循环,每次循环判断每个节点的空闲内存是否充足,如果充足,则直接返回到函数hp_kswapd,否则,函数hp_balance_node调用hp_shrink_lruvec回收内存大页;
所述的函数hp_shrink_lruvec首先计算扫描大页数量,然后,根据热页链表与冷页链表的数量关系来确定是否调用hp_shrink_active_list来回收活动页,最终都会调用hp_shrink_inactive_list来回收非活动页;
所述的函数hp_shrink_active_list回收活动链表上的页,依据大页的活动程度方法来判断是否要将该页从活动链表转移到非活动链表;
所述的函数hp_shrink_inactive_list回收非活动链表上的页,依据大页的活动程度判断是否要将该页压缩回收;
所述的大页中设有确定大页活动程度的标志位PG_active和标志位Ref,其中,标志位PG_active表示页当前的冷热状态,若标志位PG_active为1,表示页当前处于热状态,若标志位PG_active为0,表示页当前处于冷状态;标志位Ref表示页是否被进程访问,若标志位Ref为0,表示大页在过去一段时间内没有被进程访问;若标志位Ref为1,表示大页在过去一段时间内被进程访问;
标志位PG_active的置位与清零:如果当前大页处于热页链表Lru_active上,则表明该大页为热页,设置标志位PG_active为1,如果当前大页处于冷页链表Lru_inactive上,表明该大页为冷页,设置标志位PG_active为0,标志位PG_active的置位与否,直接对应于大页所在的LRU链表;
标志位Ref的置位与清零:每次扫描大页时,根据使用该页进程的页表项中访问位是否置位来确定是否要设置标志位Ref,若页表项中访问位置位,表明该页被进程访问,设置标志位Ref为1,若页表项中访问位清零,表明该页未被进程访问,设置标志位Ref为0;
从热页链表到冷页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页都没有被进程访问,且该大页的标志位Ref为0,则将该大页从热页链表转移到冷页链表上,且设置标志位PG_active为0;否则,将该大页返回到热页链表上;
从冷页链表到热页链表的移动:当线程hp_kswapd扫描到当前大页,发现从上次扫描到现在,该大页被进程访问,且该大页的标志位Ref为1,则将该大页从冷页链表转移到热页链表上,且设置该大页的标志位Ref为0;否则,将该大页返回到冷页链表上。
2.如权利要求1所述的基于大页的冷热页追踪及压缩回收方法,其特征在于,所述的大页于热页链表与冷页链表之间的移动方法,包括以下步骤:
(1)对于一个初始于热页链表Lru_active上的大页,系统判断该大页的页描述符中的_count标识位是否为零,若是,将该大页移回到热页链表上,若否,执行步骤(2);
(2)令该大页的页描述符中的_count标识位加1,并将该大页移动到局部链表L_hold上;
(3)调用page_referenced函数判断移动到局部链表L_hold上的大页是否被进程访问过,若是,执行步骤(4),若否,执行步骤(5);
(4)将该大页从局部链表L_hold上移到局部热页链表L_active上,并设置该大页的标志位PG_active为1;
(5)将该大页从局部链表L_hold上移动到局部冷页链表L_inactive上,并设置该大页的标志位PG_active为0;
(6)对于局部热页链表L_active上的大页,令大页的页描述符中的_count标识位减1,并判断_count标识位是否为0,若是,执行步骤(7),若否,执行步骤(8);
(6’)对于局部冷页链表L_inactive上的大页,令大页的页描述符中的_count标识位减1,并判断_count标识位是否为0,若是,执行步骤(7),若否,执行步骤(9);
(7)将该大页从局部热页链表L_active或局部冷页链表L_inactive移动到链表pageset中,进行回收;
(8)将该大页从局部热页链表L_active移动到热页链表Lru_active上,并设置标志位PG_active为1;
(9)将该大页从局部冷页链表L_inactive移动到冷页链表Lru_inactive上,并设置标志位PG_active为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710142306.4A CN106970881B (zh) | 2017-03-10 | 2017-03-10 | 一基于大页的冷热页追踪及压缩回收方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710142306.4A CN106970881B (zh) | 2017-03-10 | 2017-03-10 | 一基于大页的冷热页追踪及压缩回收方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106970881A CN106970881A (zh) | 2017-07-21 |
CN106970881B true CN106970881B (zh) | 2020-04-28 |
Family
ID=59329598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710142306.4A Active CN106970881B (zh) | 2017-03-10 | 2017-03-10 | 一基于大页的冷热页追踪及压缩回收方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106970881B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763104B (zh) * | 2018-05-23 | 2022-04-08 | 北京小米移动软件有限公司 | 预读取文件页的方法、装置及存储介质 |
CN110908923B (zh) * | 2018-09-14 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 内存回收方法及装置 |
CN113490921A (zh) | 2019-03-29 | 2021-10-08 | 英特尔公司 | 用于收集冷页的装置、方法和系统 |
CN110502335A (zh) * | 2019-06-12 | 2019-11-26 | 成都虚谷伟业科技有限公司 | 分布式数据库多级内存管理装置 |
CN110457235B (zh) * | 2019-08-20 | 2021-10-08 | Oppo广东移动通信有限公司 | 内存压缩方法、装置、终端及存储介质 |
CN111352861B (zh) * | 2020-02-19 | 2023-09-29 | Oppo广东移动通信有限公司 | 内存压缩方法、装置及电子设备 |
CN111880991B (zh) * | 2020-07-23 | 2022-09-13 | Oppo广东移动通信有限公司 | 内存优化方法、装置、电子设备及计算机可读存储介质 |
CN112558866B (zh) * | 2020-12-03 | 2022-12-09 | Oppo(重庆)智能科技有限公司 | 数据的预读方法、移动终端及计算机可读存储介质 |
CN114116191B (zh) * | 2021-06-24 | 2023-09-01 | 荣耀终端有限公司 | 内存冷页的处理方法及电子设备 |
CN116107925B (zh) * | 2023-04-10 | 2023-09-26 | 阿里云计算有限公司 | 数据存储单元处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526923A (zh) * | 2009-04-02 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和闪存存储系统 |
CN102799534A (zh) * | 2012-07-18 | 2012-11-28 | 上海宝存信息科技有限公司 | 基于固态存储介质的存储系统及方法、冷热数据识别方法 |
CN103729305A (zh) * | 2012-10-11 | 2014-04-16 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
CN106294197A (zh) * | 2016-08-05 | 2017-01-04 | 华中科技大学 | 一种面向nand闪存的页面置换方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386673B2 (en) * | 2005-11-30 | 2008-06-10 | Red Hat, Inc. | Method for tracking of non-resident pages |
-
2017
- 2017-03-10 CN CN201710142306.4A patent/CN106970881B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526923A (zh) * | 2009-04-02 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和闪存存储系统 |
CN102799534A (zh) * | 2012-07-18 | 2012-11-28 | 上海宝存信息科技有限公司 | 基于固态存储介质的存储系统及方法、冷热数据识别方法 |
CN103729305A (zh) * | 2012-10-11 | 2014-04-16 | 财团法人工业技术研究院 | 虚拟机的存储器管理的方法和计算机系统 |
CN106294197A (zh) * | 2016-08-05 | 2017-01-04 | 华中科技大学 | 一种面向nand闪存的页面置换方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106970881A (zh) | 2017-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970881B (zh) | 一基于大页的冷热页追踪及压缩回收方法 | |
US11531625B2 (en) | Memory management method and apparatus | |
CN100458738C (zh) | 用于管理页替换的方法和系统 | |
US20240054079A1 (en) | Memory Management Method and Apparatus, Electronic Device, and Computer-Readable Storage Medium | |
US10268588B2 (en) | Methods of cache preloading on a partition or a context switch | |
US7363456B2 (en) | System and method of allocating contiguous memory in a data processing system | |
US7793049B2 (en) | Mechanism for data cache replacement based on region policies | |
EP3163451B1 (en) | Memory management method and device, and memory controller | |
US10261918B2 (en) | Process running method and apparatus | |
CN111813710B (zh) | 避免Linux内核内存碎片方法、设备及计算机存储介质 | |
US6457107B1 (en) | Method and apparatus for reducing false sharing in a distributed computing environment | |
CN115543532A (zh) | 缺页异常的处理方法、装置、电子设备以及存储介质 | |
Lim et al. | Virtual memory partitioning for enhancing application performance in mobile platforms | |
CN117170872A (zh) | 内存管理方法、装置、设备和存储介质 | |
US6360302B1 (en) | Method and system for dynamically changing page types in unified scalable shared-memory architectures | |
US20060294334A1 (en) | Statement regarding federally sponsored-research or development | |
US20240103913A1 (en) | Task scheduling method and system, and hardware task scheduler | |
US10754775B2 (en) | Fast cache invalidation response using cache class attributes | |
CN117251292B (zh) | 内存管理方法、系统、终端及存储介质 | |
EP4386548A1 (en) | Resource management method and corresponding device | |
CN116578424B (zh) | 基于hmat的内存回收方法 | |
US7853771B2 (en) | Page allocation management for virtual memory | |
JP2006260395A (ja) | プログラムローディング方法及びその装置 | |
Chen et al. | Exploring Synchronous Page Fault Handling | |
CN116541156A (zh) | 一种内存管理方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |