重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1508|回复: 0
打印 上一主题 下一主题

[Oracle] 使用hugepages_settings.sh的脚本来计算vm.nr_hugepages的值

[复制链接]
跳转到指定楼层
楼主
发表于 2018-5-3 17:29:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用Oracle提供的脚本hugepages_settings.sh的脚本来计算vm.nr_hugepages的值
首先要创建hugepages_settings.sh脚本
[oracle@strong ~]$ vi hugepages_settings.sh
  
[oracle@strong ~]$ more hugepages_settings.sh
  
#!/bin/bash
  
#
  
# hugepages_settings.sh
  
#
  
# Linux bash script to compute values for the
  
# recommended HugePages/HugeTLB configuration
  
#
  
# 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
    
  
# 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. 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.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" ;;
  
*) echo "Unrecognized kernel version  $KERN. Exiting." ;;
  
esac
  
  
# End
  
[oracle@strong ~]$ chmod +x hugepages_settings.sh
[oracle@strong ~]$ sh hugepages_settings.sh
This script is provided by Doc ID 401749.1 fromMy Oracle Support
(http://support.oracle.com) where it isintended to compute values for
the recommended HugePages/HugeTLB configurationfor the current shared
memory segments. Before proceeding with theexecution please note following:
* For ASM instance, it needs to configure ASMMinstead of AMM.
* The 'pga_aggregate_target' is outside the SGAand
you should accommodate this while calculatingSGA size.
* In case you changes the DB SGA size,
as the new SGA will not fit in the previousHugePages configuration,
it had better disable the whole HugePages,
start the DB with new SGA size and run thescript again.
And make sure that:
* Oracle Database instance(s) are up andrunning
* Oracle Database 11g Automatic MemoryManagement (AMM) is not setup
(See Doc ID 749851.1)
* The shared memory segments can be listed bycommand:
# ipcs -m
Press Enter to proceed...
Recommended setting: vm.nr_hugepages = 1028
[oracle@strong ~]$ ipcs -m
------ Shared Memory Segments --------
key       shmid      owner      perms     bytes      nattch     status     
0x00000000 3342351    oracle    640        16777216   26                     
0x00000000 3375120    oracle    640        2130706432 26                     
0x8c6b104c3407889    oracle     640       2097152    26                                                      

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-4-30 13:29 , Processed in 0.100278 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表