hugepage在linux中如何设置
hugepage在oracle中的配置应用
大内存技术,不支持内存自动管理,必须关闭AMM(自动内存管理),不用MEMORY_TARGET(值要为0) ,才能使用hugepage,检查数据库的参数设置是否支持:
SQL> show parameter memory_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
memory_max_target big integer 0
memory_target big integer 0
如果不配置锁定内存,在后alert_sid.log中数据库实例启动时会有类似如下的建议:
RECOMMENDATION:
Total System Global Area size is 5 GB. For optimal performance,
prior to the next instance restart:
1. Large pages are automatically locked into physical memory.
Increase the per process memlock (soft) limit to at least 5 GB to lock
100% System Global Area's large pages into physical memory
并且,hugepage并没有真正使用起来!
检查系统是否启用hugepage,或者是否可以启用:
cat /proc/meminfo | grep -i huge
AnonHugePages: 75776 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
可以看到,HugePages_Total,HugePages_Free均为零,证明没有使用,但可以配置。如果上面什么都没有显示,证明不能配置。
查询参数nr_hugepages,shmmax,shmall设置值应该设置多少:
sqlplus / as sysdba
column "kernel.shmmax" format 99999999999999999999
请输入服务器物理内存大小:
select
round(&InputPhysicalMemorySize*0.8*1024*1024*1024/(2048*1024)) as "vm.nr_hugepages",
round(&InputPhysicalMemorySize*0.8*1024*1024*1024) as "kernel.shmmax",
round(&InputPhysicalMemorySize*0.8*1024*1024*1024*0.9/4096) as "kernel.shmall"
from dual;
输出结果会例如下所示:
vm.nr_hugepages kernel.shmmax kernel.shmall
--------------- --------------------- ------------ (注意实际的值可能与些不同,应看实际输出结果,而不是直接复制下面的值!)
52429 109951162778 24159191
#vi /etc/sysctl.conf, 在文件末尾加入:
vm.nr_hugepages = 上面查询值
kernel.shmmax = 上面查询值
kernel.shmall = 上面查询值 或kernel.shmall = 1073741824
修改以下文件:
[root@hdyydb1 u02]# vim /etc/security/limits.conf
添加:
oracle soft memlock 6291456
oracle hard memlock 6291456
或
* hard memlock unlimited
* soft memlock unlimited
大页需要重启操作系统才生效!
需关闭数据库,重启操作系统,再启动数据库。
检查设置是否生效,数据库未启动时_Total和_Free值应该是一致的:
cat /proc/meminfo | grep -i huge
AnonHugePages: 75776 kB
HugePages_Total: 977
HugePages_Free: 977
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
启动数据库后:
cat /proc/meminfo | grep -i huge
AnonHugePages: 43008 kB
HugePages_Total: 2588
HugePages_Free: 2168
HugePages_Rsvd: 2105
HugePages_Surp: 0
Hugepagesize: 2048 kB
free比total小,证明已经生效,否则没生效 ,用户程序在申请Hugepages的时候,其实是reserve了一块内存,并未真正使用,此时/proc/meminfo中的 HugePages_Rsvd 会增加,而 HugePages_Free 不会减少。
hugepage在linux中如何设置
本文2024-09-22 20:22:34发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113227.html