zoukankan      html  css  js  c++  java
  • 大页(huge pages) 三大系列 ---计算大页配置参数

    使用以下shell 脚本来计算大页配置参数,确保使用脚本实例之前的数据已经开始,

    如果数据库的版本号11g,确认是否使用自己主动的内存管理(AMM) 

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    #!/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 HugePagesconfiguration, 
       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 notsetup 
       (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 wherethe script is being executed."
        exit 1
    fi

    # Initialize the counter
    NUM_PG=0

    # Cumulative number of pages required to handle the running shared memorysegments
    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 sharedmemory segments allocated for 
    HugePages configuration. HugePages can only be used for shared memorysegments 
    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 notconfigured"
        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

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    爬虫header和cookie
    爬虫代理squid
    response对象
    pyspider中内容选择器常用方法汇总
    非阻塞 sleep
    post请求体过大导致ngx.req.get_post_args()取不到参数体的问题
    常用lua代码块
    nginx静态文件缓存的解决方案
    lua-resty-gearman模块
    非在线PDF转图片!!!
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4615073.html
Copyright © 2011-2022 走看看