[转帖]Oracle性能优化-大内存页配置
一、为什么需要大页面?
如果您有一个大的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
[转帖]Oracle性能优化-大内存页配置的更多相关文章
- Oracle性能优化之内存管理
Oracle实例中的内存使用分为两类:程序全局区(program global area, PGA)和系统全局区(system global area, SGA).前者专门供每个会话使用,后者由所有O ...
- 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage) 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...
- 转://Linux大内存页Oracle数据库优化
PC Server发展到今天,在性能方面有着长足的进步.64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server:在Intel和AMD两大处理器巨头的努力下,x86 C ...
- 降低磁盘IO使Oracle性能优化(转)
文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- redis性能优化、内存分析及优化
redis性能优化.内存分析及优化 1.优化网络延时 2.警惕执行时间长的操作 3.优化数据结构.使用正确的算法 4.考虑操作系统和硬件是否影响性能 5.考虑持久化带来的开销 5.1 RDB 全量持久 ...
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- jvm性能优化及内存分区
jvm性能优化及内存分区 2012-09-17 15:51:37 分类: Java Some of the default values for Sun JVMs are listed below. ...
- Android 性能优化之内存泄漏检测以及内存优化(中)
https://blog.csdn.net/self_study/article/details/66969064 上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析, ...
随机推荐
- 初探Git:理解和使用版本控制的魔法
遥远的古代,有一位美丽的仙女叫做嫦娥.她的丈夫后羿获得了令人长生不老的鹿骨露.一天,嫦娥在好奇心的驱使下,独自偷喝了这瓶仙药. 喝下仙药的瞬间,嫦娥发现自己开始飘起,越飘越高,最后飘向了月亮.嫦娥惊慌 ...
- table中td超出内容隐藏,鼠标悬停全部显示(完整版,含js代码)
一.CSS语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象内文本溢出时不显示省略标记(...),而是将溢出的部分裁切掉. el ...
- CSS之动画
一.动画 动画类型 CSS3 可以创建动画,它可以取代许多网页动画图像.Flash 动画和 JavaScript 实现的效果. transform属性可以定义一些主要的动画属性, translate: ...
- 2023-05-14:你的赛车可以从位置 0 开始,并且速度为 +1 ,在一条无限长的数轴上行驶, 赛车也可以向负方向行驶, 赛车可以按照由加速指令 ‘A‘ 和倒车指令 ‘R‘ 组成的指令序列自动行驶
2023-05-14:你的赛车可以从位置 0 开始,并且速度为 +1 ,在一条无限长的数轴上行驶, 赛车也可以向负方向行驶, 赛车可以按照由加速指令 'A' 和倒车指令 'R' 组成的指令序列自动行驶 ...
- Windows10安装WSL2和Ubuntu的过程
因为在Windows10环境中安装了2个相同的包导致冲突,所以想到了通过WSL2+Docker的方式进行编程开发.因为Docker Desktop直接安装就行了,不做介绍.本文主要介绍WSL2和U ...
- 互联网公司五八同城(58.com)研发效能团队建设之路
这是「二三线中型互联网公司研发效能团队规模.职能划分和优劣势分析」的一个铺垫,一个背景.因为如果不写此篇,大家可能仅得到一些经验总结,恐怕难以获取当时为啥做出那个决定.做决定要有上下文环境,要有场景才 ...
- 开源的代名词「GitHub 热点速览」
当开发者谈论开源时,通常会想到 GitHub,它不仅仅是一个代码托管平台,更是一个汇聚了全球开发者的社交中心.过去,开发者发布一款软件后,都是在自己的小圈子里默默努力和交流,现在通过 GitHub 平 ...
- 云小课|MRS基础操作之配置DataNode容量均衡
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:当HDFS集群出现 ...
- 教你如何在Python中读,写和解析CSV文
摘要:在这篇文章中关于"在Python如何阅读CSV文件"中,我们将学习如何读,写和解析的CSV文件的Python. 您知道将表格数据存储到纯文本文件背后的机制是什么吗?答案是CS ...
- 如何配置Apple推送证书 push证书
转载:如何配置Apple推送证书 push证书 想要制作push证书,就需要使用快捷工具appuploader工具制 作证书,然后使用Apple的推送功能配置push证书,就可以得到了.PS:pu ...