LinuxでのHugePagesの構成
HugePagesは、Linuxカーネルに統合された機能です。Oracle Databaseの場合、HugePagesを使用すると、ページ状態のオペレーティング・システム・メンテナンスが軽減され、Translation Lookaside Buffer(TLB)ヒット率が向上します。
ノート:
HugePagesサポートは、CONFIG_HUGETLBFS
およびCONFIG_HUGETLB_PAGE
構成オプションを使用して構築されたカーネルで利用できます。
合計メモリーの30%以上を標準ページ用、および合計メモリーの70%以下をHugePages用に予約することをお薦めします。
Oracle Databaseソフトウェア所有者(oracle)ユーザー・アカウントとそのすべてのグループが作成済であることを確認します。詳細は、「Oracle Database Preinstallation RPMによるOracle Linuxの自動構成」または「Oracleソフトウェア所有者ユーザーの作成」を参照してください。
HugePagesの使用の有効化
LinuxでHugePagesを有効にするには、次のステップを実行します:
-
次のように、カーネルでHugePagesがサポートされているかどうかを確認します。
$ grep Huge /proc/meminfo
-
/etc/security/limits.conf
ファイルのhard
およびsoft
memlock設定を編集して、memlock設定をunlimited
と指定します。ノート:
oracle
ユーザーの制限が/etc/security/limits.d
下のカスタム・ファイルに定義されている場合は、かわりにそのファイルを編集します。oracle soft memlock unlimited oracle hard memlock unlimited
-
oracle
ユーザーとして再度ログインし、次のようにulimit -l
コマンドを実行して新しいmemlock設定を確認します。$ ulimit -l unlimited
-
次のコマンドを実行して変数Hugepagesizeの値を表示します。
$ grep Hugepagesize /proc/meminfo
-
gid
(oracle
ユーザー・グループID)の値を確認します:# id oracle
出力は、次のようなものです。
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba), 54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54327(asmdba),54330(racdba)
gid
の値を書き留めておきます。 -
vm.hugetlb_shm_groupカーネル・パラメータ値を
gid
の値に設定します。# sysctl -w vm.hugetlb_shm_group=gid
gid
は、oracle
ユーザー・グループIDです。たとえば、gid
の値=54321です。システムの再起動後でも確実にこの値を使用できるようにするには、この設定を含む
vm.hugetlb_shm_group=gid/etc/sysctl.d/99-hugetlb-shm-group.conf
ファイルに次のエントリを追加します。
HugePagesの容量の構成
データベースに必要な数のHugePagesを構成するには、Oracle Databaseのインストールを完了してデータベースを作成した後に、このステップを実行します。
-
現行の共有メモリー・セグメントのHugePages構成の推奨値を計算するスクリプトを作成するには、次の手順を実行します:
-
hugepages_settings.sh
というテキスト・ファイルを作成します。hugepages_settings.sh
スクリプトの作成については、My Oracle Supportノート401749.1を参照してください。 -
次のように、
hugepages_settings.sh
ファイルの権限を変更します。$ chmod +x hugepages_settings.sh
-
-
hugepages_settings.sh
スクリプトを実行して、HugePages構成の値を計算します。$ ./hugepages_settings.sh
ノート:
このスクリプトを実行する前に、hugepagesを使用するすべてのデーターベースが稼働中であることを確認します。 -
次のカーネル・パラメータを設定します。
value
は、ステップ2で決定したHugePages値です。# sysctl -w vm.nr_hugepages=value
-
システムの再起動後に確実にHugePagesが割り当てられるようにするには、
/etc/sysctl.d/99-nr_hugepages.conf
ファイルに次のエントリを追加します。value
は、ステップ2で決定したHugePages値です。vm.nr_hugepages=value
ノート:
nr_hugepages
を使用してHugePages割当てを設定できない場合は、空きメモリーが断片化している可能性があります。サーバーを再起動するとHugepages割当てが有効になります。 -
次のコマンドを実行して、使用可能なHugePagesを確認します:
$ grep Huge /proc/meminfo
-
インスタンスを再起動します。
-
次のコマンドを実行して、使用可能なHugePages (1、2ページの空き)を確認します:
$ grep Huge /proc/meminfo