【问题标题】:Does Linux support 2MB pages at compile time?Linux 在编译时是否支持 2MB 页面?
【发布时间】:2018-09-20 17:43:38
【问题描述】:

我知道这些天来的处理器,其中一些支持 2MB 和 1GB 页面大小。是否可以将 Linux 内核编译为原生支持 2MB 而不是标准的 4Kb 页面?

谢谢。

【问题讨论】:

  • 您的意思是始终使用 2MB 页面而不是 4KB 页面进行所有分配?
  • 是的,不仅仅是“内存分配”......我的意思是一切......操作系统为自己和其他一切使用 2MB 页面。
  • 目标架构是x86?因为我不知道任何其他支持 2MB 页面的架构。
  • 是的。没错。
  • 默认页面大小由PAGE_SIZE 定义的宏linux/arch/x86/include/asm/page_types.h 指定。我不确定你是否可以轻松地修改它而不破坏东西。

标签: linux linux-kernel operating-system kernel page-tables


【解决方案1】:

嗯,我可以说是也不是。

页面大小是固定的。但这取决于您对将遇到的错误和问题的耐心。

page 的大小是已知的并由MMU 硬件决定,因此操作系统会考虑到这一点。但是,请注意某些 Linux 系统(和硬件!)有 hugetlbpage 和 Linux mmap(2) 可能会接受 MAP_HUGETLB (但是您的代码应该处理没有大页面支持的处理器或内核的情况,例如通过再次调用 mmap 而没有 @ 987654330@ 当第一个带有 MAP_HUGETLB 的 mmap 失败时)。

您可能会发现这些链接对您感兴趣:

【讨论】:

  • 这根本不能回答问题。甚至很难理解你想说什么。
  • 对我来说,它回答了这个问题。但可能存在一些误解,什么是 CPU 中的页面(以及它们如何实现各个级别)和“块”大小(分页的 I/O 部分)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
相关资源
最近更新 更多