巨大页面(huge pages)是比4Ki更大的内存页面。在x86_64架构上,有两种常见的巨大页面大小:2Mi和1Gi。其他架构的大小可能会有所不同。为了使用巨大页面,代码必须编写得让应用程序意识到它们的存在。
巨大页面的作用是提高内存管理的效率和性能。传统的页面大小为4Ki,当一个进程使用大量内存时,CPU和操作系统需要记住哪些页面属于哪个进程,并且每个页面存储在哪里。当页面数量增多时,查找内存映射的时间也会增加。巨大页面的出现可以减少CPU和操作系统的查找次数,从而提高性能。
巨大页面可以通过以下方式启用和配置:
/proc/sys/vm/nr_hugepages
文件的值来分配或释放默认大小的巨大页面。/sys/devices/system/node/node_id/hugepages/hugepages-1048576kB/nr_hugepages
文件的值来将巨大页面分配给特定的节点。
巨大页面的配置和管理可能会比较复杂,并且通常需要对代码进行一些修改才能有效地使用它们。为了简化使用巨大页面的过程,一些操作系统还引入了透明巨大页面(transparent huge pages,THP)的概念。THP是一个抽象层,自动化了创建、管理和使用巨大页面的大部分过程。它隐藏了使用巨大页面的复杂性,提供了更好的性能,并经过广泛的测试和优化,适用于各种系统配置、应用程序和工作负载。
然而,需要注意的是,对于数据库工作负载,不推荐使用透明巨大页面。
Learn more:
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!