ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在AIX 5.3+Oracle 10.2.0.4 平台上将SGA PIN在内存中,并使用大页内存

在AIX 5.3+Oracle 10.2.0.4 平台上将SGA PIN在内存中,并使用大页内存

原创 Linux操作系统 作者:xfxyxh 时间:2009-09-22 15:24:32 0 删除 编辑

首先检查AIX版本,修改一些系统参数:
[xfxyxh][/]#oslevel -s
5300-09-01-0847
符合操作系统5.3 ML01以上的要求。

接着修改系统参数:
[xfxyxh][/]#vmo -p -o v_pinshm=1
[xfxyxh][/]#vmo -p -o minperm%=5
[xfxyxh][/]#vmo -p -o maxperm%=90
[xfxyxh][/]#vmo -p -o maxclient%=90
[xfxyxh][/]#vmo -p -o maxpin%=90
[xfxyxh][/]#vmo -p -o lru_file_repage=0

如果要使用大页内存,还需要修改下面两个系统参数:
[xfxyxh][/]#vmo -r -o lgpg_regions=310 lgpg_size=16777216
其中lgpg_regions=310是根据metalink上的文档结合SGA大小计算出来的:
num_of_large_pages = INT((total_SGA_size-1)/16MB)+1
然后运行:
[xfxyxh][/]#bosboot -ad /dev/ipldevice
[xfxyxh][/]#reboot -q

在Oracle 10.2.0.4版本上,不能简单的设置lock_sga=true就将SGA PIN在内存了,还需要做一些额外的工作:
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGAE oracle
给oracle用户添加这两个capability。

启动oracle数据库之前系统的内存使用情况:
[xfxyxh][/]#svmon -G

[xfxyxh][/]#vmstat -l 1 5

由上可见4K的page有358164个pin在内存中,310个16M的大页内存一个也没使用。
启动oracle数据库,再看:
[xfxyxh][/]#svmon -G

[xfxyxh][/]#vmstat -l 1 5

4K的page pin在内存中的由358164个增加到1934932个,而16M的大页内存inuse的为0,alp、flp也证实了这点。
为什么oracle不使用大页内存呢?原来还需要告诉oracle使用大页内存:
[xfxyxh][/]#export LDR_CNTRL=LARGE_PAGE_TEXT=Y@LARGE_PAGE_DATA=M
重启数据库,监控一下内存:

[xfxyxh][/]#svmon -G

[xfxyxh][/]#vmstat -l 1 5

可见16M的大页内存inuse的为288,剩余22个,大页内存生效了

另外验证了一下对于普通的oracle连接是否也使用大页内存,如果普通oracle连接也使用16M的大页内存那对资源、对性能都有很大影响。
1、首先使用sqlplus通过监听连接到该库;
2、查找出该连接的PID,假设为503920;
3、svmon -P 503920

可见第一行的16M标志为N,而其中有一行
    0         0 work kernel segment (lgpg_vsid=0) L     16    16    0    16
显示使用了16M的大页内存,这个我在没有使用大页内存而且没有将SGA PIN在内存中的系统上也存在,所以我认为是没有使用16M大页内存。
这个大家如果有其他见解欢迎讨论。

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/339291/viewspace-615331/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-13

  • 博文量
    21
  • 访问量
    84885