首页 > 设计 > > 正文

全球最新:图解|透明大页原理与实现

时间:2022-12-30 23:42:40 来源:

在《图解|Linux大内存页原理》一文中,我们介绍过标准大页的原理与其优点,现在我们回顾一下标准大页有哪些优点:


(相关资料图)

减少转译后备缓冲区(Translation Lookaside Buffer,TLB)的失效情况,TLB 是 CPU 为了加速虚拟内存地址转换成物理内存地址而增加的缓冲区。减少页表的内存消耗。减少缺页异常(page fault)发生的次数,缺页异常处理例程需要对虚拟内存地址进行映射,而这个映射过程也是一个耗时的过程。

可以看出,使用大页能够加速系统的运行效率。

但是标准大页使用起来比较麻烦,需要挂载 Hugetlb 文件系统,并且需要使用 mmap 系统调用来对大页进行映射。为了解决标准大页使用麻烦的问题,红帽子(Red Hat)公司开发出透明大页(Transparent Huge Pages,THP)功能。

要使用透明大页功能,只需要使用以下命令开启即可:

echoalways>/sys/kernel/mm/transparent_hugepage/enabled

开启了透明大页功能后,内核将会创建一个名为khugepaged的内核线程。

khugepaged内核线程会不断扫描进程的虚拟内存空间(vma,virtual memory area),如果发现存在 2MB 地址连续的虚拟地址空间,那么判断其是否满足转换成大页的条件,如果满足则将这些物理内存合并成一个大页。如下图所示:

相对于使用繁琐的标准大页,透明大页显得更加友好。

透明大页原理

操作系统管理内存时,是以页作为单位的,常用的页大小有4KB、2MB和1GB。4KB 的内存页被称为普通内存页,而 2MB 和 1GB 的内存页被称为大页。

通常来说,4KB 的内存页使用频率最多,但有时候为了减少缺页异常发生的次数(提升程序的性能),所以会使用 2MB 或者 1GB 的内存页来代替 4KB 的内存页。

透明大页核心思想

透明大页的核心思想很简单:不断扫描进程的虚拟内存区间(vma),如果发现大小超过 2MB 的内存区间,将会判断其是否满足转换成大页的条件,如果满足则将这些物理内存合并成一个大页。

我们知道每个进程都有一个 mm_struct 结构,用来管理进程的虚拟内存空间和映射物理地址的页表等信息,而虚拟内存的区间是通过 vm_area_struct 结构(vma)来管理的。

透明大页的核心逻辑步骤:

查找满足转换成大页的内存区间

khugepaged内核线程会扫描进程的虚拟内存空间,如果发现内存区间大于等于 2MB,并且满足转换成大页的条件,那么将会进入下面的步骤。

x 广告
5月11日15时至12日15时,北京新增本土新冠肺炎病毒感染者36例

  中新网北京5月12日电(记者 杜燕)北京市疾病预防控制中心副主任、全国新型冠状病毒肺炎专家组成员庞星火在12日召开的北京市新冠肺炎疫

通讯:范长江侄女范家敏:“伯伯为全家带来新闻力量”

  中新网巴彦淖尔5月12日电 题:范长江侄女范家敏:“伯伯为全家带来新闻力量”  中新网记者 李爱平  50岁的范家敏人生中的“骄傲

四川广安新增无症状感染者25例 2000余名医务人员支援邻水

  (抗击新冠肺炎)四川广安新增无症状感染者25例 2000余名医务人员支援邻水  中新网成都5月12日电(王爵 王林)12日上午,四川广安市召

国际护士节拳拳之心战疫情:小桌子,大责任

  中新网西宁5月12日电 题:国际护士节拳拳之心战疫情:小桌子,大责任  中新网记者 张添福  5月8日,是母亲节。在青海,恰是很多

京杭大运河全线通水 入河北省南运河水量近1.5亿立方米

  中新社石家庄5月12日电 (李晓伟 任树春 吕培)据河北省水利厅12日消息,4月28日,京杭大运河实现近一个世纪以来首次全线通水,截至5

广东暴雨天气将持续 需继续做好防御

  中新网广州5月12日电 (记者 王坚)广东省气象局12日发布消息称,10日到12日早晨,该省大部分市县先后出现了暴雨到大暴雨局地特大暴雨

x 广告

Copyright   2015-2022 北方评测网版权所有   备案号:京ICP备2021034106号-50   联系邮箱: 55 16 53 8@qq.com