2.18 ラージ・メモリー・ページの使用によるExadataデータベース・サーバーのメモリー管理の最適化
システム・メモリーは、ページと呼ばれる単位を使用して編成されています。Linux x86ベースのシステムでは、1つの標準メモリー・ページは4 KB (4096バイト)です。そのため、512 GBのメモリーを搭載したシステムでは1億3,400万以上の標準メモリー・ページを管理する必要があり、1 TBのメモリーを搭載したシステムでは2億6,800万を超えるページを管理する必要があります。その結果、大量のメモリーが搭載されている最新のシステムの場合は、メモリー管理の基本的なタスクによってシステムのパフォーマンスに著しい影響がある可能性があり、ベアメタル・システムと仮想マシン(VM)の両方に影響します。
メモリー管理の負担を軽減するために、オペレーティング・システムを、ラージ・メモリー・ページ(Linuxではヒュージ・ページとも呼ばれる)を使用してシステム・メモリーの一部を管理するように構成できます。デフォルトでは、Linux上の各ラージ・メモリー・ページは2 MBであり、512個の標準メモリー・ページのかわりになります。たとえば、システムによって、134,000,000個を超える標準ページのかわりに262,144個のラージ・メモリー・ページを使用して、512 GBのメモリーを管理できます。
Oracle Exadataは、Oracle Database実行用に最適化されたエンジニアド・システムです。ExadataとOracle Databaseはどちらも、ラージ・メモリー・ページの使用に最適です。Oracle Databaseはシステム・グローバル領域(SGA)と呼ばれる共有メモリー・キャッシュを中心に設計されており、ExadataシステムにはTB単位のシステム・メモリーを含めることができます。そのことから、大規模かつ個別のSGAの使用や、単一システムでの多数のデータベースの統合が容易になります。
各データベースのSGAサイズはワークロード・タイプとボリュームによって異なる可能性がありますが、Oracleデータベースは、SGA全体がラージ・メモリー・ページにあるときに最適に機能します。ラージ・メモリー・ページの最適な数は、システム上で実行されているデータベースのSGAすべての総サイズに基づきます。たとえば、ラージ・ページ・サイズとして2 MBを使用する場合、50 GB (51200 MB)のSGAには、25600個のラージ・ページが必要になります(51200/2)。実際には、そのSGAの様々な部分のために新しいページを配置できるように、さらにいくつかのページが必要になります。
Oracle Databaseでは、SGAのためのラージ・メモリー・ページの使用を制御するために、USE_LARGE_PAGES
データベース初期化パラメータが使用されます。Exadataでのパフォーマンスと安定性を最大限に高めるため、必ずSGAにラージ・メモリー・ページを使用することをお薦めします。この推奨事項に従い、Oracle Database 19cリリース更新19.27とOracle Database 23aiリリース更新23.8以降では、データベースがExadata上で起動されるのは、SGAにラージ・メモリー・ページを使用するように構成されている場合のみです。
また、SGAについては、静的なLinuxヒュージ・ページを使用することをお薦めします。これは、Linuxカーネル・パラメータを設定することで構成され、システム・ブート時に割り当てられます。SGAに透過的ヒュージ・ページを使用することはお薦めしません。これは、システム・メモリーが断片化されているときや複数のデータベースが同時に起動されているときに、ラージ・メモリー・ページを動的に取得できない可能性があるためです。
そのため、Exadataでは、USE_LARGE_PAGES=ONLY
を設定することをお薦めします。また、Exadata自動化ツールを使用して作成されたすべての新規データベースは、デフォルトで、USE_LARGE_PAGES=ONLY
を指定して構成されます。これには、Oracle Exadata Deployment Assistant (OEDA)を使用して作成されたデータベースや、Oracle Cloud Infrastructure (OCI)にあるクラウドベースのExadataデプロイメント上に作成されたデータベースが含まれます。USE_LARGE_PAGES=ONLY
に設定したときは、データベースは、そのSGAを格納できる十分なラージ・ページがある場合のみ起動されます。この場合は、システム管理者が、すべてのデータベースを対象にするのに十分なラージ・ページを使用できるように、オペレーティング・システムのカーネル・パラメータを構成する必要があります。
また、Oracle Exadata System Softwareリリース25.1以降では、透過的ヒュージ・ページは、transparent_hugepage=madvise
を使用して、Oracle Linux UEK7 (またはそれ以降)を使用するExadataデータベース・サーバー(ベアメタル・サーバーおよび仮想マシン)で有効化されます。このLinuxカーネル設定により、互換性のあるアプリケーションで、動的に割り当てられたラージ・メモリー・ページを使用できるようになります。この設定を使用すると、Oracle Database 23ai以降では、データベース・バイナリの主要部分が、動的に割り当てられたラージ・メモリー・ページ内に保持されて、関連するメモリー管理操作のためのリソース使用率が最適化されます。ただし、それでもOracle DatabaseのSGAに透過的ヒュージ・ページを使用することはお薦めしません。