在Linux 5中为oracle配置hugepage的方法

在Linux 5中为oracle配置hugepage的方法

http://unix-cd.com/vc/www/16/2011-01/17676.html

Hugepage/Big page:

系统进程是通过虚拟地址访问内存,但是CPU必须把它转换程物理内存地址才能真正访问内存。为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中。为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系。

而在Redhat Linux中,内存都是以页的形式划分的,默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。这种增大的内存页尺寸在Linux 2.1中,称为Big page;在AS 3/4中,称为Hugepage。
如果系统有大量的物理内存(大于8G),则无论32位的操作系统还是64位的,都应该使用Hugepage。

注意:使用Hugepage内存是共享内存,它会一直keep在内存中的,不会被交换出去,也就是说使用hurgepage的内存不能被其他的进程使用,所以,一定要合理设置这个值,避免造成浪费。对于只使用Oracle的服务器来说,把Hugepage_pool设置成SGA大小即可。

在启用了Hugepage的情况下,32位的ORACLE可以把SGA扩展到62G。

[ORACLE 11G]

必须关闭AMM(自动内存管理)特性才能使用hugepage
设置如下初始化参数:
ALTER SYSTEM SET sga_max_size=6720M SCOPE=SPFILE;
ALTER SYSTEM SET sga_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=2048 SCOPE=SPFILE;
ALTER SYSTEM SET memory_target=0 SCOPE=SPFILE;
ALTER SYSTEM SET memory_max_target=0 SCOPE=SPFILE;
其他配置同10G

[ORACLE10G]

配置过程
检查hugepagesize
grep Hugepagesize /proc/meminfo
Hugepagesize: 4096 kB
检查是否已经有分配HugePages
cat /proc/meminfo|grep HugePages_Total
HugePages_Total=0
配置分配hugepage的数量
nr_hugepages的计算公式:nr_hugepages>=sga(mb)/Hugepagesize(mb)
echo "vm.nr_hugepages=50" >> /etc/sysctl.conf
sysctl -p
再次检查hugepage的分配情况
grep HugePages_Total /proc/meminfo
HugePages_Total: 6
如果这里显示的值为6,小于配置的数量50,则需要重启
reboot
Broadcast message from root (pts/1) (Mon Jan 25 09:38:04 2010):
The system is going down for reboot NOW!
重启之后,检查hugepage的分配情况
grep HugePages_Total /proc/meminfo
HugePages_Total: 50
现在确认hugepage已经分配了50个单位(50×4096kb=200mb)

配置oracle用户的memlock

需要 vi /etc/security/limits.conf文件,加入标记为红色的两行
计算公式为:>=HugePages_Total×1024,这里设置了2倍的值,即:2×50×1024=102400
cat /etc/security/limits.conf|grep lock
# - memlock - max locked-in-memory address space (KB)
# - locks - max number of file locks the user can hold
oracle soft memlock 102400
oracle hard memlock 102400
检查memlock情况
切换到oracle用户身份,使用ulimit -l命令检查memlock情况
su - oracle
ora_test@oracle[/home/oracle]> ulimit -l
102400
启动数据库
ora_test@oracle[/home/oracle]> sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jan 25 09:50:33 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
idle> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218292 bytes
Variable Size 67111180 bytes
Database Buffers 92274688 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
idle> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
检查是否已经使用了hugepage
ora_test@oracle[/home/oracle]> grep HugePages_Free /proc/meminfo
HugePages_Free: 30
这里显示剩余的hugepage为30,小于HugePages_Total(50),证明oracle已经使用了hugepage

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值