麒麟V10在ARM平台默认大页为512MB,x86平台为2MB;若误按x86习惯配置1024个大页,ARM下将占用512GB内存引发OOM或死锁,须通过getconf PAGESIZE和/proc/meminfo核对Hugepagesize并严格限制大页数量。

确认当前大页配置与架构适配性
银河麒麟V10在不同CPU架构下默认大页大小差异极大:x86平台为2MB,ARM平台却默认512MB,若未核实就按x86习惯配置1024个大页,将直接导致系统内存被占用超500GB,触发OOM或内存死锁。执行getconf PAGESIZE确认基础页大小,再运行cat /proc/meminfo | grep -i huge查看当前大页状态。
重点核对Hugepagesize字段值——若显示524288 kB(即512MB),说明你正运行在ARM服务器上,必须严格控制大页数量;若为2048 kB(2MB),则可按常规x86策略调整。
临时启用/禁用透明大页(THP)
方法一:立即切换THP模式
执行echo never > /sys/kernel/mm/transparent_hugepage/enabled可彻底禁用THP,适用于数据库、实时音视频等对内存延迟敏感的场景;执行echo always > /sys/kernel/mm/transparent_hugepage/enabled则强制全量启用,适合科学计算类大内存吞吐应用。
【注意:此操作仅对当前会话生效,重启后恢复原设置】
方法二:验证当前THP状态
运行cat /sys/kernel/mm/transparent_hugepage/enabled,输出中带方括号标记的项即为当前激活模式,例如[always] madvise never表示已启用always模式。
永久修改大页数量与启动参数
第一步:编辑GRUB启动配置
执行sudo vim /etc/default/grub,定位到GRUB_CMDLINE_LINUX行,在引号内末尾添加参数:default_hugepagesz=2M hugepagesz=2M hugepages=128(x86平台示例)或default_hugepagesz=512M hugepagesz=512M hugepages=10(ARM平台示例)。
第二步:更新GRUB并重启
执行sudo update-grub && sudo reboot使内核参数生效。重启后检查cat /proc/meminfo | grep HugePages_Total,输出值应与hugepages=后指定的数量一致。
【关键前提:ARM平台严禁将hugepages设为1024,512MB×1024=512GB,远超物理内存容量】
手动预分配大页内存(非透明大页)
方法1:挂载hugetlbfs文件系统
创建挂载点sudo mkdir -p /mnt/huge,执行sudo mount -t hugetlbfs none /mnt/huge启用大页内存池。
方法2:分配指定数量的大页
对x86平台,执行echo 64 | sudo tee /proc/sys/vm/nr_hugepages预分配64个2MB大页;对ARM平台,执行echo 8 | sudo tee /proc/sys/vm/nr_hugepages仅分配8个512MB大页,避免内存耗尽。
这一步操作起来很简单,直接把数字写入对应路径即可,但必须确保物理内存余量大于分配总量——否则写入失败且无任何提示。

















