linux 下配置HugePages

1、修改内核参数memlock,单位是KB,参数设置为大约SGA。
vi /etc/security/limits.conf
*  soft   memlock    512000
*  hard   memlock    512000
2,使用数据库帐号验证大小
[oracle@db1 ~]$ ulimit -a | grep lock
core file size          (blocks, -c) 0
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) 512000
file locks                      (-x) unlimited


3,如果使用AMM内存管理,要取消改设置。MEMORY_TARGET和 MEMORY_MAX_TARGET参数设置为0
SQL> alter system reset memory_target scope=spfile ;
SQL> alter system reset memory_max_target scope=spfile;
SQL> alter system set sga_target = XX scope=spfile;
SQL> alter system set pga_aggregate_target = XX scope = spfile;
4,计算需要使用的hugepage页面的大小。hugepage目前只能用于共享内存段等少量内存类型,例如oracle SGA。PGA则不适用,这些内存一般不能用于其它用途,因此设置太小则不足够放下所有内存段,太大则空间浪费。
目前hugepage的大小
[grid@db1 ~]$ grep pagesize /proc/meminfo 
Hugepagesize:       2048 kB
 简单的计算原理是total SGA_MAX_SIZE(多个instance的总和)/hugepagesize + N
N为少量内存盈余,一般多出100就足够了。
也可使用oracle提供的计算公式,基本原理是使用ipcs -m来计算共享内存段的大小。统计前注意关闭AMM;
 5,修改vm.nr_hugepages参数,值为上步计算的数值
参数vm.nr_hugepages指明了内存页数,
vi /etc/sysctl.conf
 vm.nr_hugepages = 250
 [root@db1 bin]# echo "vm.nr_hugepages=250" >> /etc/sysctl.conf
[root@db1 bin]# 
[root@db1 bin]# sysctl -p
 sysctl -p 命令使配置生效。
 
 6,关闭数据库,重启主机和数据库(理论上不需要重启主机,建议重启)
 7,验证是否设置正确
grep HugePages /proc/meminfo
 HugePages_Free小于HugePages_Total的值则表示设置成功。如果HugePages_Rsvd应该保持少量保留内存。

 注意,HugePages如果配置不恰当会引起系统性能下降等风险,需要慎重。

http://blog.csdn.net/launch_225/article/details/9215905
http://bbs.chinaunix.net/thread-3633126-1-1.html
http://blog.csdn.net/zhouyh139/article/details/8662768
http://blog.csdn.net/leshami/article/details/8788825


你可能感兴趣的:(linux 下配置HugePages)