このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

9.2 Oracle DatabaseでのHugePagesの構成

この項のステップでは、1つ以上のOracle Databaseインスタンスが稼働する64ビットのOracle LinuxシステムでHugePagesを構成します。

HugePagesを構成するには:

  1. /etc/security/limits.confに構成されているmemlockのKB単位のsoftおよびhardの値が、インストールされているメモリーの容量より若干少ないことを確認します。 たとえば、システムに64GBのRAMが存在する場合、次に示す値が適切です。

    soft memlock 60397977
    hard memlock 60397977

  2. Oracleアカウント所有者(通常はoracle)としてログインし、次のコマンドを使用してmemlockの値を確認します。

    $ ulimit -l
    60397977

  3. システムでOracle Database 11g以上を実行している場合、初期化パラメータmemory_targetおよびmemory_max_targetの両方の値を0に設定してAMMを無効にします。

    Database Configuration Assistant (DBCA)でデータベースを作成した場合のデフォルトであるサーバー・パラメータ・ファイルを使用してOracle Databaseインスタンスを起動する場合、SQLプロンプトで次のコマンドを入力します。

    SQL> alter system set memory_target=0;
    System altered.
    SQL> alter system set memory_max_target=0;
    System altered.

    テキストの初期化パラメータ・ファイルを使用してOracle Databaseインスタンスを起動する場合、ファイルを手動で編集して次のエントリを含めます。

    memory_target = 0
    memory_max_target = 0

  4. 本番システムで実行される場合と同様にすべてのOracle Databaseインスタンス(自動ストレージ管理(ASM)インスタンスを含む)が実行されていることを確認します。

  5. 次の内容(My Oracle Support (MOS)ノート401749.1から取得)を含むファイル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.
    # 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'}`
    # Start from 1 pages to be on the safe side and guarantee 1 free HugePage
    NUM_PG=1
    # Cumulative number of pages required to handle the running shared memory segments
    for SEG_BYTES in `ipcs -m | awk {'print $5'} | 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
    # 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  

  6. ファイルを実行可能にし、実行してvm.nr_hugepagesカーネル・パラメータの推奨値を計算します。

    $ chmod u+x ./hugepages_setting.sh  
    $ ./hugepages_settings.sh
    .
    .
    .
    Recommended setting: vm.nr_hugepages = 22960

  7. rootとして、ファイル/etc/sysctl.confを編集し、vm.nr_hugepagesパラメータの値を推奨値に設定します。

    vm.nr_hugepages = 22960

  8. すべてのデータベース・インスタンスを停止してシステムを再起動します。

システムを再起動したら、データベース・インスタンス(ASMインスタンスを含む)が起動していることを確認し、次のコマンドを使用してヒュージ・ページの状態を表示します。

# grep ^Huge /proc/meminfo
HugePages_Total:   22960
HugePages_Free:     2056
HugePages_Rsvd:     2016
HugePages_Surp:        0
Hugepagesize:       2048 kB

HugePages_Freeの値はHugePages_Totalの値より小さくし、HugePages_Rsvdの値は0 (ゼロ)より大きくする必要があります。 ページはデータベース・インスタンスにより必要に応じて動的かつ予防的に割り当てられるため、Hugepages_Free値とHugePages_Rsvd値の合計は、通常、合計SGAサイズより小さくなります。

後でシステム・メモリーの容量を変更するか、データベース・インスタンスを追加または削除するか、データベース・インスタンスのSGAのサイズを変更する場合、hugepages_settings.shを使用してvm.nr_hugepagesの値を再計算し、/etc/sysctl.confの設定を再調整して、システムを再起動します。