当前位置:  数据库>oracle

为Linux版本Oracle 11gR2配置HugePage

    来源: 互联网  发布时间:2017-06-21

    本文导语: HugePage是Oracle在Linux版本下一种性能优化手段。对于共享内存区域(SGA)的数据库系统,Oracle通常都推荐在操作系统层面配置上HugePage,为Oracle实例准备更大的可用共享内存和整块的内存。 本文主要介绍在Oracle 11gR2版本上,进行Hu...

HugePage是Oracle在Linux版本下一种性能优化手段。对于共享内存区域(SGA)的数据库系统,Oracle通常都推荐在操作系统层面配置上HugePage,为Oracle实例准备更大的可用共享内存和整块的内存。

本文主要介绍在Oracle 11gR2版本上,进行HugePage配置全过程。记录下来,共需要的朋友待查。

使用HugePages优化内存性能

PF_RING Libzero中使用HugePage

Oracle 大内存需要配置HugePage

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

Linux HugePages及MySQL 大页配置

Linux HugePage 特性

1、环境介绍

笔者使用Oracle 11gR2系统,具体版本为11.2.0.4。

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE    11.2.0.4.0    Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 – Production

当前数据库配置内存策略为ASMM,也就是分别设置PGA和SGA的大小范围。Oracle根据负载情况动态自己调节内部各个子池的空间。注意:在当前版本中,AMM(Automatic Memory Management)和HugePage之间还是不能兼容。所以,如果要求配置HugePage,就只能退而求其次选择ASMM。

数据库设置的SGA空间如下:

SQL> show parameter sga;

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

lock_sga                            boolean    FALSE

pre_page_sga                        boolean    FALSE

sga_max_size                        big integer 12G

sga_target                          big integer 12G

12G的SGA,Oracle在启动过程中,针对大内存情况给出了提示在alert log中。

ue Jan 12 11:31:33 2016

Starting ORACLE instance (normal)

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

Per process system memlock (soft) limit = 64 KB

Total Shared Global Region in Large Pages = 0 KB (0%)

Large Pages used by this instance: 0 (0 KB)

Large Pages unused system wide = 0 (0 KB)

Large Pages configured system wide = 0 (0 KB)

Large Page size = 2048 KB

RECOMMENDATION:

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

  prior to the next instance restart:

  1. Increase the number of unused large pages by 

 at least 6145 (page size 2048 KB, total size 12 GB) system wide to

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

  2. Large pages are automatically locked into physical memory.

 Increase the per process memlock (soft) limit to at least 12 GB to lock

 100% System Global Area's large pages into physical memory

首先Oracle发现当前系统并没有设置HugePage,只有默认的2M大小的Page可选。于是,从建议的角度,给出了提示意见,建议开启HugePage选项在操作系统层面。此时,操作系统层面也没有专门的设置。

[oracle@PROD_PC-DB trace]$ grep Huge /proc/meminfo

AnonHugePages:    36864 kB

HugePages_Total:      0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:      2048 kB

2、配置HugePage

在11.2的小版本中,HugePage处理的行为其实是在变化的。在11.2.0.2中,Oracle推出了一个参数use_large_page,作为从实例层面控制Oracle使用Huge Page的开关。

SQL> show parameter large_pages

NAME                                TYPE        VALUE

------------------------------------ ----------- ------------------------------

use_large_pages                      string      TRUE

该参数默认取值为true,是一种向上最优策略。如果设置为true,Oracle实例会去检查是否操作系统开启了HugePage,如果有就采用,如果没有就不用。另外两个取值分别为false和only,如果选择为false,表示Oracle实例不管操作系统设置,都不会使用HugePage。如果选择为only,就表示Oracle实例只会选择HugePage上运行。

此外,在行为上也有一些变化。在11.2.0.2版本中,如果操作系统没有足够的HugePage使用,SGA内存就只有使用系统剩下的小页(Small Pages)。如果余下的小页small page不够用,或者内核使用的比较多,系统会报错ora-4030错误。

这个情况在11.2.0.3版本中有一些变化。Oracle首先会使用可用的HugePage,如果使用尽了,同样会采用剩下的small pages作为SGA使用。变化在于对使用HugePage的方式上,根据官方的说法:

With this new behavior additional shared memory segments are an expected side effect. Part of the change is to ensure that each shared memory segment making up the SGA only contains sub-areas with an identical alignment requirement - hence the SGA will spread over more separate SHM segments. In this supported mixed page mode the database will exhaust the available hugepages, before switching to regular sized pages.

新版本的操作方式可以更好的使用可用的大页资源。当前操作系统版本为Linux 2.6内核版本。

[oracle@PROD_PC-DB trace]$ uname -r

2.6.32-431.el6.x86_64

这个过程中涉及到不同操作系统环境、不同Oracle配置下的推荐HugePage数量问题。Oracle在MOS上发布出一个Shell脚本hugepages_settings.sh,可以动态计算出推荐的HugePage数量。

具体脚本内容可以从MOS Doc ID 401749.1上进行下载,在笔者之前关于HugePage的文章中也有所涉及。执行脚本后结果如下:

[oracle@PROD_PC-DB trace]$ ls -l | grep hugepag

-rw-r--r--. 1 oracle oinstall    3129 Jan 12 13:32 hugepages_settings.sh

[oracle@PROD_PC-DB trace]$ chmod +x hugepages_settings.sh 

[oracle@PROD_PC-DB trace]$ ls -l | grep hugepag

-rwxr-xr-x. 1 oracle oinstall    3129 Jan 12 13:32 hugepages_settings.sh

[oracle@PROD_PC-DB trace]$ uname -r

2.6.32-431.el6.x86_64

[oracle@PROD_PC-DB trace]$ ./hugepages_settings.sh 

This script is provided by Doc ID 401749.1 from My Oracle Support 

(http://support.oracle.com) where it is intended to compute values for 

the recommended HugePages/HugeTLB configuration for the current shared 

memory segments on Oracle Linux. Before proceeding with the execution please note following:

 * For ASM instance, it needs to configure ASMM instead of AMM.

 * The 'pga_aggregate_target' is outside the SGA and 

  you should accommodate this while calculating SGA size.

 * In case you changes the DB SGA size, 

  as the new SGA will not fit in the previous HugePages configuration, 

  it had better disable the whole HugePages, 

  start the DB with new SGA size and run the script again.

And make sure that:

 * Oracle Database instance(s) are up and running

 * Oracle Database 11g Automatic Memory Management (AMM) is not setup 

  (See Doc ID 749851.1)

 * The shared memory segments can be listed by command:

    # ipcs -m

Press Enter to proceed...

Recommended setting: vm.nr_hugepages = 6148

操作系统层面配置HugePage,需要在两个层面进行配置。事先是limits.conf文件,开启对用户的内存限制。

[root@PROD_PC-DB security]# vi limits.conf 

# /etc/security/limits.conf

#

#Each line describes a limit for a user in the form:

#

(篇幅原因,有省略……)

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle soft memlock 32879476  --对应内存总量

oracle hard memlock 32879476

确认修改。

[oracle@PROD_PC-DB ~]$ ulimit -l

32879476

将脚本计算出的结果,修改入/etc/sysctl.conf文件。

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

fs.aio-max-nr = 1048576

fs.file-max = 6815744

vm.nr_hugepages = 6148

"/etc/sysctl.conf" 67L, 1631C written

执行sysctl –p落实修改。

[root@PROD_PC-DB security]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

(篇幅原因,有省略……)

fs.file-max = 6815744

vm.nr_hugepages = 6148

重新启动实例数据库。

SQL> conn / as sysdba

Connected.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 1.2827E+10 bytes

Fixed Size                  2265224 bytes

Variable Size            2214596472 bytes

Database Buffers        1.0603E+10 bytes

Redo Buffers                7307264 bytes

Database mounted.

Database opened.

SQL> 

在操作系统层面上,可以看到HugePage使用情况。

[oracle@PROD_PC-DB ~]$ ipcs -m

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch    status     

0x00000000 786435    oracle    640        67108864  22                     

0x00000000 819204    oracle    640        12817793024 22                     

0x617ab988 851973    oracle    640        2097152    22                     

[oracle@PROD_PC-DB ~]$ grep Huge /proc/meminfo 

AnonHugePages:    20480 kB

HugePages_Total:    6148

HugePages_Free:    5531

HugePages_Rsvd:    5528

HugePages_Surp:        0

Hugepagesize:      2048 kB

同时,启动过程中的推荐提示信息消失。

Tue Jan 12 14:26:30 2016

Starting ORACLE instance (normal)

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

Per process system memlock (soft) limit = 31 GB

Total Shared Global Region in Large Pages = 12 GB (100%)

Large Pages used by this instance: 6145 (12 GB)

Large Pages unused system wide = 3 (6144 KB)

Large Pages configured system wide = 6148 (12 GB)

Large Page size = 2048 KB

********************************************************************

LICENSE_MAX_SESSION = 0

LICENSE_SESSIONS_WARNING = 0

Initial number of CPU is 8

Number of processor cores in the system is 8

Number of processor sockets in the system is 1

Picked latch-free SCN scheme 3

Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST

Autotune of undo retention is turned on. 

IMODE=BR

3、结论

对于投产在Linux版本下的Oracle共享内存系统而言,配置HugePage还是有现实意义的。


    
 
 

您可能感兴趣的文章:

  • Linux内核中影响tcp三次握手的一些协议配置
  • LINUX如何配置网卡,配置TELNET,急!在线等待!
  • Linux下NFS服务配置详解
  • 求xmanager3.0 配置root用户,连接redhat linux 6.0 配置文档
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 高分求救!!!怎样在linux下配置tomcat文件?同时配置sqlServer数据库?
  • 何处有 Linux 内核编译配置详细的中文介绍? 我在重新配置编译时老是出错:-(
  • 安装linux的最低配置:硬盘,内存,以及cpu的最低配置?多谢赐教!
  • 请问:我在win2000下装了一个vMware4.5,又装了一个linux9.0,可是不会配置网络,我的虚拟机已经配置好了桥连接,可是在linux下我不知道
  • LINUX的一段DHCP配置怎样在WINDOWS 2003上配置相同的功能
  • linux路由器配置,内核配置中怎么找不到optimize as router not host选项!
  • to: wjmmml(笑着悲伤),有没有linux下的配置java、tomcat等等其他的配置文档啊,请帮忙
  • 大家好!我已经装好了红旗Linux桌面3.2正式版产品。现在我想配置通过局域网上网??请问我本机如何配置????
  • 请推荐一个配置要求低linux安装,我打算装上用来学习在linux上面做开发
  • linux下网络配置
  • 使用secureFX连接到linux上需要在linux上配置什么
  • LINUX(RH)下配置文件集
  • 如何配置linux,使windows系统可以直接打印到linux的打印机上??
  • 求教:Linux下网络配置的问题
  • 我机器配置不高,装了VMware,想装个redhat linux学linux
  • tomcat&Apache linux下配置
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 请问LINUX内核版本为2.4.31的是什么版本?自己写的串口驱动,是否向下兼容,还是必需版本相同?
  • linux 版本 想学习linux 可是不知他的服务器是哪个版本
  • 请问在高版本linux编译链接的程序如何在低版本Linux上运行
  • 请教:linux 的版本问题,上面想跑J2EE或网站之类的装什么版本?客户端或个人机装什么版本?
  • 问一个弱弱的问题:做嵌入式开发,宿主机的Linux版本一定要跟目标机上的嵌入式Linux版本一致么?
  • ms sql server有 linux 版本吗? 或有其它平台的版本吗?
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐 iis7站长之家
  • libxml2是针对aix、sco、linux分不同版本还是统一版本?
  • 什么版本的linux系统 内置 glibc2.4以上的版本
  • 最常用的Linux/Unix系统版本是什么版本啊?
  • 现在大家都用什么版本的linux做服务器?哪个版本比较稳定?
  • Linux不同版本内核目录下的ChangeLog是以哪个版本作为对比?
  • 怎么才能知道当前正在使用的linux的版本名和版本号??
  • 请问查看Linux版本以及内核版本信息的命令是什么?
  • 关于linux内核版本和源代码版本问题
  • 红帽子Linux有哪些版本?现在各自最新版本是啥?
  • 我想学习linux,可是不知选择哪个版本?最新版本是多少?
  • 在linux高版本下编译低版本的内核好像成功性不大啊,有谁搞过?
  • linux中一个函数一几个版本,现在我想不用默认的那个版本该如何设置
  • 有没有研究linux1.0左右版本的书?我主要想看看网络部分的实现,版本越早越好
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • secureCRT下Linux终端汉字乱码解决方法
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • Linux c字符串中不可打印字符转换成16进制
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3