サポートされている RDS for Oracle インスタンスで HugePages をオンにする - Amazon Relational Database Service

サポートされている RDS for Oracle インスタンスで HugePages をオンにする

Amazon RDS for Oracle は、データベースのスケーラビリティを増大する Linux Kernel の HugePages をサポートしています。HugePages により、ページのテーブルを小さくし、メモリ管理の CPU 経過時間を減少することで、大規模なデータベースインスタンスのパフォーマンスを向上できます。詳細については、Oracle ドキュメントの「HugePages の概要」を参照してください。

HugePages は、RDS for Oracle の次のバージョンとエディションで使用できます。

use_large_pages パラメータは、DB インスタンスで HugePages を有効にするかどうかを制御します。このパラメータに設定できる値は、ONLYFALSE、および {DBInstanceClassHugePagesDefault} です。Oracle のデフォルト DB パラメータグループでは、use_large_pages パラメータが {DBInstanceClassHugePagesDefault} に設定されます。

DB インスタンスで HugePages を自動的に有効にするかどうかを制御するには、DBInstanceClassHugePagesDefault 式の可変をパラメータグループで使用します。値は次のように決定されます。

  • 以下の表に示す DB インスタンスクラスの場合、DBInstanceClassHugePagesDefault はデフォルトで常に FALSE と評価されます。use_large_pagesFALSE と評価されます。DB インスタンスクラスのメモリが 14 GiB 以上であれば、これらの DB インスタンスクラス用に HugePages を手動で有効化できます。

  • 以下の表に示していない DB インスタンスクラスで、DB インスタンスクラスのメモリが 14 GiB 未満の場合は、DBInstanceClassHugePagesDefault は常に FALSE と評価されます。また、use_large_pagesFALSE と評価されます。

  • 以下の表に示していない DB インスタンスクラスで、インスタンスクラスのメモリが 14 GiB 以上、100 GiB 未満の場合は、DBInstanceClassHugePagesDefault はデフォルトで TRUE と評価されます。また、use_large_pagesONLY と評価されます。HugePages を手動で無効にするには、use_large_pagesFALSE に設定します。

  • 次の表に示していない DB インスタンスクラスで、インスタンスクラスのメモリが 100 GiB 以上の場合は、DBInstanceClassHugePagesDefault は常に TRUE と評価されます。また、use_large_pagesONLY と評価され、HugePages を無効にすることはできません。

HugePages は、以下の DB インスタンスクラスに対してはデフォルトで有効になりません。

DB インスタンスクラスファミリー HugePages がデフォルトで有効になっていない DB インスタンスクラス

db.m5

db.m5.large

db.m4

db.m4.large、db.m4.xlarge、db.m4.2xlarge、db.m4.4xlarge、db.m4.10xlarge

db.t3

db.t3.micro、db.t3.small、db.t3.medium、db.t3.large

DB インスタンスクラスの詳細については、「DB インスタンスクラスのハードウェア仕様」を参照してください。

新規または既存の DB インスタンスで HugePages を手動で有効にするには、use_large_pages パラメータを ONLY に設定します。Oracle 自動メモリ管理 (AMM) では HugePages を使用できません。use_large_pages パラメータを ONLY に設定するには、memory_targetmemory_max_target の両方を 0 に設定する必要もあります。DB インスタンスの DB パラメータを設定する詳細については、「Amazon RDS のパラメータグループ」を参照してください。

sga_targetsga_max_sizepga_aggregate_target パラメータも設定できます。システムグローバルエリア (SGA) とプログラムグローバルエリア (PGA) のメモリパラメータを設定する場合には、値をまとめて追加します。この合計を使用可能なインスタンスメモリ (DBInstanceClassMemory) から減算して、HugePages の割当量を超える空きメモリを判断します。使用可能なインスタンスメモリ全体の少なくとも 10% または 2 GiB のどちらか少ない方を空きメモリとして残す必要があります。

パラメータを設定したら、DB インスタンスを再起動して変更を有効にする必要があります。詳細については、「 DB インスタンスの再起動」を参照してください。

注記

Oracle DB インスタンスは、フェイルオーバーなしでインスタンスが再起動されるまで、SGA 関連の初期化パラメータへの変更が延期されます。Amazon RDS コンソールで [Reboot (再起動)] を選択しますが、[Reboot with failover (フェイルオーバーありで再起動)] を選択しないでください。AWS CLI で、reboot-db-instance パラメータを指定して --no-force-failover コマンドを呼び出します。DB インスタンスは、フェイルオーバー中、またはインスタンスを再起動させる他のメンテナンスオペレーション中に、SGA 関連のパラメータを処理しません。

HugePages を手動で有効化する場合の HugePages のパラメータ設定の例を次に示します。必要に応じて値を設定してください。

memory_target = 0 memory_max_target = 0 pga_aggregate_target = {DBInstanceClassMemory*1/8} sga_target = {DBInstanceClassMemory*3/4} sga_max_size = {DBInstanceClassMemory*3/4} use_large_pages = ONLY

パラメータグループに以下のパラメータ値を設定したとします。

memory_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4}) memory_max_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4}) pga_aggregate_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0) sga_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0) sga_max_size = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0) use_large_pages = {DBInstanceClassHugePagesDefault}

パラメータグループは、100 GiB 未満のメモリを持つ db.r4 DB インスタンスクラスによって使用されます。これらのパラメータ設定と use_large_pages{DBInstanceClassHugePagesDefault} に設定した場合、HugePages は db.r4 インスタンスで有効になります。

別の例として、パラメータグループに以下のパラメータ値を設定した場合を考えます。

memory_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4}) memory_max_target = IF({DBInstanceClassHugePagesDefault}, 0, {DBInstanceClassMemory*3/4}) pga_aggregate_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*1/8}, 0) sga_target = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0) sga_max_size = IF({DBInstanceClassHugePagesDefault}, {DBInstanceClassMemory*3/4}, 0) use_large_pages = FALSE

パラメータグループは、メモリが 100 GiB 未満の DB インスタンスクラス db.r4 と db.r5 インスタンスの両方で使用されます。これらのパラメータ設定では、db.r4 および db.r5 インスタンスで HugePages が無効になります。

注記

このパラメータグループをメモリが 100 GiB 以上の db.r4 DB インスタンスクラス、または db.r5 DB インスタンスクラスで使用すると、FALSEuse_large_pages 設定はオーバーライドされ、ONLY に設定されます。この場合、オーバーライドに関する通知がユーザーに送信されます。

DB インスタンスで HugePages が有効になると、拡張モニタリングを有効にして HugePages の情報を表示できます。詳細については、「拡張モニタリングを使用した OS メトリクスのモニタリング」を参照してください。