[分享]AIX系统如何启用大页面功能_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4529 | 回复: 0   主题: [分享]AIX系统如何启用大页面功能        下一篇 
薯片
注册用户
等级:中士
经验:237
发帖:75
精华:0
注册:2012-2-10
状态:离线
发送短消息息给薯片 加好友    发送短消息息给薯片 发消息
发表于: IP:您无权察看 2012-2-10 16:31:12 | [全部帖] [楼主帖] 楼主

适用于:

oracle服务器 - 企业版 - 版本:9.2.0.1到10.2.0.4 - 版本:9.2至10.2
电力系统IBM AIX(64位)
基于IBM AIX的系统(64位)
AIX5L的系统(64位)

目标

AIX系统如何启用大页面的功能?
见:
Oracle数据库管理员参考
基于UNIX的操作系统的10g第2版(10.2)
零件编号B15658-05
- 或 -
Oracle数据库管理员参考
基于Linux和UNIX的操作系统的11g第1版(11.1)

零件编号B32009-05

解决方案:

大页内存
最开始运行在IBM POWER4或POWER5处理器上的AIX V5.1操作系统,pSeries系统支持两种虚拟页大小:4千字节(标准页)和16兆字节(大页)。当使用大页面虚拟内存映射,页表缓冲区(TLB)能够映射到给定的条目数量更多的虚拟内存,导致在应用程序使用大量的虚拟内存的时候,有一个较低的TLB缺失率。此外,当使用大内存页,将有更少的页边界,提高了预取性能。

线交易处理(OLTP)和数据仓库环境都能从使用大页面中受益。
对于应用程序,如oracle,通常使用大量的虚拟内存,使用大页面内存直接带来性能的提高。Oracle可以使用通过使用三种类型的内存来使用大页面:共享内存(SGA),过程数据(数据文件),和指令文本(文本文件)。大多数Oracle应用程序中,SGA的占主导地位控制虚拟内存的使用,因此,使用大页面的益处,多数是通过SGA来实现的。在一些特殊的Oracle应用程序中,在数据文件和文本文件中使用大页面,可以提供一些额外的性能优势。然而,因为大页面分配的粒度,每个Oracle进程可能有占用更大的内存。在AIX V5.3中,只有64位进程和64位AIX内核支持大页的文字和数据。对于大多数应用程序,建议是只为SGA使用大页面,而不为文本和数据使用大页面。

在Oracle 9i和Oracle10g,Oracle初始化参数LOCK_SGA设置为TRUE时,oracle将要求大页面分配共享内存(shmget()函数调用SHM_LGPAGE标志集)。当AIX操作系统使用大页面分配共享内存时,Oracle用户ID必须有CAP_BYPASS_RAC_VMM和CAP_PROPAGATE特性。此外,AIX大页池必须配置(如下面的例子所示)。当使用大页面上的Oracle真正应用集群(RAC)数据库时,,也需要根据根用户ID 设置CAP_BYPASS_RAC_VMM和CAP_PROPAGATE的capabilities,在数据库中,srvctl命令是用于启动和停止RAC数据库实例。

大页面总是固定的,大页面内存不能用做标准内存。如果一个大页面内存池已经配置,那么这内存将不能被分配为标准内存,即使当前没有其他应用程序正在使用大页面。
使用Oracle SGA的大页面的配置示例

根据Oracle用户ID,按照以下步骤设置CAP_BYPASS_RAC_VMM和CAP_PROPAGATE的capabilities:
1。首先检查当前capabilities:# lsuser -a capabilities oracle

注:只有root用户可以显示的功能属性。
2。在已经分配用户的capabilities表中添加CAP_BYPASS_RAC_VMM和CAP_PROPAGATE的capabilities:

#chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE oracle


3。通过计算SGA中所需的大页面的数量来配置AIX大页池:

num_of_large_pages(大页面数量)= INT((total_SGA_size-1)/16MB)+1


注意:虽然我们处理整数值,必须考虑向上舍入。当试图把东西装入内存时,向下舍入是没有意义的,。例如,SGA的大小为9999220736:

9999220736-1/(16* 1024 * 1024)=595.99999994


这里,整数计算会得出595的结果,但考虑到实际数字比这个更大,我们需要向上舍入到596,而不是接受基数595。

4。配置大页面的数量和大小:

#vmo -p -o lgpg_regions=num_of_large_pages -o lgpg_size=16777216


5。更改lru_file_repage参数,默认为1:

#vmo -o lru_file_repage=0


注意:因为改变了大页面的配置,如果系统需要重新启动,,这将在vmo命令的输出中显示。
下为文本文件和数据文件使用大页面的配置实例
除了需要配置大页面SGA所需的步骤外,还需要的配置步骤是,
1。计算文本文件和数据文件所需的额外大页面数量。
2。启动Oracle实例,然后在启动的时候执行以下命令:

#svmona-P
for example:
#svmon -P 552974
------------------------------------------------------------------------------
Pid Command Inuse Pin Pgsp Virtual 64-bit Mthrd LPage
552974 oracle 95447 4012 0 86224 Y N N
Vsid Esid Type Description LPage Inuse Pin Pgsp Virtual
181958 70000000 work default shmat/mmap - 58243 0 0 58243
1e197e 70000001 work default shmat/mmap - 12663 0 0 12663
1a17da 10 clnt text data BSS heap - 9212 0 - -
0 0 work kernel segment - 7821 3990 0 7821
d08ad 90000000 work loader segment - 4776 0 0 4776
1f1a7f 11 work text data BSS heap - 1924 0 0 1924
121272 90020014 work shared library text - 375 0 0 375
21a82 8001000a work private load - 138 0 0 138
1a40 9001000a work shared library text - 113 0 0 113
d1a6d 80020014 work private load - 107 0 0 107
:


ESID10对应文本段,ESID 11对应数据段。当检查所有Oracle进程文本段时,发现它们都具有相同的Vsid。这是因为他们共享这个只读段。对每个Oracle进程而言,数据部分是私有的,因此当使用大页面数据时,大页面的需求是依赖于前台和后台Oracle进程的数目的。在该段里面列标记INUSE包含了4 KB页面的数量。

使用下列公式计算额外的大页的文字和数据页面。

num_of_additional_pages=((text_pages+4095)/4096)+ N*(INT(data_pages+4095)/ 4096)


使用svmon的输出示例,假设25个前台和后台进程(N =25),然后:

num_of_additional_pages= INT((9212+4095)/ 4096)+25*(INT((1924+4095)/4096))= 28


把这个数字加到SGA中所需要的大页面数量上然后执行vmo指令:

#vmo -p -o lgpg_regions=num_of_large_pages+num_of_additional_pages -o lgpg_size=16777216


编辑 Oracle二进制文件XCOFF的头部,以使其能够使用大页面数据:

# ldedit -b lpdata $ORACLE_HOME/bin/oracle


在启动Oracle实例和监听器之前,先导出用来启动实例和监听器的LDR_CNTRL。

#export LDR_CNTRL=LARGE_PAGE_TEXT=Y@LARGE_PAGE_DATA=M


注:除了编辑XCOFF文件头外,为确保文字大页面和数据大页面数据,还需要进行设置。设置LARGE_PAGE_DATA = M选项,只分配足够大的数据段页面BRK值。 @字符用于分隔多个值的定义的LDR_CNTRL变量。
监视内存使用情况的工具
本节讨论监视内存使用情况的工具,如t和svmon命令。

vmstat


vmstat命令还协助监测内存使用。
使用的vmstat-l命令释放大页面。

$ vmstat -l
System configuration: lcpu=2 mem=7424MB
kthr memory page faults cpu large-page
-------------------------------------------------- -----------------
r b avm fre re pi po fr sr cy in sy cs us sy id wa alp flp


vmstat的输出中,alp列表示分配大页面的数量,flp列表示的是空闲的大页面数目。

svmon


svmon命令是用来查看一个进程或一组进程内存的使用情况。在大页面的内存部分,-P选项显示在一个特定的进程中内存的使用情况。 -C Oracle选项,显示系统上所有运行的Oracle进程的内存使用情况。只有root权限用户可以使用svmon命令。

重要注意事项:

1)补丁7226548可以解决在oracle10.2.0.4上大页面不被使用的问题,因此解决方案不再需要了。
2)这是一个AIX操作系统的具体配置,因为在新版本的AIX中,大页面可能会自动配置,你可以参考AIX特定的文档或联系IBM公司以便获得详细信息。





赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论