7.2. コンピュートノードでのヒュージページの設定
インスタンスがヒュージページを要求できるようにコンピュートノードを設定します。
手順
インスタンスではないプロセス用に各 NUMA ノードで確保するヒュージページのメモリー量を設定します。
parameter_defaults: NovaReservedHugePages: ["node:0,size:2048,count:64","node:1,size:1GB,count:1"]
各属性についての説明は以下のとおりです。
属性
説明
size
割り当てるヒュージページのサイズ。有効な値は 2048 (2 MB 用) および 1 GB です。
count
NUMA ノードごとに OVS が使用するヒュージページの数。たとえば、Open vSwitch が 4096 のソケットメモリーを使用する場合、この属性を 2 に設定します。
(オプション) インスタンスが 1 GB のヒュージページを割り当てるのを許可するには、CPU 機能フラグ
cpu_model_extra_flags
を設定して「pdpe1gb」を指定します。parameter_defaults: ComputeExtraConfig: nova::compute::libvirt::libvirt_cpu_mode: 'custom' nova::compute::libvirt::libvirt_cpu_model: 'Haswell-noTSX' nova::compute::libvirt::libvirt_cpu_model_extra_flags: 'vmx, pdpe1gb'
注記- インスタンスが 2 MB のヒュージページしか要求しない場合、CPU 機能フラグを設定する必要はありません。
- ホストが 1 GB ヒュージページの割り当てをサポートする場合に限り、インスタンスに 1 GB のヒュージページを割り当てることができます。
-
cpu_mode
がhost-model
またはcustom
に設定されている場合に限り、cpu_model_extra_flags
をpdpe1gb
に設定する必要があります。 -
ホストが
pdpe1gb
をサポートし、cpu_mode
にhost-passthrough
が使用される場合、cpu_model_extra_flags
にpdpe1gb
を設定する必要はありません。pdpe1gb
フラグは Opteron_G4 および Opteron_G5 CPU モデルにのみ含まれ、QEMU がサポートする Intel CPU モデルには含まれません。 - Microarchitectural Data Sampling (MDS) 等の CPU ハードウェアの問題を軽減するには、他の CPU フラグを設定しなければならない場合があります。詳しくは、「RHOS Mitigation for MDS ("Microarchitectural Data Sampling") Security Flaws」を参照してください。
Meltdown に対する保護の適用後にパフォーマンスが失われないようにするには、CPU 機能フラグ
cpu_model_extra_flags
を設定して「+pcid」を指定します。parameter_defaults: ComputeExtraConfig: nova::compute::libvirt::libvirt_cpu_mode: 'custom' nova::compute::libvirt::libvirt_cpu_model: 'Haswell-noTSX' nova::compute::libvirt::libvirt_cpu_model_extra_flags: 'vmx, pdpe1gb, +pcid'
ヒント-
各 Compute 環境ファイルの
NovaSchedulerDefaultFilters
パラメーターにまだNUMATopologyFilter
がなければ、このフィルターを追加します。 デプロイコマンドに環境ファイルを追加してオーバークラウドをデプロイし、このヒュージページの設定を適用します。
(undercloud) $ openstack overcloud deploy --templates \ -e [your environment files] -e /home/stack/templates/<compute_environment_file>.yaml
7.2.1. インスタンスへのヒュージページの割り当て
インスタンスがヒュージページを使用することを指定するには、hw:mem_page_size
追加仕様キーを使用してフレーバーを作成します。
前提条件
- コンピュートノードがヒュージページに対応する設定である。詳しくは、「コンピュートノードでのヒュージページの設定」を参照してください。
手順
ヒュージページを要求するインスタンス用のフレーバーを作成します。
$ openstack flavor create --ram <size-mb> --disk <size-gb> --vcpus <no_reserved_vcpus> huge_pages
ヒュージページのフレーバーを設定します。
$ openstack flavor set huge_pages --property hw:mem_page_size=1GB
有効な
hw:mem_page_size
の値は以下のとおりです。-
large
: ホストでサポートされる最大のページサイズを選択します。x86_64 システムでは 2 MB または 1 GB です。 -
small
: (デフォルト) ホストでサポートされる最小のページサイズを選択します。X86_64 システムでは、4 kB (通常のページ) です。 -
any
: libvirt ドライバーで決定される、利用可能な最大のヒュージページサイズを選択します。 - <pagesize>: (文字列) ワークロードに具体的な要件がある場合、ページサイズを明示的に設定します。整数値のページサイズを、kB またはその他の標準単位で指定します。たとえば、4kB、2MB、2048、1GB と設定します。
-
新しいフレーバーを使用してインスタンスを作成します。
$ openstack server create --flavor huge_pages --image <image> huge_pages_instance
検証
スケジューラーは、インスタンスのメモリーをサポートするのに十分なサイズの空きヒュージページを持つホストを特定します。スケジューラーが十分なページを持つホストおよび NUMA ノードを検出できない場合、リクエストは失敗して NoValidHost エラーが報告されます。