Translated message

A translation of this page exists in English.

Huge Page とは何ですか? また、それを使用する利点は何ですか?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 9
  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 4

Issue

  • Huge Page とは何ですか? また、Huge Page を使用する利点は何ですか?
  • Huge page を有効にするにはどうすればよいですか?
  • システム上の Huge page 値を更新するには再起動が必要ですか?
  • hugepage パラメーターを確認するにはどうすればよいですか?

Resolution

  • Huge page は、Linux カーネルが最新のハードウェアアーキテクチャーのページサイズ機能を複数利用できるようにする機能です。Linux は、物理 RAM とスワップの両方からマップされた複数の仮想メモリーページを作成します。ページは仮想メモリーの基本単位で、x86 アーキテクチャーではデフォルトのページサイズは 4096 バイトです。

  • Linux は、トランスレーションルックアサイドバッファー (TLB) と呼ばれる CPU アーキテクチャーのメカニズムを使用して、仮想メモリーページの実際の物理メモリーアドレスへのマッピングを管理します。TLB のハードウェアリソースには限りがあるため、デフォルトのページサイズで大量の物理メモリーを利用すると TLB が消費され、処理のオーバーヘッドが追加されます。サイズが 4096 バイトのページが多数あると、多くの TLB リソースが消費されます。Huge page を利用することで、サイズがより大きいページを作成して、ページごとにTLB 内の 1 つのリソースを消費できます。Huge page の作成の副作用として、Huge page にマップされた物理メモリーは通常のメモリー割り当ての対象ではなくなり、カーネル仮想メモリーのマネージャーで管理されなくなるため、Huge page は実質的に「保護」され、Huge page を要求するアプリケーションに対してのみ提供されます。Huge Page は物理 RAM に固定されており、スワップ/ページアウトできません。

  • Huge page を割り当てるのは一般的に、メモリーを多く使用するアプリケーションを対象としており、システムのメモリー負荷が高い場合に、使用するページがスワップアウトされないようにすることが目的です。もう 1 つの目的は、32 ビットシステムでのメモリー使用量を管理することです。Huge Page を作成して、そのページを使用するようにアプリケーションを設定すると、管理するページが少なくなるため、カーネルのメモリー管理のオーバーヘッドが軽減されます。カーネル仮想メモリーマネージャーは低メモリーを利用します。管理するページが少ないということは、低メモリーの消費量も少なくなります。

  • Linux 2.6 シリーズのカーネルでは、カーネルの構築時に CONFIG_HUGETLB_PAGE 機能を使用して Huge page が有効になります。Red Hat Enterprise Linux 4 リリース以降で Red Hat によって提供されるすべてのカーネルでは、この機能が有効になっています。

  • 大量のメモリーを搭載したシステムは、Huge page 専用の部分を確保することで、メモリーをより効率的に利用するように設定できます。ページの実際のサイズは、システムアーキテクチャーによって異なります。一般的な x86 システムの Huge page サイズは 2048 キロバイトになります。Huge page サイズは、/proc/meminfo を調べることで確認できます。

    # cat /proc/meminfo |grep Hugepagesize
    Hugepagesize: 2048 kB
    

    注記: RHEL 8 および 9 のデフォルトの HugePage サイズは、default_hugepagesz カーネルコマンドラインパラメーターを使用して変更できます。

  • RHEL 6、7、および 8 では、次のコマンドを使用して hugepagesize (バイト単位) を表示できます。

    # hugeadm --page-sizes-all
    2097152
    
  • RHEL 6 以降では、Transparent Huge Pages も使用できるようになりました。

    注: hugepage を有効にするには、連続して整列された、未割り当てのメモリーリージョンをカーネルが探しだす必要があります。 つまり、多くのシステムでは、このような Huge page の割り当てには再起動が必要になります。

hugepage の詳細は、次のリンクを参照してください。

Root Cause

Diagnostic Steps

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments