5.4. コンピュートノードでの Huge Page の設定


クラウド管理者は、インスタンスが Huge Page を要求できるようにコンピュートノードを設定することができます。

注記

Huge Page を設定すると、NUMA トポロジーが要求されていない場合でも、インスタンス上に暗黙的な NUMA トポロジーが作成されます。

手順

  1. Compute 環境ファイルを開きます。
  2. インスタンスではないプロセス用に各 NUMA ノードで確保する huge page のメモリー量を設定します。

    parameter_defaults:
      ComputeParameters:
        NovaReservedHugePages: ["node:0,size:1GB,count:1","node:1,size:1GB,count:1"]
    • 各ノードの size の値を、割り当てられた huge page のサイズに置き換えます。以下の有効な値のいずれかに設定します。

      • 2048 (2 MB 用)
      • 1 GB
    • 各ノードの count の値を、NUMA ノードごとに OVS が使用する huge page の数に置き換えます。たとえば、Open vSwitch が 4096 のソケットメモリーを使用する場合、この属性を 2 に設定します。
  3. コンピュートノードで Huge Page を設定します。

    parameter_defaults:
      ComputeParameters:
        ...
        KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32"
    注記

    複数の Huge Page サイズを設定する場合、初回の起動時に Huge Page フォルダーもマウントする必要があります。詳細は、初回起動時に複数の Huge Page フォルダーをマウントする を参照してください。

  4. (オプション) インスタンスが 1 GB の huge page を割り当てるのを許可するには、CPU 機能フラグ NovaLibvirtCPUModelExtraFlags を設定して pdpe1gb を指定します。

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: 'Haswell-noTSX'
        NovaLibvirtCPUModelExtraFlags: 'vmx, pdpe1gb'
    注記
    • インスタンスが 2 MB の huge page しか要求しない場合、CPU 機能フラグを設定する必要はありません。
    • ホストが 1 GB huge page の割り当てをサポートする場合に限り、インスタンスに 1 GB の huge page を割り当てることができます。
    • NovaLibvirtCPUModehost-model または custom に設定されている場合にのみ、NovaLibvirtCPUModelExtraFlagspdpe1gb に設定する必要があります。
    • ホストが pdpe1gb をサポートし、NovaLibvirtCPUModehost-passthrough が使用される場合、NovaLibvirtCPUModelExtraFlagspdpe1gb を設定する必要はありません。pdpe1gb フラグは Opteron_G4 および Opteron_G5 CPU モデルにのみ含まれ、QEMU がサポートする Intel CPU モデルには含まれません。
    • Microarchitectural Data Sampling (MDS) 等の CPU ハードウェアの問題を軽減するには、他の CPU フラグを設定しなければならない場合があります。詳細は、RHOS Mitigation for MDS ("Microarchitectural Data Sampling") Security Flaws を参照してください。
  5. Meltdown に対する保護の適用後にパフォーマンスが失われないようにするには、CPU 機能フラグ NovaLibvirtCPUModelExtraFlags を設定して +pcid を指定します。

    parameter_defaults:
      ComputeParameters:
        NovaLibvirtCPUMode: 'custom'
        NovaLibvirtCPUModels: 'Haswell-noTSX'
        NovaLibvirtCPUModelExtraFlags: 'vmx, pdpe1gb, +pcid'
    ヒント
  6. NovaSchedulerEnabledFilters パラメーターにまだ NUMATopologyFilter がなければ、このフィルターを追加します。
  7. その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。

    (undercloud)$ openstack overcloud deploy --templates \
      -e [your environment files]  \
      -e /home/stack/templates/<compute_environment_file>.yaml

5.4.1. インスタンス用の huge page フレーバーの作成

クラウドユーザーが huge page を使用するインスタンスを作成できるようにするには、インスタンス起動用の hw:mem_page_size 追加スペックキーが設定されたフレーバーを作成します。

前提条件

手順

  1. huge page を要求するインスタンス用のフレーバーを作成します。

    $ openstack flavor create --ram <size_mb> --disk <size_gb> \
     --vcpus <no_reserved_vcpus> huge_pages
  2. huge page を要求するには、フレーバーの hw:mem_page_size 属性を必要なサイズに設定します。

    $ openstack flavor set huge_pages --property hw:mem_page_size=<page_size>
    • <page_size> は、次に示す有効な値のいずれかに置き換えます。

      • large: ホストでサポートされる最大のページサイズを選択します。x86_64 システムでは 2 MB または 1 GB です。
      • small: (デフォルト) ホストでサポートされる最小のページサイズを選択します。X86_64 システムでは、4 kB (通常のページ) です。
      • any : イメージに設定された hw_mem_page_size を使用してページサイズを選択します。ページサイズがイメージで指定されていない場合は、libvirt ドライバーで決定される、利用可能な最大のページサイズを選択します。
      • <pagesize>: ワークロードに具体的な要件がある場合、ページサイズを明示的に設定します。ページサイズには整数値を使用し、KB またはその他の標準単位で指定します。(例: 4kB、2MB、2048、1GB)。
  3. フレーバーにより huge page を使用するインスタンスが作成されることを確認するには、新しいフレーバーを使用してインスタンスを起動します。

    $ openstack server create --flavor huge_pages \
     --image <image> huge_pages_instance

    Compute スケジューラーは、インスタンスのメモリーをサポートするのに十分なサイズの空き huge page を持つホストを特定します。スケジューラーが十分なページを持つホストおよび NUMA ノードを検出できない場合、リクエストは失敗して NoValidHost エラーが報告されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る