Red Hat Training

A Red Hat training course is available for RHEL 8

第33章 Huge Page の設定

物理メモリーは、ページと呼ばれる固定サイズのブロックで管理されます。Red Hat Enterprise Linux 8 でサポートされている x86_64 アーキテクチャでは、メモリページのデフォルトサイズは4 KB です。このデフォルトのページサイズは、さまざまなワークロードをサポートする Red Hat Enterprise Linux などの一般的なオペレーティングシステムに適しています。

ただし、特定のアプリケーションは、特定のケースで大きなページサイズを使用する利点を得られます。例えば、数百メガバイト、あるいは数十ギガバイトの大規模かつ比較的固定的なデータセットを扱うアプリケーションでは、4KBのページを使用するとパフォーマンスに問題が生じることがあります。このようなデータセットでは、膨大な量の4KBページが必要となり、OSやCPUのオーバーヘッドにつながる可能性があります。

本セクションでは、Red Hat Enterprise Linux 8 で利用可能なヒュージページとその設定方法を説明します。

33.1. 利用可能な Huge Page の機能

Red Hat Enterprise Linux 8 では、大規模なデータセットに対応するアプリケーションに Huge Page を使用し、このようなアプリケーションのパフォーマンスを向上できます。

以下は、Red Hat Enterprise Linux 8 でサポートされる Huge Page メソッドです。

HugeTLB pages

HugeTLB ページも静的なヒュージページと呼ばれます。HugeTLB ページを予約する方法は 2 つあります。

  • ブート時: メモリーが大幅に断片化されていないため、成功する可能性が高くなります。ただし、NUMA マシンでは、ページ数は NUMA ノード間で自動的に分割されます。ブート時のHugeTLBページの動作に影響を与えるパラメーターの詳細については、「ブート時にHugeTLBページを予約するためのパラメーター」と、これらのパラメーターを使用してブート時にHugeTLBページを設定する方法については、「ブート時にHugeTLBを設定する」を参照してください。
  • ランタイム時に: NUMA ノードごとにヒュージページを予約することができます。ランタイム予約がブートプロセスの早い段階で行われると、メモリーの断片化はより低くなります。起動時のHugeTLBページの動作に影響を与えるパラメーターの詳細については、「実行時にHugeTLBページを予約するためのパラメーター」、およびこれらのパラメーターを使用して起動時にHugeTLBページを設定する方法については、「実行時にHugeTLBを設定する」を参照してください。
Transparent HugePages (THP)

THP では、カーネルはヒュージページをプロセスに自動的に割り当てるため、静的な Huge Page を手動で予約する必要はありません。以下は、THP における動作の 2 つのモードです。

  • system-wide で、カーネルはヒュージページを割り当て、プロセスが連続している仮想メモリー領域を使用しているたびに Huge Page をプロセスに割り当てようと試みます。
  • プロセスごと: ここでは、カーネルは各プロセスのメモリー領域だけに割り当てるため、madvise() システムコールを使用して指定できるヒュージページを 1 つのみに割り当てます。

    注記

    THP機能は2MBのページにしか対応していません。

    THPの有効化および無効化については、「起動時のHugeTLBページの動作に影響を与えるパラメーターの詳細については、「透過型hugepagesの有効化」および「透過型hugepagesの無効化」を参照してください。