背景
我已经在主线上挖掘了几个星期,试图弄清楚内核如何(以及在什么条件下)将自动合并(例如)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。
答案 0 :(得分:0)
您可能希望查看khugepaged
守护程序,该守护程序在Linux内核中执行hugePages的拆分和合并。但是,这个功能基本上是THP的支持系统。