CN106970826A - 一种基于大页的缺页异常解决方法 - Google Patents
一种基于大页的缺页异常解决方法 Download PDFInfo
- Publication number
- CN106970826A CN106970826A CN201710142580.1A CN201710142580A CN106970826A CN 106970826 A CN106970826 A CN 106970826A CN 201710142580 A CN201710142580 A CN 201710142580A CN 106970826 A CN106970826 A CN 106970826A
- Authority
- CN
- China
- Prior art keywords
- page
- big
- big page
- new
- return value
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于大页的缺页异常解决方法,具体为:(1)判断大页是否存在于页缓存中,若是,读取该大页,设置其描述符,若否,执行步骤(2);(2)系统向2M大页管理系统申请一个新大页pn,并初始化设置新大页的页描述符,且设置新大页的内容为0;(3)调用解压缩接口,根据其返回值判断大页是否被压缩过,若返回值为0,大页进行解压缩,将解压缩内容写入新大页中,设置大页p对应的页描述符,并执行(5);若返回值为M2RAM_NO_DATA,执行(5);若返回值既非0也非M2RAM_NO_DATA,解压缩过程出错,返回错误至上层接口;(5)系统设置大页p的页表项。该方法解决了大页的缺页异常问题。
Description
技术领域
本发明属于通信技术领域,具体涉及一种基于大页的缺页异常解决方法。
背景技术
在当今的电信云环境下,为了提高物理资源的使用效率,单台物理服务器上整合了几十甚至上百个虚拟机来承载电信业务。用户把大量虚拟机整合到少数的物理机上,这样可以更高效的使用物理资源。整合比(consolidation ratio)作为衡量一台物理机运行的虚拟机数据的一种标准,其数值高低代表了平台的效率。高的整合比代表了低成本高效率。而复用技术(overcommitment)是提高整合比的关键技术,其中分为内存复用和CPU复用技术。
所谓内存复用(memory overcommitment)就是一种有效提高整合比的综合技术。其定义如下:允许用户开启的虚拟机的总的配置内存大于实际运行的物理机内存的一种技术。
内存复用在通用操作系统中最典型的体现就是虚拟内存。所有运行的应用的映射的虚拟内存往往超过实际物理内存。如果所有正在运行的应用的工作集超过了物理内存,那么OS可以通过swap回收内存,从而腾出空间。
如今,随着技术的发展,我们的计算机的内存变得越来越大,传统的内存管理将内存以4K的粒度来进行划分也变得越来越低效。
现有的典型的内存复用技术,主要有以下几种:内存压缩、内存去重、ballooning技术、transcendent memory技术以及swap技术等。
内存去重(memory dedulplication)就是把内存中的重复内容消除以提高内存利用率的技术。由于现代计算机的内存是分页管理的,所以内存去重技术往往指的就是页共享(page sharing)技术。它通过共享相同内容的物理内存页从而降低物理内存消耗。内存去重是去掉重复的物理内存,以节省物理内存。
Ballooning技术和transcendent memory技术是基于虚拟化平台上的内存复用技术。简而言之,就是通过监测虚拟化平台上各个虚拟机的实际内存使用情况,来对各个虚拟机的内存进行管理,即将实际使用内存少于分配的内存的虚拟机内存进行回收,来供给其余用途。
内存压缩则比较好理解:由于现今计算机的CPU利用率比较空闲,因此,通过使CPU变得“忙碌”起来,将内存中的一些“冷页”进行压缩然后重新存放到内存中,从而来使我们有更多的可用内存。
在现有内核中,已经有了基于伙伴系统实现大页(hugetlb)的整套机制,包括缺页异常的实现,但是该机制对系统所产生的开销比较大(一个2M大页需要分配512个4K的小页),同时由于对物理内存的连续性要求,在系统运行较长一段时间后,基于该机制的大页分配会经常失败。
内存压缩可以有效的提高内存有效容量,降低页故障率,同时不会有大容量内存的使用带来的能耗和空间消耗。同时可以提高内存带宽使用率。但是压缩和解压缩会带来延迟,如果处理不当可能把压缩带来的好处抵消掉。因此有效使用压缩技术需要谨慎选择实现框架、压缩算法等等。
发明内容
鉴于上述,本发明提供了一种基于大页的缺页异常解决方法,该实现方法能够有效地解决由于新产生大页不在内存中所产生的缺页异常以及该页被压缩后再次被访问所产生的压缩缺页异常问题。
一种基于大页的缺页异常解决方法,包括以下步骤:
(1)系统根据新产生的页故障,判断大页p是否存在于页缓存中,若是,读取该大页p,设置该页p对应的页描述符,并执行步骤(5),若否,执行步骤(2);
(2)系统向2M大页管理系统申请一个新大页pn;
(3)系统初始化设置新大页pn对应的页描述符,并将该新大页pn的内容设置为0;
(4)系统调用解压缩接口,并根据该接口调用的返回值判断大页p是否被压缩过,
若返回值为0,则大页p已被压缩,利用解压缩接口对大页p进行解压缩,将解压缩得到的内容写入新大页pn中,并设置新大页pn对应的页描述符,并执行步骤(5);
若返回值为M2RAM_NO_DATA,大页p没有被压缩,保持新大页pn的页描述符不变,并执行步骤(5);
若返回值既非0也非M2RAM_NO_DATA,解压缩过程出错,返回错误至上层接口;
(5)系统设置大页p或新大页pn的页表项。
所述的2M大页管理系统包括:大页内存及调用大页内存的接口函数,其中,大页内存分为多个节点,每个节点分为多个分区,每个分区由以双向链表的形式连接在一起的多个2M大页组成;接口函数包括用于获取单个大页的申请函数、用于释放大页的释放函数、用于将大页占为己有且禁止其他进程访问的锁函数以及用于恢复大页自由的解锁函数。
本发明提供了一种基于大页的缺页异常的处理方法,在相同的物理硬件设施的情况下,该方法结合压缩模块与2M大页管理系统能够增大可用物理内存。不仅在成本开销上,有很大的节省,同时通过大页的支持,能够很明显地降低TLB的miss率,这对性能的提升有着很大的帮助。
附图说明
图1是实施例基于大页的缺页异常处理方法的流程图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
正常的linux系统中,当页错误产生时,判断页错误是否为大页错误,若否,系统对该页执行小页错误相应处理流程,若是,系统对该页执行大页错误相应处理流程,此处大页进入的是linux系统中原有的基于伙伴系统来进行分配的大页缺页调用。
本发明借用现有的hugetlbfs架构,将原有的基于伙伴系统的大页故障处理流程替换为基于2M大页管理系统的大页故障处理流程,具体是通过定义一个宏来使后续流程进行2M大页管理系统的大页框架缺页处理流程,该大页框架缺页异常处理流程如图1所示,具体为:
S01,系统产生类型为新页的页故障;
S02,系统判断大页p是否存在于页缓存page cache中,若是,从page cache中读取该大页p,并设置该页p对应的页描述符,并执行S05,若否,执行S02;
S02,系统向2M大页管理系统申请一个新大页pn;
S03,系统初始化设置新大页pn对应的页描述符,并将该新大页pn的内容设置为0;
S04,系统调用解压缩接口,并根据该接口的返回值判断大页p是否被压缩过,
若返回值为0,则大页p已被压缩,利用解压缩接口对大页p进行解压缩,将解压缩得到的内容写入新大页pn中,并设置新大页pn对应的页描述符,并执行S05;
若返回值为M2RAM_NO_DATA,大页p没有被压缩,保持新大页pn的页描述符不变,执行S05;
若返回值既非0也非M2RAM_NO_DATA,解压缩过程出错,返回错误至上层接口;
S05,系统设置大页p或新大页pn的页表项。
本实施例中的2M大页管理系统是大页内存及调用大页内存的接口函数,其中,大页内存分为多个节点,每个节点分为多个分区,每个分区由以双向链表的形式连接在一起的多个2M大页组成,接口函数包括用于获取单个大页的申请函数、用于释放大页的释放函数、用于将大页占为己有且禁止其他进程访问的锁函数以及用于恢复大页自由的解锁函数。
利用本实施例的方法,可以有效地解决由于新产生大页不在内存中所产生的缺页异常以及该页被压缩后再次被访问所产生的压缩缺页异常问题。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于大页的缺页异常解决方法,包括以下步骤:
(1)系统根据新产生的页故障,判断大页p是否存在于页缓存中,若是,读取该大页p,设置该页p对应的页描述符,并执行步骤(5),若否,执行步骤(2);
(2)系统向2M大页管理系统申请一个新大页pn;
(3)系统初始化设置新大页pn对应的页描述符,并将该新大页pn的内容设置为0;
(4)系统调用解压缩接口,并根据该接口调用的返回值判断大页p是否被压缩过,
若返回值为0,则大页p已被压缩,利用解压缩接口对大页p进行解压缩,将解压缩得到的内容写入新大页pn中,并设置新大页pn对应的页描述符,并执行步骤(5);
若返回值为M2RAM_NO_DATA,大页p没有被压缩,保持新大页pn的页描述符不变,并执行步骤(5);
若返回值既非0也非M2RAM_NO_DATA,解压缩过程出错,返回错误至上层接口;
(5)系统设置大页p或新大页pn的页表项。
2.根据权利要求1所述的基于大页的缺页异常解决方法,其特征在于,所述2M大页管理系统包括:大页内存及调用大页内存的接口函数,其中,大页内存分为多个节点,每个节点分为多个分区,每个分区由以双向链表的形式连接在一起的多个2M大页组成;接口函数包括用于获取单个大页的申请函数、用于释放大页的释放函数、用于将大页占为己有且禁止其他进程访问的锁函数以及用于恢复大页自由的解锁函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710142580.1A CN106970826B (zh) | 2017-03-10 | 2017-03-10 | 一种基于大页的缺页异常解决方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710142580.1A CN106970826B (zh) | 2017-03-10 | 2017-03-10 | 一种基于大页的缺页异常解决方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106970826A true CN106970826A (zh) | 2017-07-21 |
CN106970826B CN106970826B (zh) | 2020-05-08 |
Family
ID=59328898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710142580.1A Active CN106970826B (zh) | 2017-03-10 | 2017-03-10 | 一种基于大页的缺页异常解决方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106970826B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664419A (zh) * | 2018-04-03 | 2018-10-16 | 郑州云海信息技术有限公司 | 一种确定内存大页数目的方法及其装置 |
CN110532042A (zh) * | 2019-09-02 | 2019-12-03 | 武汉中海庭数据技术有限公司 | 基于Linux系统的在线地图引擎性能优化方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049388A (zh) * | 2012-12-06 | 2013-04-17 | 深圳市江波龙电子有限公司 | 一种分页存储器件的压缩管理方法及装置 |
CN103488523A (zh) * | 2013-09-26 | 2014-01-01 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
US9086981B1 (en) * | 2010-11-02 | 2015-07-21 | Vmware, Inc. | Exporting guest spatial locality to hypervisors |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux系统下内存管理方法 |
-
2017
- 2017-03-10 CN CN201710142580.1A patent/CN106970826B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9086981B1 (en) * | 2010-11-02 | 2015-07-21 | Vmware, Inc. | Exporting guest spatial locality to hypervisors |
CN103049388A (zh) * | 2012-12-06 | 2013-04-17 | 深圳市江波龙电子有限公司 | 一种分页存储器件的压缩管理方法及装置 |
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN103488523A (zh) * | 2013-09-26 | 2014-01-01 | 华为技术有限公司 | 一种页的访问方法和页的访问装置、服务器 |
CN105893269A (zh) * | 2016-03-31 | 2016-08-24 | 武汉虹信技术服务有限责任公司 | 一种Linux系统下内存管理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108664419A (zh) * | 2018-04-03 | 2018-10-16 | 郑州云海信息技术有限公司 | 一种确定内存大页数目的方法及其装置 |
CN110532042A (zh) * | 2019-09-02 | 2019-12-03 | 武汉中海庭数据技术有限公司 | 基于Linux系统的在线地图引擎性能优化方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106970826B (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096336B (zh) | 数据监控方法、装置、设备和介质 | |
CN106970881B (zh) | 一基于大页的冷热页追踪及压缩回收方法 | |
EP3514689A1 (en) | Memory management method and apparatus | |
CN111124277B (zh) | 一种深度学习数据集缓存方法、系统、终端及存储介质 | |
Rönngren et al. | Transparent incremental state saving in Time Warp parallel discrete event simulation | |
CN104734915B (zh) | 一种复合多进程多线程的多网络并发动态仿真方法 | |
CN108182213A (zh) | 一种基于分布式系统的数据处理优化装置及方法 | |
CN104486445A (zh) | 一种基于云平台的分布式可扩展资源监控系统及方法 | |
CN108183947A (zh) | 分布式缓存方法及系统 | |
EP4030289A1 (en) | Method and device for virtual machine memory management | |
CN103353860B (zh) | 内存管理方法及装置 | |
CN105512129A (zh) | 一种海量数据检索方法及装置、海量数据存储方法及系统 | |
CN108628663B (zh) | 一种支持新型大页框架的kvm系统 | |
CN111176584A (zh) | 一种基于混合内存的数据处理方法及装置 | |
CN106970826A (zh) | 一种基于大页的缺页异常解决方法 | |
CN111045802B (zh) | Redis集群组件调度系统及方法、平台设备 | |
Pujol et al. | Scaling online social networks without pains | |
CN110096339B (zh) | 一种基于系统负载实现的扩缩容配置推荐系统及方法 | |
CN105022593A (zh) | 一种基于数据压缩和数据去冗协同的存储优化方法 | |
CN106201839A (zh) | 一种业务对象的信息加载方法和装置 | |
CN104951370B (zh) | 一种内存管理方法及装置 | |
CN101739346B (zh) | 对安全控制模块内存进行集中控制的方法 | |
CN116107925B (zh) | 数据存储单元处理方法 | |
CN112286930A (zh) | redis业务方资源共享的方法、装置、存储介质及电子设备 | |
CN110955496A (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 |