一、为什么需要大页面?

如果您有一个大的RAM和SGA,那么HugePages对于Linux上更快的Oracle数据库性能是至关重要的。如果您的组合数据库SGAs很大(比如超过8GB,甚至对于更小的数据库也很重要),则需要配置更大的页面。请注意,SGA的大小很重要。HugePages的优势有:

更大的页面大小和更少的页面数量:默认页面大小为4K,而HugeTLB大小为2048K。这意味着系统需要处理512倍的页面。

减少页表遍历:由于HugePage比常规大小的页面包含更大的连续虚拟地址范围,因此使用HugePages的每个TLB条目被TLB命中的概率要高于使用常规页面。这减少了从虚拟地址获取物理地址遍历页面表的次数。

减少内存操作的开销:在虚拟内存系统(任何现代操作系统)上,每个内存操作实际上是两个抽象的内存操作。使用HugePages,由于要处理的页面数量较少,因此显然避免了页面表访问上可能出现的瓶颈。

内存使用量更少:从Oracle数据库的角度来看,与常规大小的页面相比,Linux内核将使用更少的内存来创建pagetables,以维护SGA地址范围的虚拟到物理映射。这使得更多的内存可用于进程私有计算或PGA使用。

无交换:在所有文档1295478.1中,我们必须避免在Linux操作系统上发生交换。大页是不可交换的(而常规页是可交换的)。因此,不存在页面替换机制开销。大页通常被认为是固定的。

没有“kswapd”操作:如果有一个非常大的区域需要分页(例如,对于50GB内存有1300万个页表条目),那么kswapd将非常繁忙,并且会使用大量的CPU资源。当使用HugePages时,kswapd不参与管理它们。另见文件361670.1

二、大页配置(Doc ID 361468.1)

1.设置内存锁,假如我这里64G内存,设置如下,值单位kb

vi  /etc/security/limits.conf
* soft memlock 60397977
* hard memlock 60397977

2.检查设置的值

$ ulimit -l
60397977

3.关闭AMM

oracle11g以后默认自动内存管理( Automatic Memory Management (AMM)),跟这个大页设置冲突了,所以需要关闭AMM. 需要把MEMORY_TARGET and MEMORY_MAX_TARGET 这2个参数设置为 0,如果已经是0就不用设置了

06:55:02 SYS@db01> show parameter memory

NAME                                 TYPE                           VALUE

hi_shared_memory_address integer 0

memory_max_target big integer 0

memory_target big integer 0

shared_memory_address integer 0 如果不为0则需要设置

alter system reset memory_max_target scope=spfile sid='*';

4. 使用推荐脚本计算vm.nr_hugepages 的值

$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 1496

5.进行设置vm.nr_hugepages

vi  /etc/sysctl.conf
vm.nr_hugepages = 1496

6.停止数据库,重启操作系统

7.检查和验证配置

# grep HugePages /proc/meminfo
HugePages_Total: 1496
HugePages_Free: 485
HugePages_Rsvd: 446
HugePages_Surp: 0

三、使用官方脚本计算出推荐设置大页值,参考Doc ID 401749.1

#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
# on Oracle Linux
#
# Note: This script does calculation for all shared memory
# segments available when the script is run, no matter it
# is an Oracle RDBMS shared memory segment or not.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support
# http://support.oracle.com

Welcome text

echo "

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 the overall 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..." read

Check for the kernel version

KERN=uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'

Find out the HugePage size

HPG_SZ=grep Hugepagesize /proc/meminfo | awk '{print $2}'

if [ -z "$HPG_SZ" ];then

echo "The hugepages may not be supported in the system where the script is being executed."

exit 1

fi

Initialize the counter

NUM_PG=0

Cumulative number of pages required to handle the running shared memory segments

for SEG_BYTES in ipcs -m | cut -c44-300 | awk '{print $1}' | grep "[0-9][0-9]*"

do

MIN_PG=echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q

if [ \(MIN_PG -gt 0 ]; then
NUM_PG=`echo "\)NUM_PG+$MIN_PG+1" | bc -q`

fi

done RES_BYTES=echo "$NUM_PG * $HPG_SZ * 1024" | bc -q

An SGA less than 100MB does not make sense

Bail out if that is the case

if [ $RES_BYTES -lt 100000000 ]; then

echo ""

echo "
ERROR "

echo "
"

echo "Sorry! There are not enough total of shared memory segments allocated for

HugePages configuration. HugePages can only be used for shared memory segments

that you can list by command:
# ipcs -m

of a size that can match an Oracle Database SGA. Please make sure that:

  • Oracle Database instance is up and running
  • Oracle Database 11g Automatic Memory Management (AMM) is not configured"

    exit 1

    fi

Finish with results

case \(KERN in
'2.4') HUGETLB_POOL=`echo "\)NUM_PG*$HPG_SZ/1024" | bc -q`;

echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;

'2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;

'3.8') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;

'3.10') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;

'4.1') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;

'4.14') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;

*) echo "Kernel version $KERN is not supported by this script (yet). Exiting." ;;

esac

End

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树设计优化生成列70490 人正在系统学习中

[转帖]Oracle性能优化-大内存页配置的更多相关文章

  1. Oracle性能优化之内存管理

    Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA).前者专门供每个会话使用,后者由所有O ...

  2. 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)

    原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage)   熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...

  3. 转://Linux大内存页Oracle数据库优化

    PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...

  4. 降低磁盘IO使Oracle性能优化(转)

    文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...

  5. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  6. redis性能优化、内存分析及优化

    redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...

  7. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  8. 我眼中的 Oracle 性能优化

    恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...

  9. jvm性能优化及内存分区

     jvm性能优化及内存分区 2012-09-17 15:51:37 分类: Java Some of the default values for Sun JVMs are listed below. ...

  10. Android 性能优化之内存泄漏检测以及内存优化(中)

    https://blog.csdn.net/self_study/article/details/66969064 上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析, ...

随机推荐

  1. Vue接入谷歌广告(Google Adsense)

    1.注册账户 首先你要拥有一个google账号,点击注册谷歌账号,点击个人账号根据提示一步一步来即可注册成功.(当然你需要魔法才可以正常访问谷歌服务) 2.补充账户信息,申请广告授权 点击进入Goog ...

  2. LayoutBuilder(获取父类的宽高)

    LayoutBuilder 是 Flutter 中的一个构建组件,用于根据父容器的约束对其子组件进行布局. import 'package:flutter/material.dart'; void m ...

  3. 厚积薄发!华为云7篇论文被AAAI收录,2021年AI行业技术风向标看这里!

    摘要:近期,全球人工智能领域的顶级学术会议AAAI 2021将于2月2日-9日在线上召开,华为云的7篇AI科研成果被收录. 全球人工智能领域的顶级学术会议AAAI 2021将于2月2日-9日在线上召开 ...

  4. 你眼中的程序员 VS 程序员眼中的自己,是时候打破代沟了

    摘要:修电脑?格子衫?脱发?程序员被误解了怎么办?如何一句话向父母说明白你的工作? 有人说,你们程序员工作赚钱真简单,电脑上按按键盘就行了,一点也不辛苦. 有人说,程序员不懂生活,就知道天天对着电脑. ...

  5. AI专家一席谈:复用算法、模型、案例,AI Gallery带你快速上手应用开发

    摘要: 华为云社区邀请到了AI Gallery的负责人严博,听他谈一谈AI Gallery的设计初衷.经典案例以及未来规划. 本文分享自华为云社区<AI专家一席谈:复用算法.模型.案例,AI G ...

  6. DarkMode(4):css滤镜 颜色反转实现深色模式

    在<DarkMode(1):产品应用深色模式分析>提过,单纯反转是不行的.但是,把不需要反转的,在反转过来.或者用js,给想要反转的,加上反转样式,再对其他的做微调.这样个人觉得,开发成本 ...

  7. 2023年 CISO 需要高度关注的任务和趋势

    在过去的几年中,企业一直忙于应对远程办公模式下的安全要求.展望2023年,疫情局面将与过去3年大不相同.根据目前的趋势,未来一年的网络攻击的数量和严重程度都将增加,这将对各规模企业,尤其是未做好准备的 ...

  8. 十大 CI/CD 安全风险(二)

    在上一篇文章中,我们主要介绍了 CI/CD 中流程控制机制不足和身份及访问管理不足两大安全风险,并为企业及其开发团队在缓解相应风险时给出了一些建议.今天我们将继续介绍值得企业高度关注的 CI/CD 安 ...

  9. byte[] 数组,创建的时候赋初始值

    C# //创建一个长度为10的byte数组,并且其中每个byte的值为0x08. byte[] myByteArray = Enumerable.Repeat((byte)0x08, 10).ToAr ...

  10. 你真的了解token续期嘛?

    Spring Boot + Vue中的Token续签机制 在现代的全栈应用开发中,Spring Boot作为后端框架和Vue.js作为前端框架的组合非常流行.在这种架构中实现Token续签是保障应用安 ...