7.4. Transparent Huge Page の設定
Transparent Huge Page (THP) は、HugeTLB の代わりとなるソリューションです。THP では、カーネルにより自動的に Huge Page がプロセスに割り当てられるため、Huge Page は手動で予約する必要がありません。
THP 機能には、システム全体とプロセスごとの 2 つの動作モードがあります。THP がシステム全体で有効な場合、カーネルは Huge Page を任意のプロセスに割り当てようとします (Huge Page を割り当てることができ、プロセスが大規模な連続仮想メモリー領域を使用しているとき)。THP がプロセスごとに有効になっている場合、カーネルは、
madvise()
システムコールで指定された個々のプロセスのメモリー領域にのみ Huge Page を割り当てます。
THP 機能では 2-MB のページのみがサポートされることに注意してください。Transparent Huge Page はデフォルトで有効になります。現在のステータスを確認するには、次のコマンドを実行します。
# cat /sys/kernel/mm/transparent_hugepage/enabled
Transparent Huge Page を有効にするには、次のコマンドを実行します。
# echo always > /sys/kernel/mm/transparent_hugepage/enabled
アプリケーションが必要とする以上のメモリーリソースを割り当てるのを防ぐには、Huge Page をシステム全体で無効にし、次のコマンドを実行して MADV_HUGEPAGE madvise リージョン内部でのみ Huge Page を有効にします。
# echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
Transparent Huge Page を無効にするには、次のコマンドを実行します。
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
短期的な割り当てのレイテンシーが低くなると、有効期間の長い割り当てで最適パフォーマンスをすぐに実現するよりも優先度が高くなります。このような場合、THP を有効にしたままにして
直接圧縮
を 無効 にできます。
直接圧縮は、Huge Page の割り当て中の同期メモリー圧縮です。直接圧縮を無効にすると、メモリーの保存は保証されませんが、頻繁なページ障害の発生時にレイテンシーが高くなる可能性が減ります。ワークロードが THP から著しく異なる場合に、パフォーマンスが低下する点に注意してください。直接圧縮を無効にするには、次のコマンドを実行します。
# echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
Transparent Huge Page の包括的な情報については、
kernel-doc
パッケージのインストール後に利用できる /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/transhuge.txt ファイルを参照してください。