第9章 Red Hat OpenStack Platform 環境の調整
9.1. エミュレータースレッドの固定
エミュレータースレッドは、仮想マシンのハードウェアエミュレーションの割り込み要求およびノンブロッキングプロセスを処理します。これらのスレッドは、ゲストが処理用に使用する CPU 全体に存在します。Poll Mode Driver (PMD) またはリアルタイム処理に使用されるスレッドがこれらのゲスト CPU 上で実行される場合、パケットロスまたはデッドラインの超過が生じる可能性があります。
エミュレータースレッドを専用のゲスト CPU に固定して、スレッドを仮想マシン処理のタスクから分離することができます。その結果、パフォーマンスが向上します。
9.1.1. エミュレータースレッドをホストする CPU の設定
パフォーマンスを向上させるには、エミュレータースレッドをホストするためにホスト CPU のサブセットを確保します。
手順
特定のロールに
NovaComputeCpuSharedSet
を定義してオーバークラウドをデプロイします。NovaComputeCpuSharedSet
の値は、そのロール内のホストのnova.conf
ファイルのcpu_shared_set
パラメーターに適用されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: ComputeOvsDpdkParameters: NovaComputeCpuSharedSet: "0-1,16-17" NovaComputeCpuDedicatedSet: "2-15,18-31"
parameter_defaults: ComputeOvsDpdkParameters: NovaComputeCpuSharedSet: "0-1,16-17" NovaComputeCpuDedicatedSet: "2-15,18-31"
エミュレータースレッドが共有プールに分離されたインスタンスをビルドするためのフレーバーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack flavor create --ram <size_mb> --disk <size_gb> --vcpus <vcpus> <flavor>
openstack flavor create --ram <size_mb> --disk <size_gb> --vcpus <vcpus> <flavor>
hw:emulator_threads_policy
追加仕様を追加し、値をshare
に設定します。このフレーバーで作成されたインスタンスは、nova.conf ファイルのcpu_share_set
パラメーターで定義されたインスタンス CPU を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack flavor set <flavor> --property hw:emulator_threads_policy=share
openstack flavor set <flavor> --property hw:emulator_threads_policy=share
この追加仕様の共有ポリシーを有効にするには、nova.conf
ファイルで cpu_share_set
パラメーターを設定する必要があります。nova.conf
を手動で編集した内容は再デプロイ後は維持されないので、この設定には可能な限り heat を使用するべきです。
9.1.2. エミュレータースレッドが固定されていることの確認
手順
対象インスタンスのホストおよび名前を特定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack server show <instance_id>
openstack server show <instance_id>
SSH を使用して、特定したホストに heat-admin としてログオンします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh heat-admin@compute-1 [compute-1]$ sudo virsh dumpxml instance-00001 | grep `'emulatorpin cpuset'`
ssh heat-admin@compute-1 [compute-1]$ sudo virsh dumpxml instance-00001 | grep `'emulatorpin cpuset'`