研究开启大页实验
1、什么是大页,大页的作用
系统进程通过虚拟地址访问物理内存,物理内存与虚拟地址做一个一一映射的表存在CPU里面。没开启大页之前交换页的容量为4k,如果内存量大的话,映射的条目就会很多,CPU寻址时间就会多。
开启大页的目的是杜绝内存交换,因为大页会把SGA保留在内存中不被交换出来。
2、Oracle使用大页的条件
a) 开启AMM
b) 关闭pre_page_sga(有疑问)
c) sga_max_target和sga_target不能为0
3、计算大页,使数据库合理利用大页
a) 大页每页固定【2M/页】不可更改
b) 大页要比sga_max_target多一点(也不能过多)
c) 例子:SGA=208M,则vm.nr_hugepages=106
4、实验
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -------------
lock_sga boolean FALSE
pre_page_sga boolean TRUE
sga_max_size big integer 208M
sga_target big integer 208M
vi /etc/sysctl.conf
加入vm.nr_hugepages=106
使内核更改生效:sysctl –p
vi /etc/security/limits.conf
加入:
oracle soft memlock 213000
oracle hard memlock 213000
查看是否生效:
su – oracle
[oracle@yuhaihua ~]$ ulimit -l
218000
关闭数据库退出sql,重载oracle用户,开启数据库观察大页是否产生:
[root@yuhaihua ~]# watch -n1 'cat /proc/meminfo |grep -iHugePage'
Every 1.0s: cat /proc/meminfo |grep -i HugePage Wed Jun 4 16:16:56 2014
AnonHugePages: 20480 kB
HugePages_Total: 106---106页
HugePages_Free: 2 ---空闲2页
HugePages_Rsvd: 1 ---OS承诺给1页
HugePages_Surp: 0
Hugepagesize: 2048 kB---每页固定2M
总共使用了106-2=104页*2=208M=sga_target
208M+1*2约等于sga_max_target(为啥超了呢。。)
如今有两个疑问没有明白:
1、开启pre_page_sga时大页不起作用
2、208M+1*2约等于sga_max_target超了2M