2

的背景

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

我之前假设内核中的 TLB/MMU/Paging 子系统会检测到这一点并只是做正确的事情,但这似乎并非如此,当我运行时我在 debugfs 的 kernel_page_tables 中看到带有大型 .text 部分模块 (> 5MB) 的测试。

问题

1) 如果内核确实在 x86_64 架构上自动将页面合并为一个大页面,那么需要设置什么条件才能发生这种情况?

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

我只需要一个提示;虽然我很想自己解决这一切,但现在已经有几个星期了,我不顾一切地挠头。

非常感谢

sc。

4

1 回答 1

0

你可能想看看khugepaged守护进程,它在 Linux Kernel 中拆分和合并hugePages。但是,此功能基本上是 THP 的支持系统。

于 2015-11-20T06:43:27.727 回答