编辑
2023-12-09
linux
00
请注意,本文编写于 518 天前,最后修改于 518 天前,其中某些信息可能已经过时。

巨大页面(huge pages)是比4Ki更大的内存页面。在x86_64架构上,有两种常见的巨大页面大小:2Mi和1Gi。其他架构的大小可能会有所不同。为了使用巨大页面,代码必须编写得让应用程序意识到它们的存在。

巨大页面的作用是提高内存管理的效率和性能。传统的页面大小为4Ki,当一个进程使用大量内存时,CPU和操作系统需要记住哪些页面属于哪个进程,并且每个页面存储在哪里。当页面数量增多时,查找内存映射的时间也会增加。巨大页面的出现可以减少CPU和操作系统的查找次数,从而提高性能。

image.png 巨大页面可以通过以下方式启用和配置:

  1. 在内核引导命令行中添加参数来配置内核在启动时分配的持久巨大页面的数量和大小。
  2. 可以动态地通过更改/proc/sys/vm/nr_hugepages文件的值来分配或释放默认大小的巨大页面。
  3. 在NUMA系统中,可以通过更改节点的/sys/devices/system/node/node_id/hugepages/hugepages-1048576kB/nr_hugepages文件的值来将巨大页面分配给特定的节点。

image.png 巨大页面的配置和管理可能会比较复杂,并且通常需要对代码进行一些修改才能有效地使用它们。为了简化使用巨大页面的过程,一些操作系统还引入了透明巨大页面(transparent huge pages,THP)的概念。THP是一个抽象层,自动化了创建、管理和使用巨大页面的大部分过程。它隐藏了使用巨大页面的复杂性,提供了更好的性能,并经过广泛的测试和优化,适用于各种系统配置、应用程序和工作负载。

然而,需要注意的是,对于数据库工作负载,不推荐使用透明巨大页面。


Learn more:

  1. What huge pages do and how they are consumed by apps

  2. 5.2. Huge Pages and Transparent Huge Pages Red Hat Enterprise Linux 6 | Red Hat Customer Portal

  3. Hugepages - Debian Wiki

  4. https://mp.weixin.qq.com/s/wxebV4R-SF-yJuoaGAIgWg

  5. https://mp.weixin.qq.com/s/oOki5zw_Y0BL0KaehvcGrw

  6. https://mp.weixin.qq.com/s/ys-sAVbe8bmv21FK2n9PlQ

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!