[发明专利]一种基于Linux大页内存的易扩展页面架构有效
申请号: | 201710144381.4 | 申请日: | 2017-03-10 |
公开(公告)号: | CN106970882B | 公开(公告)日: | 2020-04-14 |
发明(设计)人: | 陈文智;王总辉;王金昱;李国玺 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F12/123 | 分类号: | G06F12/123;G06F12/128 |
代理公司: | 杭州天勤知识产权代理有限公司 33224 | 代理人: | 蒋琼 |
地址: | 310013 浙江*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux 内存 扩展 页面 架构 | ||
本发明公开了一种基于Linux大页内存的易扩展页面架构,包括:大页内存及调用大页内存的接口函数,所述的大页内存分为多个节点,每个节点分为多个分区,每个分区由以双向链表的形式连接在一起的多个2M大页组成,所述的接口函数包括用于获取单个大页的申请函数、用于释放大页的释放函数、用于将大页占为己有且禁止其他进程访问的锁函数以及用于恢复大页自由的解锁函数。该架构不再与小页文件系统共用伙伴系统,被单独管理,且能够与Linux内核进行解耦,提升内存存储调用的独立性。
技术领域
本发明属于通信技术领域,具体涉及一种基于Linux大页内存的易扩展页面架构。
背景技术
内存管理是Linux内核中最重要的一部分。内存采用“分页机制”,用于支持对大地址空间的快速、高效的管理。虽然原则上内存页面大小是可配置的,但Linux内核中采用默认的4KB(4096字节)页面,即小页。当Linux操作系统上运行内存需求量较大的应用程序时,由于其采用的默认页面大小为4KB,因而会产生较多TLB Miss和缺页中断,从而大大影响应用程序的性能,因此,Linux内核中也引入大页面支持。当操作系统以2MB甚至更大作为分页的单位时,这大大减少TLB Miss和缺页中断的数量,显著提高应用程序的性能。
为了能以最小的代价实现大页面支持,Linux操作系统采用了基于hugetlbfs特殊文件系统2M字节大页面支持。这种采用特殊文件系统形式支持大页面的方式,使得应用程序可以根据需要灵活地选择虚存页面大小。但是,从本质上讲hugetlbfs的实现方式仅仅是一个通过“打补丁”的手段来支持灵活的内存页面大小,受限于Linux内核。大页文件系统与小页仍共用伙伴系统,这使得在大页上的开发设计时,难免会影响到小页,不利于进一步的开发和扩展。
发明内容
鉴于上述,本发明提供了一种基于Linux大页内存的易扩展页面架构,该架构不再与小页文件系统共用伙伴系统,被单独管理,且能够与Linux内核进行解耦,提升内存存储调用的独立性。
一种基于Linux大页内存的易扩展页面架构,包括:大页内存及调用大页内存的接口函数,所述的大页内存分为多个节点,每个节点分为多个分区,每个分区由以双向链表的形式连接在一起的多个2M大页组成,所述的接口函数包括用于获取单个大页的申请函数、用于释放大页的释放函数、用于将大页占为己有且禁止其他进程访问的锁函数以及用于恢复大页自由的解锁函数。
所述的每个大页包含以下几个条目:
Flags:用于标记页面的属性,且其中包含如下标志位:
PG_locked,当页被一个进程访问时,该位置1,其他进程等待;
PG_dirty,当页中的内容被修改后,该位置1,表示数据要写回;
PG_private,该位为1表示页不能被共享,为0可以被共享;
PG_referenced,PG_active,两个标志位共同来记录一个页的访问活跃程度,用在冷热页调度中,两个位都为1时进入热页池,都为0时进入冷页池,其他情况不移动;
Mapping:用来指引正在映射的索引节点inode;
Index:表示在映射表中的偏移;
Lru:用于每个分区的大页双向链表构建,大页链表顺序按照最近最少使用算法,故叫做lru,这里lru指向前大页的lrui-1和后大页的lrui+1;
Mapcount:用于记录页共享者的个数。
所述的申请函数实现从大页内存中获取单个大页,具体过程为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710144381.4/2.html,转载请声明来源钻瓜专利网。