Huge Page:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
(创建页面,内容为“Huge Page(大页)是一种内存分配方式,将物理内存划分为比普通页更大的内存块。与传统的 4KB 普通页管理方式相比,HugePages 更适合管理大内存(如 8GB 以上),可以显著提高内存管理效率和应用程序性能。还可以减少TLB(Translation Lookaside Buffer)缺失,提高内存访问效率,尤其适用于大内存连续访问的应用,如数据库、大数据处理等。 如在 Linux 平台安…”)
 
无编辑摘要
 
第5行: 第5行:
# HugePage 在操作系统启动期间被动态分配并被保留
# HugePage 在操作系统启动期间被动态分配并被保留
# 对于 Oracle 服务器,把 Hugepage 设置成 SGA(所有 instance SGA 之和)大小即可
# 对于 Oracle 服务器,把 Hugepage 设置成 SGA(所有 instance SGA 之和)大小即可
透明大页 (Transparent Huge Pages):
# 内核自动转换: Linux 内核从 2.6.32 开始引入了透明大页(THP)功能,它会自动将连续的 4KB 小页合并成大页,以提高内存访问效率
# 自动触发: 当系统检测到有连续的 4KB 小页被频繁访问时,内核会自动将它们合并成大页,而不需要手动配置
# AnonHugePages 的影响: 即使系统没有明确配置大页,但由于 THP 的存在,仍然可能出现 AnonHugePages


{| class="wikitable"
{| class="wikitable"
第12行: 第17行:
|-
|-
|AnonHugePages
|AnonHugePages
|匿名大页的使用量,即没有对应文件映射的大页
|透明大页的使用量,即没有对应文件映射的大页
|-
|-
|HugePages_Total
|HugePages_Total
第36行: 第41行:
  HugePages_Surp:        0
  HugePages_Surp:        0
  Hugepagesize:      2048 kB</nowiki></small>
  Hugepagesize:      2048 kB</nowiki></small>
=== 禁用 ===
临时禁用
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久禁用
在内核启动参数中添加 transparent_hugepage=never
路径:
# Redhat
/sys/kernel/mm/redhat_transparent_hugepage/enabled
# Debian
/sys/kernel/mm/transparent_hugepage/enabled


[[分类:Linux]]
[[分类:Linux]]

2024年12月25日 (三) 16:56的最新版本

Huge Page(大页)是一种内存分配方式,将物理内存划分为比普通页更大的内存块。与传统的 4KB 普通页管理方式相比,HugePages 更适合管理大内存(如 8GB 以上),可以显著提高内存管理效率和应用程序性能。还可以减少TLB(Translation Lookaside Buffer)缺失,提高内存访问效率,尤其适用于大内存连续访问的应用,如数据库、大数据处理等。

如在 Linux 平台安装中,Oracle 建议使用 HugePages 获取 Oracle 数据库的最佳性能。如果在群集成员节点上配置了 HugePages,GIMR 系统全局区域(SGA)将安装到HugePages 内存中。GIMR SGA 最高占用 1 GB 的 HugePages 内存。

  1. HugePage 在操作系统启动期间被动态分配并被保留
  2. 对于 Oracle 服务器,把 Hugepage 设置成 SGA(所有 instance SGA 之和)大小即可

透明大页 (Transparent Huge Pages):

  1. 内核自动转换: Linux 内核从 2.6.32 开始引入了透明大页(THP)功能,它会自动将连续的 4KB 小页合并成大页,以提高内存访问效率
  2. 自动触发: 当系统检测到有连续的 4KB 小页被频繁访问时,内核会自动将它们合并成大页,而不需要手动配置
  3. AnonHugePages 的影响: 即使系统没有明确配置大页,但由于 THP 的存在,仍然可能出现 AnonHugePages
参数 说明
AnonHugePages 透明大页的使用量,即没有对应文件映射的大页
HugePages_Total 系统中预留的 HugePages 的总数
HugePages_Free 尚未分配的 HugePages 数量
HugePages_Rsvd 已被应用程序分配但尚未使用的 HugePages 数量
HugePages_Surp 配置修改后多余的 HugePages 数量
Hugepagesize 每个 HugePage 的大小
# cat /proc/meminfo | grep Huge
 AnonHugePages:   2519040 kB
 HugePages_Total:       0
 HugePages_Free:        0
 HugePages_Rsvd:        0
 HugePages_Surp:        0
 Hugepagesize:       2048 kB

禁用

临时禁用

echo never > /sys/kernel/mm/transparent_hugepage/enabled

永久禁用

在内核启动参数中添加 transparent_hugepage=never

路径:

# Redhat
/sys/kernel/mm/redhat_transparent_hugepage/enabled
# Debian
/sys/kernel/mm/transparent_hugepage/enabled