在CentOS系统中设置大页(Huge Pages)可以显著提升数据库、虚拟化等内存密集型应用的性能,因为大页减少了页表项数量,降低了TLB miss概率,从而提高内存访问效率,以下是关于CentOS设置大页的详细步骤和注意事项。

检查当前系统大页配置
需要查看系统当前的大页配置状态,通过执行cat /proc/meminfo | grep -i huge命令,可以查看已分配的大页数量(HugePages_Total)、空闲大页数量(HugePages_Free)以及每个大页的大小(Hugepagesize),默认情况下,CentOS可能未启用大页或分配量较少,需要根据实际需求进行调整。
计算所需大页数量
在设置大页前,需根据应用需求计算所需的大页数量,若应用需要占用10GB内存,且系统大页大小为2MB(默认值),则所需大页数量为10GB / 2MB = 5120,需要注意的是,大页一旦分配,不能被交换到磁盘,因此需确保系统有足够的物理内存,避免影响其他进程运行。
临时设置大页(无需重启)
通过sysctl命令可以临时修改大页配置,适用于快速测试或临时调整,执行以下命令:
sudo sysctl -w vm.nr_hugepages=5120
此设置仅在当前会话有效,系统重启后会恢复默认值,若需永久生效,需修改配置文件。

永久设置大页(需重启)
为了使大页配置在系统重启后依然生效,需编辑/etc/sysctl.conf文件,在文件末尾添加以下内容:
vm.nr_hugepages=5120
保存后执行sysctl -p命令使配置立即生效,或重启系统使配置持久化,对于CentOS 7及以上版本,也可通过/etc/sysctl.d/目录下的自定义配置文件管理,便于维护。
配置大页内存挂载点(可选)
某些应用(如Oracle数据库)需要将大页挂载到特定目录,可通过以下步骤创建:
- 创建挂载目录:
sudo mkdir /mnt/hugepages - 挂载大页文件系统:
sudo mount -t hugetlbfs nodev /mnt/hugepages -opagesize=2M - 将挂载信息添加到
/etc/fstab中,实现开机自动挂载:nodev /mnt/hugepages hugetlbfs defaults,pagesize=2M 0 0
验证大页配置
设置完成后,需验证大页是否生效,再次执行cat /proc/meminfo | grep -i huge,确认HugePages_Total值与设置一致,可通过cat /proc/mounts检查大页文件系统是否正确挂载。

注意事项
- 内存预留:大页会占用大量物理内存,确保系统预留足够内存,避免因内存不足导致系统不稳定。
- 应用兼容性:并非所有应用都支持大页,需确认目标应用是否兼容。
- 动态调整:CentOS默认不支持动态调整大页数量,修改后需重启系统生效,部分内核版本可通过
echo 1 > /sys/kernel/mm/transparent_hugepage/enabled启用透明大页,但可能与传统大页冲突,需谨慎使用。
相关问答FAQs
Q1:如何检查系统中已分配的大页是否被正确使用?
A1:可通过cat /proc/<PID>/numa_maps命令查看指定进程的大页使用情况,其中huge字段表示该进程占用的大页数量。grep HugePages_Surplus /proc/meminfo可显示超额分配的大页数,若此值过高,可能表明内存不足。
Q2:修改大页配置后系统无法启动,如何恢复?
A2:若因大页配置错误导致系统无法启动,可在GRUB引导界面按e键编辑启动参数,在linux16或linuxefi行末尾添加sysctl.vm.nr_hugepages=0临时禁用大页,进入系统后修改/etc/sysctl.conf文件中的错误配置并重启。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复