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
    # 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
    ",$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




  • 相关阅读:
    location url 反向代理到来机的其它端口 gitlab
    PortSentry是入侵检测工具中配置最简单、效果最直接的工具之一
    iptables下state的4种形式
    windows  远程桌面命令 mstsc
    linux中解决SSH连接慢问题 关键点GSSAPIAuthentication
    无密码登录远程主机
    openfire 服务器名称:后面的黄色叹号
    ssh -v root@xxxxx 显示登录的细节
    mysql 只导数据不含表结构
    磁盘空间占满inode结点没用完 并删除了文件但是释放不了
  • 原文地址:https://www.cnblogs.com/haoxiaoyu/p/8571867.html
Copyright © 2011-2022 走看看