このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。
この項のステップでは、1つ以上のOracle Databaseインスタンスが稼働する64ビットのOracle LinuxシステムでHugePagesを構成します。
HugePagesを構成するには:
/etc/security/limits.conf
に構成されているmemlock
のKB単位のsoft
およびhard
の値が、インストールされているメモリーの容量より若干少ないことを確認します。 たとえば、システムに64GBのRAMが存在する場合、次に示す値が適切です。soft memlock 60397977 hard memlock 60397977
Oracleアカウント所有者(通常は
oracle
)としてログインし、次のコマンドを使用してmemlock
の値を確認します。$
ulimit -l
60397977システムで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
本番システムで実行される場合と同様にすべてのOracle Databaseインスタンス(自動ストレージ管理(ASM)インスタンスを含む)が実行されていることを確認します。
次の内容(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
ファイルを実行可能にし、実行して
vm.nr_hugepages
カーネル・パラメータの推奨値を計算します。$
chmod u+x ./hugepages_setting.sh
$./hugepages_settings.sh
. . . Recommended setting: vm.nr_hugepages = 22960root
として、ファイル/etc/sysctl.conf
を編集し、vm.nr_hugepages
パラメータの値を推奨値に設定します。vm.nr_hugepages = 22960
すべてのデータベース・インスタンスを停止してシステムを再起動します。
システムを再起動したら、データベース・インスタンス(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
の設定を再調整して、システムを再起動します。