プライマリ・コンテンツに移動
Oracle® Grid Infrastructureインストレーション・ガイド
11gリリース2 (11.2) for Linux
B56271-15
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

C 大容量メモリーを最適化する構成

この付録では、HugePagesを使用して、Linuxオペレーティング・システムのラージ・ページ表によりメモリーを最適化するための構成情報について説明します。内容は次のとおりです。

C.1 HugePagesの概要

HugePagesを構成することを選択できます。いくつかの用途では、HugePagesによって高度なパフォーマンスが得られます。ただし、この機能は高度な構成オプションです。Oracle RACでは必須ではありません。

この項では、HugePagesの概要について説明します。RPMや構成情報は扱いません。構成に必要な作業は、システムのカーネル・ディストリビューションとハードウェアによって異なります。クラスタ・ノードでHugePagesを使用するように構成する場合の詳細は、ご使用のディストリビューションのドキュメントおよびOracle Technology Network(OTN)とMy Oracle Supportを参照してください。

C.1.1 HugePagesの機能

HugePagesは、リリース2.6でLinuxカーネルに統合された機能です。これは、より大きなページを扱うための手段であり、大容量のメモリーで動作する場合に有効です。32-bitおよび64-bitの両方の構成で使用できます。HugePagesのサイズは、カーネル・バージョンとハードウェア・アーキテクチャに応じて、2MBから256MBになります。Oracle Databaseでは、HugePagesを使用することにより、オペレーティング・システムでのページの状態のメンテナンス作業が削減され、TLB(アドレス変換バッファ)ヒット率が増加します。

HugePagesを使用しない場合、オペレーティング・システムではページごとに4KBのメモリーが保持され、メモリーがSGAに割り当てられると、そのページのライフサイクル(使用済、空き、プロセスにマップ済など)がオペレーティング・システム・カーネルによって最新のものに更新される必要があります。

HugePagesを使用した場合、各ページ表のエントリは2MBから256MBのページを指しているため、オペレーティング・システムのページ表(仮想メモリーから物理メモリーへのマッピング)は小さくなります。また、カーネルでライフサイクルを監視する必要があるページの数が削減されます。

たとえば、64-bitのハードウェアでHugePagesを使用する場合、256MBのメモリーをマップするには、1ページの表エントリ(PTE)が必要です。HugePagesを使用しないで256MBのメモリーをマップするには、256MB×1024KB/4KB=65536PTEが必要です。

C.2 HugePages構成に対する制限

HugePagesを使用するには、Grubを構成して、システムの起動時にHugePagesにメモリーを割り当てる必要があります。ページング領域が予約されると、必要に応じてHugePagesを使用できます。ただし、システムの起動時にHugePagesに必要な領域をメモリー内に確保できないときは、HugePagesの割当ては失敗する可能性があります。

システム管理者が使用可能なページ数またはプール・サイズを変更してHugePages構成を変更しないかぎり、システムの起動後にHugePagesを割当てまたは解放することはできません。

C.3 透過的なHugePagesの無効化

Red Hat Enterprise Linux 6、SUSE Linux Enterprise Server 11、および以前のリリースのOracle Linux Unbreakable Enterprise Kernel 2 (UEK2)に付属するOracle Linux 6では、透過的なHugePagesメモリーがデフォルトで有効になっています。それ以降のリリースのOracle Linux UEK2カーネルでは、透過的なHugePagesメモリーは無効になっています。

透過的なHugePagesを使用すると、実行中にメモリー割当ての遅延が生じます。パフォーマンスの問題を回避するために、透過的なHugePagesはすべてのOracle Databaseサーバーで無効にすることをお薦めします。かわりに標準のHugePagesを使用すると、パフォーマンスが向上します。

透過的なHugePagesメモリーが標準のHugePagesメモリーと異なるのは、カーネルのkhugepagedスレッドが実行時にメモリーを動的に割り当てるためです。標準のHugePagesメモリーは起動時に事前割当てされ実行中には変更されません。


関連項目:

HugePagesの詳細は、『Oracle Database管理者リファレンスfor Linux and UNIX-Based Operating Systems』を参照してください。

透過的なHugePagesメモリーが有効かどうかを確認するには、rootユーザーとして次のコマンドのいずれかを実行します。

Red Hat Enterprise Linuxカーネルの場合:

# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

その他のカーネルの場合:

# cat /sys/kernel/mm/transparent_hugepage/enabled

次に示すのは、[always]フラグを有効にして使用している透過的なHugePagesメモリーを示す出力例です。

[always] never

注意:

透過的なHugePagesをカーネルから削除した場合、/sys/kernel/mm/transparent_hugepageまたは/sys/kernel/mm/redhat_transparent_hugepageファイルは存在しません。

透過的なHugePagesを無効にするには、次の手順を実行します。

  1. /etc/grub.confファイルで、カーネル・ブートの行に次のエントリを追加します。

    transparent_hugepage=never
    

    次に例を示します。

    title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/   transparent_hugepage=never
            initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img
    
  2. システムを再起動して変更を確定します。