HugeTLBページのファイルベースの構成パラメータ

ファイルベースの構成パラメータは、構成設定への実行時アクセスを提供します。

ノート:

実行時に設定にアクセスするだけでなく、起動bashスクリプトの作成や、ローカルのrc initスクリプトでのパラメータの設定によって、ブート・プロセスの初期段階でパラメータを初期化することもできます。
各ファイルベース・パラメータの複数のインスタンスをシステムで構成できます。たとえば、2MBと1GBのHugeTLBページ・サイズの両方を処理できるシステムでは、複数のnr_hugepages設定が存在することが可能です。このパラメータは、次のようなプール内のページ数を定義します:
  • 2MBページのプール内のページ数を示すファイル/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
  • 1GBページのプール内のページ数を示すファイル/sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages

次の表に、一般的に使用されるHugeTLB構成パラメータと、各パラメータに対して検出される複数のファイル・インスタンスを示します。

表2-2 一般的に使用されるファイルベースのHugeTLBパラメータ

<table cellpadding="4" cellspacing="0" class="Formal" title="Commonly Used File-Based HugeTLB Parameters" summary='This table outlines commonly used HugeTLB configuration parameters and the multiple file instances that you might find for each parameter. Some folders in the parameter file paths are listed with placeholder names that convey a range of possible values. For example, the folder name “hugepages- パラメータ 用途 異なるインスタンスのファイル・パス nr_hugepages
  • nr_hugepagesの各インスタンスは、そのインスタンスに関連付けられたプール内の現在のヒュージ・ページ数を定義します。
  • 実行時に変更できます。
  • コマンド例:

    echo 20 | sudo tee /proc/sys/vm/nr_hugepages
  • デフォルト値は0です。
nr_hugepagesの異なるインスタンスのファイル・パス形式は次のとおりです。
  • ファイルの場所: /proc/sys/vm/nr_hugepages (すべてのシステムに存在)。
  • ファイルの場所: /sys/kernel/mm/hugepages/hugepages-<SIZE>kB/nr_hugepages (複数のヒュージ・ページ・サイズをサポートするシステム上に存在)。
  • ファイルの場所: /sys/devices/system/node/node{0,1,2…n}/hugepages/hugepages-<SIZE>kB/nr_hugepages (NUMAシステムのみに存在)。

    ノート:

    特定のNUMAノードでサポートされる様々なサイズのページ数をリクエストする必要がある場合は、NUMAノード固有のパス形式を使用します。他のパス形式(/proc/sys/vm/nr_hugepagesなど)を使用する場合は、HugeTLBページをリクエストします。ページはNUMAノード間で均等に分割されます。

nr_overcommit_hugepages
  • nr_overcommit_hugepagesの各インスタンスは、nr_hugepagesで指定された数量より多い追加の数のヒュージ・ページを定義します。これは、メモリーのオーバーコミットを通じて実行時に、システムによって作成されます。
  • これらの追加のヒュージ・ページは、使用されなくなると、解放されてカーネルの通常のページ・プールに戻されます。
  • コマンド例:
    echo 20 | sudo tee /proc/sys/vm/nr_overcommit_hugepages
nr_overcommit_hugepagesの異なるインスタンスのファイル・パス形式は次のとおりです。
  • ファイルの場所: /proc/sys/vm/nr_overcommit_hugepages (すべてのシステムに存在)。
  • ファイルの場所: /sys/kernel/mm/hugepages/hugepages-<SIZE>kB/nr_overcommit_hugepages (複数のページ・サイズをサポートするシステムに存在)。

ノート:

nr_overcommit_hugepagesパラメータは個々のノード・レベルでは定義されないため、この設定にはノード固有のファイルが存在しません。

free_hugepages
  • 読取り専用パラメータ。
  • free_hugepagesの各インスタンスは、まだ割り当てられていない関連ページ・プール内のヒュージ・ページ数を返します。

free_hugepagesの異なるインスタンスのファイル・パス形式は次のとおりです。

  • ファイルの場所: /sys/kernel/mm/hugepages/hugepages-<SIZE>kB/free_hugepages (複数のヒュージ・ページ・サイズをサポートするシステム上に存在)。
  • ファイルの場所: /sys/devices/system/node/node{0,1,2…n}/hugepages/hugepages-<SIZE>kB/ free_hugepages (NUMAシステムのみに存在)。
surplus_hugepages
  • 読取り専用パラメータ。
  • surplus_hugepagesの各インスタンスは、関連付けられたページ・プールからオーバーコミットされたヒュージ・ページ数を返します。

surplus_hugepagesの異なるインスタンスのファイル・パス形式は次のとおりです。

  • ファイルの場所: /sys/kernel/mm/hugepages/hugepages-<SIZE>kB/surplus_hugepages (複数のヒュージ・ページ・サイズをサポートするシステムに存在)。
  • ファイルの場所: /sys/devices/system/node/node{0,1,2…n}/hugepages/hugepages-<SIZE>kB/surplus_hugepages (NUMAシステムのみに存在)。

次の項では、HugeTLBパラメータの様々なインスタンスが格納されるファイルのブランチを示します:

/proc/sys/vm

静的ヒュージ・ページをサポートするすべてのシステムには、/proc/sys/vmの下にHugeTLBパラメータ・ファイルが含まれています。

ノート:

多数のOracleデータベース・サーバーを含む多くのシステムでは、procfsファイル・システムが使用される主要なパラメータ・セットです。

sysctlパラメータvm.nr_hugepagesは、通常、ヒュージ・ページをリクエストするスクリプトで初期化され、procfsファイル/proc/sys/vm/nr_hugepagesにも書き込まれます。

ブランチ/proc/sys/vmの下にあるフォルダの例を次に示します:

    ├── ...
    ├── ...
    ├── nr_hugepages
    ├── ...
    ├── nr_overcommit_hugepages
    ├── ...
    ├── ...

/sys/kernel/mm/hugepages/

複数のサイズ・プールをサポートするシステムには、/sys/kernel/mm/hugepages/のサイズ固有のフォルダにHugeTLBパラメータ・ファイルが含まれています。

ブランチ/sys/kernel/mm/hugepages/の下にあるフォルダの例を次に示します:

└── hugepages-2048kB
    ├── free_hugepages
    ├── nr_hugepages
    ├── ...
    ├── nr_overcommit_hugepages
    ├── ...
    └── surplus_hugepages

└── hugepages-1048576kB
    ├── free_hugepages
    ├── nr_hugepages
    ├── ...
    ├── nr_overcommit_hugepages
    ├── ...
    └── surplus_hugepages

/sys/devices/system/node/

NUMAシステムのみに、/sys/devices/system/node/にHugeTLBパラメータ・ファイルが含まれています。

ブランチ/sys/devices/system/nodeの下にあるフォルダの例を次に示します:

      ├─  ...
      ├── node0
      │   ├── ...
      │   ├──hugepages
      │          hugepages-2048kB
      │              ├── free_hugepages
      │              ├── nr_hugepages
      │              └── surplus_hugepages
      │   
      │          hugepages-1048576kB
      │              ├── free_hugepages
      │              ├── nr_hugepages
      │              └── surplus_hugepages
      ├── node1
          ├── ...
          ├──hugepages
                 hugepages-2048kB
                     ├── free_hugepages
                     ├── nr_hugepages
                     └── surplus_hugepages
          
                 hugepages-1048576kB
                     ├── free_hugepages
                     ├── nr_hugepages
                     └── surplus_hugepages