视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Linux配置HugePage
2020-11-09 12:49:29 责编:小采
文档


对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:

对于内存较大的Oracle数据库服务器,配置HugePage是很有必要的,下面是配置Huge的步骤:

我的环境:

OS:CentOS release 6.4 (Final)

Oracle:11.2.0.4 RAC

Oracle 大内存需要配置HugePage

在Oracle 11.2.0.3.0上开启大页(HugePages)的详细解析

Linux HugePages及MySQL 大页配置

Linux HugePage 特性

1. 设置memlock

编辑/etc/security/limits.conf

增加:

* Soft memlock 稍小于RAM值

* hard memlock 稍小于RAM值

Memlock值大于sga没关系的,所以我们可以设置这个值在我们想要的SGA size和物理内存size之间,这个值得单位是kb。

[root@node1 ~]# grep -i memtot /proc/meminfo

MemTotal: 132250576 kB

我们物理内存大小126G,因此我可以设置memlock为100G。

在2个节点设置:

[root@node1 ~]# tail -2 /etc/security/limits.conf

* soft memlock 104857600

* hard memlock 104857600

设置完毕后,以Oracle用户登录验证:

node2-> ulimit -l

104857600

2. 禁用AMM特性:

禁用AMM特性需要将memory_max_target, memory_max_target2个参数重置,而不仅仅是设置为0,最好的办法是创建一个pfile,在pfile中将这2个参数删除,再根据这个pfile创建spfile.

主要内存参数设置为:

node1->

node1-> grep target /tmp/init.ora

*.pga_aggregate_target=15728000

*.sga_target=424509440

SQL> create spfile from pfile='/tmp/init.ora';

File created.

SQL> startup force

ORA-27102: out of memory

Linux-x86_ Error: 28: No space left on device

Additional information: -134217728

Additional information: 1

SQL>

出现这个报错是因为shmall设置的太小。

Shmall表示共享内存的总大小,单位为pagesize的大小。

根据我的配置,最大能支持8G的SGA:

node1-> getconf PAGE_SIZE

4096

node1-> cat /proc/sys/kernel/shmall

2097152

修改shmall并重新启动数据库,修改的方法很简单,编辑/etc/sysctl.conf:

kernel.shmall= 16252928

即可。

修改完毕kernel.shmall,此时可以重启数据库。

SQL> startup nomount pfile='/tmp/init.ora';

ORACLE instance started.

Total System Global Area 6.4137E+10 bytes

Fixed Size 2269072 bytes

Variable Size 6979321968 bytes

Database Buffers 5.7043E+10 bytes

Redo Buffers 112762880 bytes

SQL>

SQL>

DB启动后重新创建spfile:

SQL> create spfile='+OCR/sszgdb/spfilesszgdb.ora' from pfile='/tmp/init.ora';

File created.

SQL>

3. 根据Oracle的脚本计算hugepage大小(计算时要确保Oracle已经启动),也可自己计算:

Press Enter to proceed...

Recommended setting: vm.nr_hugepages = 30739

node1->

4. 根据脚本的计算值在2个节点编辑/etc/sysctl.conf

加入vm.nr_hugepages = 30739

[root@node2 ~]# grep -i huge /proc/meminfo

AnonHugePages: 602112 kB

HugePages_Total: 30739

HugePages_Free: 30739

HugePages_Rsvd: 0

HugePages_Surp: 0

Hugepagesize: 2048 kB停止数据库实例

5. 重启服务器,一般重启服务器之后DB也自动启动了。服务器和DB重启后可以通过以下命令验证大页的使用情况:

grep -i Hugepages /proc/meminfo

此时查看Oracle的alert日志,也可以发现:

Starting ORACLE instance (normal)

************************ Large Pages Information *******************

Per process system memlock (soft) limit = UNLIMITED

Total Shared Global Region in Large Pages = 58 GB (96%)

Large Pages used by this instance: 29761 (58 GB)

Large Pages unused system wide = 24 (48 MB)

Large Pages configured system wide = 30739 (60 GB)

Large Page size = 2048 KB

RECOMMENDATION:

Total System Global Area size is 60 GB. For optimal performance,

prior to the next instance restart:

1. Increase the number of unused large pages by

at least 936 (page size 2048 KB, total size 1872 MB) system wide to

get 100% of the System Global Area allocated with large pages

可以发现sga并没有全部放在大页里,这样可能对性能带来负面影响,,Oracle建议我们再加入936个大页,可见Oracle的大页脚本计算并不准确,我们需要增加大页数量,并设置参数Use_large_pages=only,该参数确保Oracle的共享内存全部使用大页。

更多详情见请继续阅读下一页的精彩内容:

下载本文
显示全文
专题