5.4. コンピュートノードでの Huge Page の設定
クラウド管理者は、インスタンスが Huge Page を要求できるようにコンピュートノードを設定することができます。
Huge Page を設定すると、NUMA トポロジーが要求されていない場合でも、インスタンス上に暗黙的な NUMA トポロジーが作成されます。
手順
- Compute 環境ファイルを開きます。
インスタンスではないプロセス用に各 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 に設定します。
コンピュートノードで Huge Page を設定します。
parameter_defaults: ComputeParameters: ... KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=32"注記複数の Huge Page サイズを設定する場合、初回の起動時に Huge Page フォルダーもマウントする必要があります。詳細は、初回起動時に複数の Huge Page フォルダーをマウントする を参照してください。
(オプション) インスタンスが 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 を割り当てることができます。
-
NovaLibvirtCPUModeがhost-modelまたはcustomに設定されている場合にのみ、NovaLibvirtCPUModelExtraFlagsをpdpe1gbに設定する必要があります。 -
ホストが
pdpe1gbをサポートし、NovaLibvirtCPUModeにhost-passthroughが使用される場合、NovaLibvirtCPUModelExtraFlagsに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 機能フラグ
NovaLibvirtCPUModelExtraFlagsを設定して+pcidを指定します。parameter_defaults: ComputeParameters: NovaLibvirtCPUMode: 'custom' NovaLibvirtCPUModels: 'Haswell-noTSX' NovaLibvirtCPUModelExtraFlags: 'vmx, pdpe1gb, +pcid'ヒント-
NovaSchedulerEnabledFiltersパラメーターにまだNUMATopologyFilterがなければ、このフィルターを追加します。 その他の環境ファイルと共に 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 追加スペックキーが設定されたフレーバーを作成します。
前提条件
- コンピュートノードが huge page に対応する設定である。詳細は、コンピュートノードで Huge Page を設定する を参照してください。
手順
huge page を要求するインスタンス用のフレーバーを作成します。
$ openstack flavor create --ram <size_mb> --disk <size_gb> \ --vcpus <no_reserved_vcpus> huge_pageshuge 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)。
-
フレーバーにより huge page を使用するインスタンスが作成されることを確認するには、新しいフレーバーを使用してインスタンスを起動します。
$ openstack server create --flavor huge_pages \ --image <image> huge_pages_instanceCompute スケジューラーは、インスタンスのメモリーをサポートするのに十分なサイズの空き huge page を持つホストを特定します。スケジューラーが十分なページを持つホストおよび NUMA ノードを検出できない場合、リクエストは失敗して
NoValidHostエラーが報告されます。