VMware Integrated OpenStack を使用すると、基盤となる vSphere 環境に、NUMA (Non-Uniform Memory Access) に対応した OpenStack インスタンスを配置することができます。
NUMA は高パフォーマンスの接続を使用してコスト効率の良い、小規模のノードをリンクすることにより、低遅延と高スループットを実現します。このパフォーマンスは、電気通信環境で仮想ネットワーク機能 (VNF) を実行する場合に必要になることがあります。vSphere の NUMA の詳細については、『vSphere リソース管理』のESXi での NUMA インスタンスの使用を参照してください。
現在の NUMA の設定に関する詳細を取得するには、ESXi ホストで次のコマンドを実行します。
vsish -e get /net/pNics/vmnic<id>/properties | grep 'Device NUMA Node'
前提条件
- 仮想マシン トラフィック用の vCPU、メモリ、および物理 NIC が同じノードに配置されていることを確認します。
- vSphere で、NUMA ノード上のすべての物理 NIC を含むチーミング ポリシーを作成します。『vSphere ネットワーク』のチーミングおよびフェイルオーバー ポリシーを参照してください。
手順
- Integrated OpenStack Manager に
root
ユーザーとしてログインします。
- ツールボックスを開き、
admin
アカウントのパスワードを設定します。
toolbox
export OS_PASSWORD=admin-account-password
- すべての物理 NIC が単一の NUMA ノードに配置されている Neutron ネットワークを作成します。
-
numa.nodeAffinity
プロパティを含む OpenStack フレーバーを作成します。
nova flavor-key flavor-id set vmware:extra_config='{"numa.nodeAffinity": "numa-node-id"}'
- この手順で作成したフレーバーおよびネットワークを使用して、OpenStack インスタンスを起動します。
[複数の SRIOV を使用したインスタンス]
複数の SRIOV に対応するように仮想マシン vNIC を構成して、複数の物理ネットワーク アダプタ(物理 NIC)にワークロードを分散することで、1 つの物理 NIC ではネットワーク トラフィックが輻輳しているのに、別の物理 NIC ではトラフィックがないという状態を回避できます。この応用として、NUMA と物理 NIC を連携させて、パフォーマンスの低下を避けることができます。2 つの物理 NIC がペアとして機能することで物理接続の冗長性が得られ、異なるトラフィックまたは VLAN に対して異なるペアを使用できます。
注:
VMware Integrated OpenStack 7.2 で
nodeAffinity を指定する場合は、フレーバーで設定する必要があります。インスタンスの作成後にこれを設定することはできません。また、フレーバーで
numa.nodeAffinity
がすでに指定されている場合は、物理 NIC の NUMA 設定がオーバーライドされます。
次の手順では、複数の SRIOV を使用してインスタンスを作成する手順について説明します。
nova-compute.conf
を構成します。
Nova コンピューティング CR の PCI 定義では、次の形式を使用して
values
セクションに内容を入力できます。
'{"address": "<PCI address of vmnicX>", "product_id": "*", "vendor_id": "*", "physical_network":"<uuid of vlan transport zone of provider-networkA>"}'
viocli update novacompute <nova-compute-cr-name>
conf:
nova_compute:
DEFAULT:
......
pci:
passthrough_whitelist:
type: multistring
values:
- '{"address": "0000:1a:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"bf86b52f-a629-4c07-a8bd-14b4b46ba384"}'
- '{"address": "0000:5e:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"c12a7025-22bc-403c-8ff9-9a25a236704a"}'
- '{"address": "0000:d8:00.0", "product_id": "*", "vendor_id": "*", "physical_network":"801cd687-b65b-449c-9892-c22647851bf3"}'
- '{"address": "0000:d8:00.1", "product_id": "*", "vendor_id": "*", "physical_network":"7ab64053-9e48-416d-8b1e-80e1fccd3dcd"}'
- プロバイダ ネットワークとサブネットを作成します。
neutron --insecure net-create 3158-net --provider:network_type vlan --provider:physical_network c12a7025-22bc-403c-8ff9-9a25a236704a --provider:segmentation_id 3158
openstack --insecure subnet create --network 3158-net --allocation-pool start=172.17.2.1,end=172.17.2.254 --gateway 172.17.0.1 --subnet-range 172.17.0.0/22 3158-subnet
- SRIOV ポートを作成します。
neutron --insecure port-create 3158-net --name 3158-p1 --vnic_type direct
neutron --insecure port-create 3158-net --name 3158-p2 --vnic_type direct
neutron --insecure port-create 3158-net --name 3158-p3 --vnic_type direct
- 指定したポートを使用してインスタンスを起動します。ネットワーク アダプタが仮想マシンに追加され、
vmnic2
に接続されていることを確認できます。nova boot --flavor m1.tiny --image a133ffd7-1601-42e5-a66f-1eb6130db093 --nic port-id=031e14e3-cf06-40e1-addf-3f13f5b5da66 --nic port-id=25c6ce90-2cff-4189-ae21-abc27a131ae7 <vm-name>