Linux系统下快速配置HugePages的完整步骤
作者:AlfredZhao 发布时间:2023-07-24 19:13:12
标签:hugepages,linux,配置
前言
关于Linux系统的HugePages与Oracle数据库优化,可以参考熊爷之前的文章,相关概念介绍的非常清晰:
Linux大内存页Oracle数据库优化
本文旨在Linux系统上快速配置HugePages
测试环境:RHEL6.8 + 512G物理内存;Oracle 11.2.0.4 SGA=400G.
1.设置memlock无限制
在/etc/security/limits.conf配置文件中,设置oracle用户memlock无限制:
vi /etc/security/limits.conf
oracle soft memlock unlimited
oracle hard memlock unlimited
2.设置合理的vm.nr_hugepages
在/etc/sysctl.conf配置文件中,设置合理的vm.nr_hugepages值。
运行MOS 401749.1提供的hugepages_settings.sh脚本,直接可以得到建议值。
hugepages_settings.sh脚本内容:
#!/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 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..."
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.2') echo "Kernel version $KERN is not supported. Exiting." ;;
'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" ;;
esac
# End
直接运行脚本即可得到对应的建议:
--当启动的实例设置SGA_MAX_SIZE=12G,给出建议:
Recommended setting: vm.nr_hugepages = 6148
--当启动的实例设置SGA_MAX_SIZE=400G,给出建议:
Recommended setting: vm.nr_hugepages = 204805
--当没有启动实例时,会报错提示:
***********
** ERROR **
***********
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
我这里将建议值vm.nr_hugepages = 204805追加到/etc/sysctl.conf配置文件中,然后执行sysctl -p生效配置。
3.确认HugePages设置成功
查看关于HugePages的信息,注意HugePages_Total值是之前设置的204805:
grep Huge /proc/meminfo
# grep Huge /proc/meminfo
AnonHugePages: 0 kB
HugePages_Total: 204805
HugePages_Free: 168475
HugePages_Rsvd: 168471
HugePages_Surp: 0
Hugepagesize: 2048 kB
数据库在启动时,对应alert日志中会有“Large Pages Information”内容:
Wed Nov 14 14:38:12 2018
Starting ORACLE instance (normal)
************************ Large Pages Information *******************
Per process system memlock (soft) limit = UNLIMITED
Total Shared Global Region in Large Pages = 400 GB (100%)
Large Pages used by this instance: 204801 (400 GB)
Large Pages unused system wide = 4 (8192 KB)
Large Pages configured system wide = 204805 (400 GB)
Large Page size = 2048 KB
********************************************************************
至此可以确认HugePages设置成功。
来源:http://www.cnblogs.com/jyzhao/p/9961336.html


猜你喜欢
- 在今天的文章中我们将使用一种完全不同的方式,来实现对新的Windows Server 2008高级防火墙的类似配置,就是使用netsh这个工
- 我是一个菜鸟站长。做站时间不长。满打满算,刚刚8个月,也想一些前辈说的一样,每天晚上12点以后睡觉。早上起来的第一件事情就是 去百度site
- 在11月5日举行的2009第二届易观新媒体营销年会上,51.com副总裁程悦就51.com的发展进行了分享,并表示在病毒式传播中获得了很大成
- 本节描述如何在Docker默认网桥中配置容器DNS。 当您安装Docker时,就会自动创建一个名为bridge 的桥接网络。注意 : Doc
- 如果要允许用户在站点中上载或下载文件,就需要在 Web 服务器上设置 FTP。无论站点是位于 Intranet 还是位于 Internet
- 大家如果在 Ubuntu 系统中出现中文乱码,可能是因为系统没有配置中文字符编码。解决方法Ubuntu 系统的字符编码保存在文件 /var/
- Godaddy主机用户怎样创建自己选择的新名字作为目录名的新目录呢?首先. 登陆你的Account Manager.第二. 在My Prod
- 10月2日消息,据国外媒体报道,微软公司和Adobe系统公司近日也加入了Google的行列,它们都推出了无需安装任何软件的文字处理器。微软公
- 我们现在如果认为微博客很难获得盈利(或者说是可观的收入),是因为我们的思考陷入思维定势,认为Twitter现在的盈利是怎样的,中国的微博客也
- 对一个地方行业类门户网站来说,如果保持一个稳定的流量是个很重要的问题。很多类似的站点都存在着今天IP5000,明天有可能IP2000,后天1
- 现在全国都在清理整顿CN域名,新网互联就发出了“关于落实对已注册cn域名开展实名制清查的紧急通知”,昨天提供了上传域名资料的方法,聚友在这边
- 首先我说一下,我们为什么要原创,明确了原创的目的,我想才能对SEO的原创有所准确及近精确的理解,不至让大家走很多弯路。目前的搜索对原创文章的
- 11月25消息,百度推出一款功能强大的智能手机输入法v1.0 Beta,其基于百度搜索技术的强大词库,内置百度搜索框,将上网搜索步骤减少至最
- 如果有某个页面其中都多个链接指向一个域名,Google只会索引一个链接,最先发现这一点的是Michael Van DeMar, 这一点受到了
- Service Unavailable是一种系统的警告提示。如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池
- echo 在linux帮助文档的描述是显示一行文本,类似于python和java等编程语言中的print语句,实际上它的作用不仅仅如此。可以
- 1、配置Ftp允许Root登录修改/etc/ftpusers,去掉root2、如果希望实现Root用户Ftp后可以切换到/目录一般用户只能切
- 架设一台FTP服务器其实很简单。首先,要保证你的机器能上网,而且有不低于ADSL 512Kbps的网络速度。其次,硬件性能要能满足你的需要。
- 为了秀出最完美的自拍秀,通常都要动辄几个小时的化妆美容,好不麻烦呀。而且因为化妆技术不好,彩妆的效果不尽人意。郁闷,还好,我发现了一款可以给
- 相信每个人都对 回收站(trashcan)很熟悉,因为无论是对 Linux 用户,还是 Windows 用户,或者 Mac 用户来说,它都很