VMware Integrated OpenStack은 기본 vSphere 환경에서 OpenStack 인스턴스의 NUMA(통일되지 않은 메모리 액세스) 인식 배치를 지원합니다.

중요: 이 기능은 VMware Integrated OpenStack 캐리어 버전에서만 제공됩니다. 자세한 내용은 VMware Integrated OpenStack 라이센싱을 참조하십시오.

NUMA는 고성능 연결을 통해 비용 효율적인 작은 노드를 연결하여 낮은 지연 시간과 높은 처리량을 제공합니다. 이러한 성능은 전기 통신 환경의 VNF(Virtual Network Function)에 종종 필요합니다. 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가 있는 인스턴스

    여러 물리적 네트워크 어댑터(pNIC)의 워크로드 균형을 조정하도록 다중 SRIOV를 사용하는 VM vNIC를 구성하면 한 pNIC에서는 트래픽이 없는데 다른 pNIC에서는 네트워크 트래픽이 정체되는 상황을 방지할 수 있습니다. 이 애플리케이션은 성능 손실을 방지하기 위해 pNIC에 맞게 NUMA를 정렬할 수 있습니다. 두 개의 pNIC는 물리적 연결 이중화를 위한 쌍으로 작동하고 다른 트래픽 또는 VLAN에 대해 서로 다른 쌍으로 작동합니다.
    참고: VMware Integrated OpenStack 7.2에서 nodeAffinity를 지정하려면 플레이버에서 설정해야 합니다. 인스턴스가 생성된 후에는 구성할 수 없습니다. 또한, numa.nodeAffinity가 플레이버에 이미 지정된 경우 pnic에서 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>