Linux内核会在x86_64上自动将页面合并到2M吗?

时间:2014-08-15 16:46:21

标签: linux kernel mmu

背景

我已经在主线上挖掘了几个星期,试图弄清楚内核如何(以及在​​什么条件下)将自动合并(例如)512个4k PTE到一个2M PMD条目中 - 分开从预先安排hugetlbfs或THP - 所以,纯粹是因为x86_64。

我以前认为内核中的TLB / MMU / Paging子系统会检测到这一点而且只做正确的事情,但事实并非如此,按照我所看到的情况进行当我使用大型.text段模块(> 5MB)运行测试时,debugfs的kernel_page_tables。

问题

1)如果内核确实自动将页面合并到x86_64架构上的大页面中,那么需要为此设置什么条件?

2)如果内核没有自动执行此操作,如何手动获取512个4k PTE,并将它们合并/转换为PMD?

我只需要一个提示;虽然我会喜欢独自完成这项工作,但现在已经过了几个星期而且不顾一切地放弃了我的头脑。

非常感谢

SC。

1 个答案:

答案 0 :(得分:0)

您可能希望查看khugepaged守护程序,该守护程序在Linux内核中执行hugePages的拆分和合并。但是,这个功能基本上是THP的支持系统。