zoukankan      html  css  js  c++  java
  • 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 
    # 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. 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 ",$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" ;;
    esac

    # End
  • 相关阅读:
    Windows Server2016环境中安装Oracle12c数据库
    centos7 安装Oracle19C 数据库
    centos7 磁盘分区以及磁盘挂载
    PHP日常开发技巧散记
    代码压缩工具 webpack安装与入门使用【初级】
    程序员修炼之道系列 | 使用曳光弹找到目标
    程序员修炼之道系列 | 不要冲出前灯范围
    程序员修炼之道系列 | 敏捷估算
    程序员修炼之道系列 | “豆腐渣“工程竟然也能做原型
    官宣!禅道与极狐(GitLab)达成深度合作,携手推进开源开放DevOps生态
  • 原文地址:https://www.cnblogs.com/junnor/p/5048148.html
Copyright © 2011-2022 走看看