[发明专利]一种提高操作系统大页使用率的方法有效

专利信息
申请号: 201410146873.3 申请日: 2014-04-14
公开(公告)号: CN103984599B 公开(公告)日: 2017-05-17
发明(设计)人: 汪小林;罗韬威;罗英伟 申请(专利权)人: 北京大学
主分类号: G06F9/50 分类号: G06F9/50
代理公司: 北京君尚知识产权代理事务所(普通合伙)11200 代理人: 余长江
地址: 100871 北*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 提高 操作系统 使用率 方法
【说明书】:

技术领域

发明涉及一种提高操作系统大页使用率的方法,属于操作系统内存管理技术领域。

技术背景

分页机制是现代CPU所共有的特征。它建立了一个从程序的虚拟内存空间到机器的物理内存之间的映射。内存以页为单位进行管理。包括Intel x86在内的很多CPU体系结构实现了一种大页机制,支持4k,2M,4M等多种不同大小的物理页粒度。

目前的操作系统(例如Linux)为了简单起见,普遍使用4K大小的页,这种做法使得每一个映射覆盖的虚拟地址的范围只有4K。如果需要访问一段长度为2M的内存,操作系统需要处理512次缺页中断,每次缺页中断分配4K内存。

以Linux操作系统为例,Linux自2.6.38开始支持透明大页。使得操作系统能建立大小为2M(使用32位操作系统时为4M)的虚拟地址到物理地址映射,称之为大页映射(简称大页)。使用大页能够减少TLB失效和CPU寻址时发生的计算和Cache开销。该机制包含了几个功能,例如物理页碎片的整理,用以保证有足够的大页对齐的物理内存供使用。在发生缺页中断(page fault)时进行判断,如果条件允许则使用大页建立映射。一套针对大页的内存操作工具,提供了写时复制等基本内存操作。

该大页模块主要针对程序中的私有匿名内存进行优化(一个程序使用的内存绝大部分是以私用匿名的方式使用的。而且大页并不适合在其他环境下使用。共享内存使用大页会增加写时复制的开销,映射到文件的内存使用大页会增加缓存的负担)。大页的优化不是强制的,而是采用“如果满足条件,那么使用大页”的逻辑。用“大页使用率”来衡量Linux大页模块的使用程度。它等于:一个进程的私有匿名内存中,以大页形式分配的内存数,除以程序总的私有匿名内存使用量。

操作系统对内存的分配是以page fault驱动的。每个进程有自己的地址空间(在Linux系统中对应mm_struct结构),一个地址空间维护进程的虚拟地址以及虚拟地址到物理地址的映射。一个进程刚建立或者申请内存的时候,进程会调用函数申请一些虚拟内存。这时候操作系统并不会立刻分配物理内存,而是建立一个virtual memory area(以下简称vma),表示说,这段虚拟地址已经被使用了。每一个mm_struct包含若干个vma,而每一个vma必定属于某一个mm_struct。等到进程实际读写这段虚拟地址的时候,因为没有分配内存,一定会发生page fault。操作系统根据发生page fault的地址通过mm_struct定位到对应的vma,根据发生page fault的原因和vma的属性决定如何处理page fault。例如如果访问到的虚拟地址不在任何vma里面,或者访问的区域不是可读的,那么就是访问了非法的地址,返回segment fault,并杀死进程。如果写操作访问了一个vma标明可写,但是页表上标记不可写的地址时,那么是写了写时复制的页面,操作系统会将页面拷贝一份并重新设为可写页面。如果访问的位置在vma内,但是没有建立虚拟地址到物理地址的映射,那说明还没有分配内存,此时根据vma的类型,分配物理内存,建立映射。

建立内存映射时会根据vma的情况决定是否使用大页,一般来说,如果访问地址上下2M对齐构成的一段2M虚拟空间被所在vma包含,而且这段2M虚拟地址空间里面没有建立过映射(二级页表为空),那么Linux内核会为这段虚拟地址分配大页。如果上层申请内存的时候没有考虑大页对齐的需求,申请的vma经常不会2M对齐,这样就无法使用大页。

由于大页分页机制的固有限制,要求所有的物理地址和虚拟地址必须是对齐的。如果64位操作系统使用2M的页进行映射,那么虚拟地址的首尾必须2M对齐,物理地址的首尾也需要2M对齐。对于32位操作系统,则在物理地址和虚拟地址4M对齐的情况下才能使用大页。物理页的管理是操作系统自己维护的,在透明大页的实现中已经具有了碎片整理功能,可以保证有足够大页对齐的物理页用于建立大页映射。虚拟地址一般是用户申请的,不会考虑到底层是否有透明大页的支持,因此虚拟地址申请时往往不是大页对齐的。例如现在Linux透明大页就存在这个问题。应用程序虚拟地址的申请在很多情况下不满足大页对齐的要求,这使得Linux内核不会分配大页,转而使用小页。这种做法使得很多情况下,Linux内核不会给程序分配大页,大页使用率不高。

发明内容

针对现有技术中存在的技术问题,本发明的目的在于提供一种提高操作系统大页使用率的方法,可有效的提升大页的使用率,进而提升了程序的性能。

本发明的技术方案为:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410146873.3/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top