UEKカーネルでの透過的なHugePagesの設定および無効化
UEKカーネル・バージョンに応じて、透過的なHugePagesをいつ設定するか、また透過的なHugePagesをいつ無効にするかについて学習します。
- 透過的なHugePagesをmadviseに設定
透過的なHugePagesメモリーは、Oracle Linuxではデフォルトで有効になっています。ただし、パフォーマンスを最適化するために、インストールを開始する前に、UEK7以降のカーネルを実行しているすべてのOracle Databaseサーバーで透過的なHugePagesをmadvise
に設定することをお薦めします。 - 透過的なHugePagesの無効化
UEK7より前のUEKリリースを実行しているOracle Databaseサーバーでは、インストールを開始する前に透過的なHugePagesを無効にすることをお薦めします。
透過的なHugePagesをmadviseに設定
透過的なHugePagesメモリーは、Oracle Linuxでデフォルトで有効になります。ただし、パフォーマンスを最適化するために、インストールを開始する前に、UEK7以降のカーネルを実行しているすべてのOracle Databaseサーバーで透過的なHugePagesをmadvise
に設定することをお薦めします。
Oracle Database Preinstallation RPMをインストールすると、UEK7以降のカーネルを実行しているすべてのOracle Databaseサーバーで透過的なHugePagesがmadvise
に設定されます。
透過的なHugePagesでmadvise
を設定するには:
透過的なHugePagesの無効化
UEK7より前のUEKリリースを実行しているOracle Databaseサーバーでは、インストールを開始する前に透過的なHugePagesを無効にすることをお薦めします。
透過的なHugePagesメモリーが標準のHugePagesメモリーと異なるのは、カーネルのkhugepaged
スレッドが実行時にメモリーを動的に割り当てるためです。標準のHugePagesメモリーは起動時に事前割当てされ実行中には変更されません。
ノート:
透過的なHugePagesがUEK2カーネルおよびそれ以降のUEKカーネルで無効になっていても、Linuxシステムでは透過的なHugePagesをデフォルトで有効にすることができます。透過的なHugePagesメモリーは、Oracle Linux 6以降、Red Hat Enterprise Linux 6以降、SUSE 11以降のカーネルでデフォルトで有効になります。
透過的な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を無効にするには:
-
Oracle Linux 7、Oracle Linux 8、Red Hat Enterprise Linux 7およびRed Hat Enterprise Linux 8の場合は、
/etc/default/grub
ファイル内でtransparent_hugepage=neverパラメータを追加または変更します。transparent_hugepage=never
たとえば:GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never" GRUB_DISABLE_RECOVERY="true"
ノート:
このファイル名は、オペレーティング・システムによって異なる場合があります。使用するオペレーティング・システムのドキュメントで正確なファイル名および透過的なHugePagesを無効化するステップを確認します。 -
grub2–mkconfig
コマンドを実行してgrub.cfg
ファイルを再生成します。# grub2-mkconfig -o /boot/grub2/grub.cfg
-
システムを再起動して変更を確定します。