Linux的hugepage简要思路总结

背景

        顾名思义,翻译过来就是大页技术,页可以简单理解为内存块。

        我是在oracle数据库服务器应用这个技术的,因为数据库使用过程中,最怕出现的性能问题就是出现SWAP(内存不够用,使用硬盘作为虚拟内存),这个动作效率特别低,所以宁可等待内存资源,也不要换页,一旦SQL频繁swap,就要进入漫长的等待了。

原理

        使用hugepage的内存,不会进行swap,而oracle的SGA如果配了hugepage,就会默认使用hugepage。在操作系统层面设置好hugepage后,重启服务器,启动数据库,SGA就会占用hugepage。所以hugepage的设置要比SGA稍微大一点。

操作步骤

hugepage配置

1.修改 /etc/security/limits.conf 文件,增加以下内容:

* soft memlock unlimited

* hard memlock unlimited

检查:ulimit -l

2.看看当前hugepage每页大小

grep -i huge /proc/meminfo

hugepage大小等于页数*每页大小,要比SGA稍大

3.修改/etc/sysctl.conf

配置hugepage页数

vm.nr_hugepages = XXX ##页数

##使生效

sysctl -p

4.查看是否启用hugepage

show parameter USE_LARGE_PAGES;

为true则是启用

其他相关配置

关闭AMM

这个在数据库里和hugepage冲突

SHOW PARAMETER MEMORY;

如果memory_max_target、memory_target都是0说明没启用

关闭THP

这个在操作系统层面和hugepage冲突

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="transparent_hugepage=never /g' /etc/default/grub

sysctl -p

检查:

cat /sys/kernel/mm/transparent_hugepage/enabled

UEFI

## 判断操作系统是否使用UEFI方式启动 ##

ls -ld /sys/firmware/efi

## 如果上面查询目录存在使用如下方式重建grub配置文件(针对EFI方式) ##

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

## 否则使用如下方式重建grub配置文件(针对BIOS方式) ##

grub2-mkconfig -o /boot/grub2/grub.cfg

关闭 NUMA

如果只有一个node可以不做这步:

dmesg |grep -i numa

检查操作系统是否开启 NUMA

#(ROOT)

dmesg | grep -i numa

注:如果输出结果为 No NUMA configuration found 则表明 NUMA 没有开启,否则使用如下方法关闭

#(ROOT)

sed -i 's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="numa=off /g' /etc/default/grub

## 生效 ##

sysctl -p

重启操作系统和数据库

检查

grep -i huge /proc/meminfo

如果hugepage总大小生效、free大小小于总大小,说明成功被使用了。(正常free就是总大小减去SGA大小)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值