LinuxでのHugePagesの構成
HugePagesは、Linuxカーネルに統合された機能です。Oracle Databaseでは、HugePagesを使用すると、オペレーティング・システムによるページ状態のメンテナンスが減り、トランスレーション・ルックアサイド・バッファ(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ファイルの
memlock設定を編集します。memlock設定をKB単位で指定します。HugePagesメモリーを有効にする場合は、ロックされた最大メモリー制限を現在のRAMの90%以上に設定し、HugePagesを無効にする場合は、3145728KB (3GB)以上に設定します。たとえば、64GBのRAMが搭載されている場合は、次のエントリを追加してメモリー内にロックされるアドレス空間の上限値を大きくします。
oracle soft memlock 60397977 oracle hard memlock 60397977memlockの値をSGA要件よりも大きく設定することもできます。
ノート:
Exadataシステムでは、memlock設定をunlimitedとして指定します。 -
oracleユーザーとして再度ログインし、ulimit -lコマンドを実行して新しいmemlock設定を確認します。$ ulimit -l 60397977 -
次のコマンドを実行して、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=gidgidは、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という名前のテキスト・ファイルを作成します。My Oracle Supportノート401749.1を参照して、
hugepages_settings.shスクリプトを作成します。 -
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