3.2. エミュレータースレッドの設定

コンピュートノードには、エミュレータースレッドと呼ばれる各インスタンスのハイパーバイザーとリンクするオーバーヘッドタスクがあります。デフォルトでは、エミュレータースレッドはインスタンスと同じ CPU で実行され、インスタンスのパフォーマンスに影響を及ぼします。

エミュレータースレッドポリシーを設定して、インスタンスが使用する CPU とは別の CPU でエミュレータースレッドを実行することができます。

注記

パケットロスを避けるために、NFV デプロイメントでは絶対に仮想 CPU のプリエンプションを行わないでください。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. Compute 環境ファイルを開きます。
  3. CPU ピニングを必要とするインスタンス用に物理 CPU コアを確保するには、Compute 環境ファイルで NovaComputeCpuDedicatedSet パラメーターを設定します。たとえば、以下の設定では、32 コア CPU を持つコンピュートノードに専用の CPU を設定します。

    parameter_defaults:
      ...
      NovaComputeCpuDedicatedSet: 2-15,18-31
      ...

    詳しくは、コンピュートノードでの CPU ピニングの設定 を参照してください。

  4. エミュレータースレッド用に物理 CPU コアを確保するには、Compute 環境ファイルで NovaComputeCpuSharedSet パラメーターを設定します。たとえば、以下の設定では、32 コア CPU を持つコンピュートノードに共有の CPU を設定します。

    parameter_defaults:
      ...
      NovaComputeCpuSharedSet: 0,1,16,17
      ...
    注記

    Compute スケジューラーは、共有 (またはフローティング) CPU 上で動作するインスタンス用にも共有セット内の CPU を使用します。詳しくは、コンピュートノードでの CPU ピニングの設定を参照してください。

  5. NovaSchedulerDefaultFilters パラメーターにまだ NUMATopologyFilter がなければ、この Compute スケジュールフィルターを追加します。
  6. その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。

    (undercloud)$ openstack overcloud deploy --templates \
     -e [your environment files] \
     -e /home/stack/templates/<compute_environment_file>.yaml
  7. インスタンスのエミュレータースレッドを NovaComputeCpuSharedSet を使用して設定した共有 CPU から選択した専用の CPU 上で実行するフレーバーを設定します。

    (overcloud)$ openstack flavor set --property hw:cpu_policy=dedicated \
     --property hw:emulator_threads_policy=share \
     dedicated_emulator_threads

    hw:emulator_threads_policy の設定オプションについての詳しい情報は、Flavor metadataEmulator threads policy を参照してください。