CN105022696B - 一种基于内存访问热度的大内存页整合方法 - Google Patents

一种基于内存访问热度的大内存页整合方法 Download PDF

Info

Publication number
CN105022696B
CN105022696B CN201510431307.1A CN201510431307A CN105022696B CN 105022696 B CN105022696 B CN 105022696B CN 201510431307 A CN201510431307 A CN 201510431307A CN 105022696 B CN105022696 B CN 105022696B
Authority
CN
China
Prior art keywords
page
big
bitmap
access temperature
internal memory
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
Application number
CN201510431307.1A
Other languages
English (en)
Other versions
CN105022696A (zh
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.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
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 Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201510431307.1A priority Critical patent/CN105022696B/zh
Publication of CN105022696A publication Critical patent/CN105022696A/zh
Application granted granted Critical
Publication of CN105022696B publication Critical patent/CN105022696B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种基于内存访问热度的大页内存整合方法,按照预设周期获取系统内存的缺页频率,当缺页频率大于第一阈值时:获取该周期内各个内存页的访问信息,并根据各个内存页的访问信息计算各个内存页的访问热度;根据各个内存页的访问热度更新系统的位图,并计算更新前后的位图之间的编辑距离,当编辑距离大于第二阈值时根据更新后的位图对系统内存进行大页拆分或小页合并。本发明根据系统内存中各个内存页的访问热度,对内存页进行大页拆分和小页合并以使系统内存的分配方案与实际情况匹配,提高了系统内存的使用灵活性和访问速度,且通过缺页频率和位图的编辑距离阈值判断是否进行最终整合操作,能够减小由于负载波动可能引起的颠簸效应。

Description

一种基于内存访问热度的大内存页整合方法
技术领域
本发明涉及操作系统内存管理技术领域,具体涉及一种基于内存访问热度的大内存页整合方法。
背景技术
随着计算机硬件技术的不断发展,当前个人计算机以及服务器上所配置的内存越来越大,目前普遍配置的内存可以达到数GB,有些服务上可以达到几百GB甚至上TB的内存。
为了提高对内存使用的灵活性以及使用效率,现代操作系统多使用内存分页机制,即将系统的所有的物理内存划分为若干固定大小的内存页。应用程序需要使用内存时,向操作系统提出申请,操作系统根据请求来分配若干物理内存页,并将这些物理页面映射到应用程序的虚拟地址空间中,物理内存到虚拟地址空间的映射对于应用程序来说是透明的。
应用程序读写某个虚拟内存地址时,操作系统会通过查找页表的方式,找到该虚拟内存地址所对应的物理内存地址,然后再转化成为对该物理内存地址的读写。由于应用程序的虚拟地址空间可能很大,所以现代操作系统一般会将地址转换过程分级,先查找页目录表,再查找页表,再查找具体的页表项。
虽然分级方式方便了地址的转换,但是同时也降低了查找的速度:每一次查找都要经过三级甚至更多次的转换。为了加速这个过程,CPU中引入了TLB(translationlookside buffer)的概念。即将最近地址转换过程中的源地址和目的地址缓存到TLB中,下次再做转换时,便可以直接使用这个缓存,从而避免复杂的查找页表操作。
随着计算机内存容量的不断增大,应用程序所使用的内存也逐渐变大,这意味着更多次数的地址转换。这也就加大了TLB的压力。然后,CPU内部空间有限,并且TLB造价比较昂贵,所以TLB大小的增长速度远远小于内存容量的增长速度。
为了能充分的利用TLB加速地址的转换,可以使操作系统扩大每一个内存页的大小。如将原来的每个物理页面大小为4KB增加为2MB。这样,每一个TLB条目能映射相当于原来512倍大小的内存。
但是,如果将所有内存页大小都设置成为2MB,将大大增加内存页面的内部碎片,虽然可以较高效率的使用内存,但同时也造成了内存资源的极大浪费。
发明内容
针对现有技术的不足,本发明提出一种基于内存访问热度的大页内存整合方法,能够有效提高系统的内存访问效率,同时还能够保证内存的使用率,避免浪费内存。
本发明的基于内存访问热度的大页内存整合方法,按照预设周期获取系统内存(即系统的物理内存)的缺页频率,当缺页频率大于第一阈值时通过如下步骤进行大页内存整合:
S1:获取该周期内各个内存页的访问信息,并根据各个内存页的访问信息计算各个内存页的访问热度;
S2:根据各个内存页的访问热度更新系统的位图,并计算更新前后的位图之间的编辑距离,当编辑距离大于第二阈值时根据更新后的位图对系统内存进行大页拆分或小页合并。
本发明的大页内存整合方法通过对大页内存进行整合使系统内存中采取大页面内存(大页内存)与小页面内存(小页内存)共存的形式,对于经常使用的热页内存采用大页存储,对于不经常使用的内存使用普通小页面存储,并且在发现某些普通小页面内存频繁受到访问时,通过一定的机制将这些小页面提升为大页面,以加速后续的访问。对于已经被提升为大页面的内存,经过一段时间后,如果发现其不再频繁被访问,则将其拆分为若干小页面,以便释放更多的资源。
本发明的大内存页整合方法一次可以整合分配若干个大内存页面。一次整合分配结束后,可能仍有部分访问热度高,但是没有被整合的小页面存在。此时可能需要经过多次整合分配才能达到比较完善的效果,且由于整个过程中,各内存页面的使用情况(即访问情况)也会改变,因此按照预定周期进行整合,能够根据系统中各内存页面的使用情况动态调整,使系统内存分配情况与内存页面的实际使用情况相匹配,大大提供了系统的内存访问效率,同时还能够保证内存的使用率,避免浪费内存。
缺页频率通过如下方法计算:
按照预设周期定时获取操作系统(即系统)的缺页次数(在运行的时候系统会直接给出),与上一周期获取的缺页次数相减,即得到当前周期内系统内存的缺页频率。
预设周期根据实际应用情况调整,作为优选,本发明中所述预设周期为3~5秒。
作为优选,各个内存页的访问信息包括该内存页在当前周期内被访问的频率、最近一次被访问的时间和被共享的次数。
相应的,所述步骤S1中根据如下公式计算当前内存页的访问热度:
Hot_degreepage=wfrequence*page_usage_frequence+wlast_usage*last_usage_timepage+wshared_times*shared_timespage,其中,Hot_degreepage为当前内存页的访问热度,wfrequence、wlast_usage和wshared_times分别为当前内存页的访问频率权重系数、最后一次访问时间的权重系数和共享次数的权重系数,且wfrequence+wlast_usage+wshared_times=1;
page_usage_frequencepage为当前内存页的使用频率,last_usage_timepage为该内存页的最近一次访问时间,shared_timespage为当前内存页面被共享的次数。作为优选,所述wfrequence的取值为0.4~0.5,所述wlast_usage的取值为0.3~0.4,所述wshared_times的取值为0.1~0.3。进一步优选,wfrequence=0.4,wlast_usage=0.4,wshared_times=0.2。
通过提高访问频率的权重(即wfrequence),可以更好的发现使用频繁的页面。通过提高最后一次访问时间的权重(即wlast_usage),可以更好的发现最近使用比较频繁的页面。通过设置页面共享次数的权重(即wshared_times),可以考虑到多个进程都使用的页面,从而提高整体的运行性能。
本发明中大页内存整合方法实际上为系统内存的整合分配方法,通过对系统内存进行大页拆分和小页合并完成内存整合。首先通过缺页频率的阈值判断是否触发整合,在触发后进一步通过位图的编辑距离阈值判断是否进行最终整合操作(包括大页拆分和小页合并)。
两次阈值判断确定是否进行大页拆分或小页合并,能够减小由于负载波动可能引起的颠簸效应。其中,第一阈值和第二阈值设定直接关系到颠簸效应的消除效果。
作为优选,所述第一阈值为5000~8000次/秒;所述第二阈值为10000~20000。
所述步骤S2中根据如下方法更新系统的位图:
针对每个内存页,若该内存页的访问热度大于第三阈值,则将位图中该内存页对应的比特位置为1,
否则,将位图中该内存页对应的比特位置为0。
位图中的每一位(比特位,即bit)的取值用于表示对应的内存页的访问状态,本发明中,若取值为1,则认为对应的内存页为热页(其对应的内存为热页内存);若取值为0,则认为对应的内存页为冷页。
本发明初始情况下,认为位图中各个位的取值为零(即初始位图中各个位的取值为零),在系统运行过程中,通过内存页的访问热度对位图按位进行更新。
本发明中大页整合仅在缺页频率大于第一阈值时触发,而仅在进行大页整合的周期内才进行位图更新,因此,对于整个运行过程中,并不是每个预设周期都进行位图更新,对于当前周期,更新位图时是在当前周期之前最后一次更新的位图上进行的。若当前周期为第一个周期,则直接在初始位图上进行。
作为优选,所述第三阈值为0.4~0.6。进一步优选,所述第三阈值为0.5。
根据更新后的位图按照如下步骤对所有内存页进行大页拆分或小页合并:
按照大页、小页之间的容量大小关系将位图划分为若干个bit段,并判断各个bit段中是否存在连续m个0:
(a)若存在连续m个0,则判断该bit段对应的内存页是否为大页:
(a1)若为大页,则对该bit段对应的内存页进行大页拆分,然后等待进入下一周期;
(a2)否则,继续判断是否存在连续n个1:
(a21)若存在,则判断该bit段对应的内存页是否为小页:
若是小页,则对该bit段对应的内存页进行小页合并然后等待进入下一周期;
否则,等待进入下一周期;
(a22)否则,等待进入下一周期;
(b)若不存在,则执行步骤(a2),
其中,m为大页容量的1/4~1/3,n为大页容量的1/3~1/2。
作为优选,m为大页容量的1/4,n为大页容量的1/2。
对所有内存页进行拆分或合并实际上通过对更新后的bitmap(即位图)进行两轮遍历完成。第一轮遍历过程中,将该bitmap中0出现的连续长度大于等于m,并且所对应内存为大页面的内存拆分成小内存页面。第二轮遍历过程中,将该bitmap中1出现的连续长度大于或等于n并且对应内存没有分配成大页面(即为小页)的内存合并成一个大页面。
此外,优先进行大页拆分操作,可以使操作系统释放出更多的内存与TLB表项,从而提供给后续可能存在的小页面合并操作提供条件。
本发明中采用现有技术对内存页进行拆分与合并,且每次拆分或合并后均为拆分或合并后的部分重新分配的页表项,并修改对应进程的页表。
作为优选,本发明在整合大内存页面时,直接从操作系统内核层面对页表进行修改,对正在运行的应用程序保持透明,应用程序不会感知,不会破坏应用的原有架构。
对于位图,其中每个位的取值仅仅是一个状态标志,具体取值为0或者1可以能够反过来。若反过来,在统计连续0或1的个数的时,也应该对应反过来。
与现有技术相比,本发明具有如下优点:
及时的发现不再经常被使用的大内存页面,并将其拆分成若干小内存页面,从而提高了内存使用的灵活性;
及时的发现经常被使用的连续小页面,并将其合并成一个大内存页面,从而加快了后续的内存访问速度;
通过对比前后两次bitmap的差异,来决定是否要对页面进行整合操作,从而避免了因系统负载变化较快而造成频繁的页面拆分合并操作,减少了给系统带来的开销;
通过缺页频率的阈值判断是否触发整合,且在触发后进一步通过位图的编辑距离阈值判断是否进行最终整合操作,能够减小由于负载波动可能引起的颠簸效应。
附图说明
图1为本实施例的大内存页整合方法的流程示意图。
具体实施方式
下面将结合附图和具体实施例对本发明进行详细描述。
如图1所示,本实施例的基于内存访问热度的大页内存整合方法,进行如下操作:
按照预设周期定时获取系统内存的缺页频率,并判定是否进行整合:
若缺页频率大于第一阀值(本实施例中第一阀值为6000次/秒),则说明当前系统中内存页的分配不合理,需要进行大页内存整合,并通过如下步骤内存整合进行内存整合(即拆分或合并):
S1:获取系统中各个内存页的访问信息,每个内存页的访问信息包括该内存页在当前周期内被访问的频率、最近一次被访问的时间和被共享的次数,并根据各个内存页的访问信息利用如下公式计算各个内存页的访问热度;
Hot_degreepage=wfrequence*page_usage_frequence+wlast_usage*last_usage_timepage+wshared_times*shared_timespage,其中,Hot_degreepage为当前内存页的访问热度,wfrequence、wlast_usage和wshared_times分别为当前内存页的访问频率权重系数、最后一次访问时间的权重系数和共享次数的权重系数,且wfrequence+wlast_usage+wshared_times=1;
本实施例中优选:wfrequence=0.4,wlast_usage=0.4,wshared_times=0.2。
page_usage_frequencepage为当前内存页的使用频率,last_usage_timepage为该内存页的最近一次访问时间,shared_timespage为当前内存页面被共享的次数。
S2:根据各个内存页的访问热度更新系统的位图:
针对每个内存页,若该内存页的访问热度大于第三阈值(本实施例中第三阈值为0.5),则将位图中该内存页对应的比特位置为1,
否则,将位图中该内存页对应的比特位置为0。
S3:计算更新前后的位图之间的编辑距离,当编辑距离大于第二阈值(本实施例中第二阈值为10000)时根据更新后的位图对所有内存页进行拆分或合并:
首先按照大页、小页之间的容量大小关系将位图划分为若干个bit段,并判断各个bit段中是否存在连续m个0:
(a)若存在连续m个0,则判断该bit段对应的内存页是否为大页:
(a1)若为大页,则对该bit段对应的内存页进行大页拆分,然后等待进入下一周期;
(a2)否则,继续判断是否存在连续n个1:
(a21)若存在,则判断该bit段对应的内存页是否为小页:
若是小页,则对该bit段对应的内存页进行小页合并然后等待进入下一周期;
否则,等待进入下一周期;
(a22)否则,等待进入下一周期;
(b)若不存在,则执行步骤(a2),
其中,m为大页容量的1/4,n为大页容量的1/2。
现有的操作系统中大页的内存容量(即容量)为小页的内存容量的512倍,因此,本实施中m=128,n=256。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于内存访问热度的大页内存整合方法,其特征在于,按照预设周期获取系统内存的缺页频率,当缺页频率大于第一阈值时通过如下步骤进行大页内存整合:
S1:获取该周期内各个内存页的访问信息,并根据各个内存页的访问信息计算各个内存页的访问热度;
S2:根据各个内存页的访问热度更新系统的位图,并计算更新前后的位图之间的编辑距离,当编辑距离大于第二阈值时根据更新后的位图对系统内存进行大页拆分或小页合并;
按照预设周期定时获取操作系统的缺页次数,与上一周期获取的缺页次数相减,得到当前周期内系统内存的缺页频率;
位图中的每一位的取值用于表示对应的内存页的访问状态,若取值为1,则认为对应的内存页为热页;若取值为0,则认为对应的内存页为冷页;
初始情况下,认为位图中各个位的取值为零,在系统运行过程中,通过内存页的访问热度对位图按位进行更新。
2.如权利要求1所述的基于内存访问热度的大页内存整合方法,其特征在于,各个内存页的访问信息包括该内存页在当前周期内被访问的频率、最近一次被访问的时间和被共享的次数。
3.如权利要求2所述的基于内存访问热度的大页内存整合方法,其特征在于,所述步骤S1中根据如下公式计算当前内存页的访问热度:
Hot_degreepage=wfrequence*page_usage_frequencepage+wlast_usage*last_usage_timepage+wshared_times*shared_timespage,
其中,Hot_degreepage为当前内存页的访问热度,wfrequence、wlast_usage和wshared_times分别为当前内存页的访问频率权重系数、最近一次访问时间的权重系数和共享次数的权重系数,且wfrequence+wlast_usage+wshared_times=1;
page_usage_frequencepage为当前内存页的使用频率,last_usage_timepage为该内存页的最近一次访问时间,shared_timespage为当前内存页面被共享的次数。
4.如权利要求3所述的基于内存访问热度的大页内存整合方法,其特征在于,所述wfrequence的取值为0.4~0.5,所述wlast_usage的取值为0.3~0.4,所述wshared_times的取值为0.1~0.3。
5.如权利要求1~4中任意一项所述的基于内存访问热度的大页内存整合方法,其特征在于,所述第一阈值为5000~8000次/秒。
6.如权利要求1~4中任意一项所述的基于内存访问热度的大页内存整合方法,其特征在于,所述第二阈值为10000~20000。
7.如权利要求1~4中任意一项所述的基于内存访问热度的大页内存整合方法,其特征在于,所述步骤S2中根据如下方法更新系统的位图:
针对每个内存页,若该内存页的访问热度大于第三阈值,则将位图中该内存页对应的比特位置为1;否则,将位图中该内存页对应的比特位置为0。
8.如权利要求7所述的基于内存访问热度的大页内存整合方法,其特征在于,所述第三阈值为0.4~0.6。
9.如权利要求8所述的基于内存访问热度的大页内存整合方法,其特征在于,根据更新后的位图按照如下步骤对所有内存页进行大页拆分或小页合并:
按照大页、小页之间的容量大小关系将位图划分为若干个bit段,并判断各个bit段中是否存在连续m个0:
(a)若存在连续m个0,则判断该bit段对应的内存页是否为大页:
(a1)若为大页,则对该bit段对应的内存页进行大页拆分,然后等待进入下一周期;
(a2)否则,继续判断是否存在连续n个1:
(a21)若存在,则判断该bit段对应的内存页是否为小页:
若是小页,则对该bit段对应的内存页进行小页合并然后等待进入下一周期;
否则,等待进入下一周期;
(a22)否则,等待进入下一周期;
(b)若不存在,则执行步骤(a2),
其中,m为大页容量的1/4~1/3,n为大页容量的1/3~1/2。
10.如权利要求9所述的基于内存访问热度的大页内存整合方法,其特征在于,m为大页容量的1/4,n为大页容量的1/2。
CN201510431307.1A 2015-07-21 2015-07-21 一种基于内存访问热度的大内存页整合方法 Active CN105022696B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510431307.1A CN105022696B (zh) 2015-07-21 2015-07-21 一种基于内存访问热度的大内存页整合方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510431307.1A CN105022696B (zh) 2015-07-21 2015-07-21 一种基于内存访问热度的大内存页整合方法

Publications (2)

Publication Number Publication Date
CN105022696A CN105022696A (zh) 2015-11-04
CN105022696B true CN105022696B (zh) 2017-12-29

Family

ID=54412684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510431307.1A Active CN105022696B (zh) 2015-07-21 2015-07-21 一种基于内存访问热度的大内存页整合方法

Country Status (1)

Country Link
CN (1) CN105022696B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682005A (zh) * 2015-11-05 2017-05-17 华为技术有限公司 一种确定数据库热页面的方法及装置
CN111512290B (zh) * 2017-12-27 2023-09-22 华为技术有限公司 文件页表管理技术
CN109062823A (zh) * 2018-07-16 2018-12-21 北京中科网威信息技术有限公司 使用大页内存提升基于申威架构的设备性能的方法及装置
CN110321079B (zh) * 2019-06-27 2023-04-25 暨南大学 一种基于混合页面的磁盘缓存去重方法
CN110532200B (zh) * 2019-08-26 2023-08-01 北京大学深圳研究生院 一种基于混合内存架构的内存系统
CN112905497B (zh) * 2021-02-20 2022-04-22 迈普通信技术股份有限公司 内存管理方法、装置、电子设备及存储介质
CN113434371B (zh) * 2021-08-26 2022-01-25 阿里云计算有限公司 内存访问信息的采集方法、计算设备及存储介质
CN113641464A (zh) * 2021-10-15 2021-11-12 云宏信息科技股份有限公司 Xen平台的内存配置方法、系统及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103502925A (zh) * 2012-12-21 2014-01-08 华为技术有限公司 一种监控记录管理方法与装置
CN103885815A (zh) * 2014-03-24 2014-06-25 北京大学 一种基于热页迁移的虚拟机动态缓存方法
CN104216784A (zh) * 2014-08-25 2014-12-17 杭州华为数字技术有限公司 热点均衡控制方法及相关装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101992934B1 (ko) * 2012-11-14 2019-06-26 삼성전자주식회사 메모리 시스템 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103502925A (zh) * 2012-12-21 2014-01-08 华为技术有限公司 一种监控记录管理方法与装置
CN103885815A (zh) * 2014-03-24 2014-06-25 北京大学 一种基于热页迁移的虚拟机动态缓存方法
CN104216784A (zh) * 2014-08-25 2014-12-17 杭州华为数字技术有限公司 热点均衡控制方法及相关装置

Also Published As

Publication number Publication date
CN105022696A (zh) 2015-11-04

Similar Documents

Publication Publication Date Title
CN105095099B (zh) 一种基于内存页位图变更的大内存页整合方法
CN105022696B (zh) 一种基于内存访问热度的大内存页整合方法
CN103885728B (zh) 一种基于固态盘的磁盘缓存系统
US7822926B2 (en) Cache memory
Zhou et al. Buffering accesses to memory-resident index structures
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
JP7340326B2 (ja) メンテナンス動作の実行
US20060155932A1 (en) Method and apparatus for an efficient multi-path trace cache design
US8335908B2 (en) Data processing apparatus for storing address translations
JP6478843B2 (ja) 半導体装置及びキャッシュメモリ制御方法
US20110289257A1 (en) Method and apparatus for accessing cache memory
CN107451071A (zh) 一种缓存置换方法及系统
CN104102586A (zh) 一种地址映射处理的方法、装置
CN104951403B (zh) 一种低开销且无差错的冷热数据识别方法
US20030018855A1 (en) Method and apparatus for caching with variable size locking regions
CN102160041A (zh) 缓冲存储器装置、存储器系统以及数据读出方法
CN109983538B (zh) 存储地址转换
US8700859B2 (en) Transfer request block cache system and method
US20020087824A1 (en) System and method for employing a process identifier to minimize aliasing in a linear-addressed cache
US20200293455A1 (en) Cache address mapping method and related device
CN108173974A (zh) 一种基于分布式缓存Memcached的HC Model内部缓存数据淘汰方法
US9507729B2 (en) Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
CN108021674A (zh) 一种同步云端仿真数据的多级缓存传输加速系统
CN103281358A (zh) 一种基于一致性hash算法存储资源的方法
WO2021008552A1 (zh) 数据读取方法和装置、计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant