VMware Integrated OpenStack を使用すると、基盤となる vSphere 環境に、NUMA (Non-Uniform Memory Access) に対応した OpenStack インスタンスを配置することができます。

重要: この機能は、 VMware Integrated OpenStack Carrier Edition でのみ提供されています。詳細については、 VMware Integrated 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 ネットワーク』のチーミングおよびフェイルオーバー ポリシーを参照してください。

手順

  1. Integrated OpenStack Managerroot ユーザーとしてログインします。
    ssh root@mgmt-server-ip
  2. ツールボックスを開き、admin アカウントのパスワードを設定します。
    toolbox
    export OS_PASSWORD=admin-account-password
  3. すべての物理 NIC が単一の NUMA ノードに配置されている Neutron ネットワークを作成します。
  4. numa.nodeAffinity プロパティを含む OpenStack フレーバーを作成します。
    nova flavor-key flavor-id set vmware:extra_config='{"numa.nodeAffinity": "numa-node-id"}'
  5. この手順で作成したフレーバーおよびネットワークを使用して、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>