3.2. エミュレータースレッドの設定
コンピュートノードには、エミュレータースレッドと呼ばれる各インスタンスのハイパーバイザーとリンクするオーバーヘッドタスクがあります。デフォルトでは、エミュレータースレッドはインスタンスと同じ CPU で実行され、インスタンスのパフォーマンスに影響を及ぼします。
エミュレータースレッドポリシーを設定して、インスタンスが使用する CPU とは別の CPU でエミュレータースレッドを実行することができます。
パケットロスを避けるために、NFV デプロイメントでは絶対に仮想 CPU のプリエンプションを行わないでください。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 - Compute 環境ファイルを開きます。
CPU ピニングを必要とするインスタンス用に物理 CPU コアを確保するには、Compute 環境ファイルで
NovaComputeCpuDedicatedSet
パラメーターを設定します。たとえば、以下の設定では、32 コア CPU を持つコンピュートノードに専用の CPU を設定します。parameter_defaults: ... NovaComputeCpuDedicatedSet: 2-15,18-31 ...
詳しくは、コンピュートノードでの CPU ピニングの設定 を参照してください。
エミュレータースレッド用に物理 CPU コアを確保するには、Compute 環境ファイルで
NovaComputeCpuSharedSet
パラメーターを設定します。たとえば、以下の設定では、32 コア CPU を持つコンピュートノードに共有の CPU を設定します。parameter_defaults: ... NovaComputeCpuSharedSet: 0,1,16,17 ...
注記Compute スケジューラーは、共有 (またはフローティング) CPU 上で動作するインスタンス用にも共有セット内の CPU を使用します。詳しくは、コンピュートノードでの CPU ピニングの設定を参照してください。
-
NovaSchedulerDefaultFilters
パラメーターにまだNUMATopologyFilter
がなければ、この Compute スケジュールフィルターを追加します。 その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
インスタンスのエミュレータースレッドを
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 metadata の Emulator threads policy を参照してください。