透過的なHugePagesの無効化

インストールを開始する前に、透過的なHugePagesを無効にすることをお薦めします。

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

注意:

透過的なHugePagesがUEK2カーネルおよびそれ以降のUEKカーネルで無効になっていても、Linuxシステムでは透過的なHugePagesをデフォルトで有効にすることができます。

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

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

透過的な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. Oracle Linux 6以前のリリースでは、/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

    Oracle Linux 7以上では、ファイル名はオペレーティング・システムにより異なります。使用するオペレーティング・システムのドキュメントで正確なファイル名および透過的なHugePagesを無効化するステップを確認します。

    例えば、Oracle Linux 7.3では、透過的HugePagesを無効化する手順には/etc/default/grubファイルの編集およびコマンドgrub2-mkconfigの実行が含まれます。

  2. システムを再起動して変更を確定します。