9.5. NUMA 인식 vSwitch 구성

중요

이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

NUMA 인식 vSwitch를 구현하기 전에 하드웨어 구성의 다음 구성 요소를 검사합니다.

  • 물리적 네트워크 수입니다.
  • PCI 카드 배치.
  • 서버의 물리적 아키텍처.

PCIe NIC와 같은 메모리 매핑 I/O(Memory 매핑 I/O) 장치는 특정 NUMA 노드와 연결됩니다. VM과 NIC가 서로 다른 NUMA 노드에 있는 경우 성능이 크게 저하됩니다. 성능을 높이기 위해 동일한 NUMA 노드에서 PCIe NIC 배치 및 인스턴스 처리를 정렬합니다.

이 기능을 사용하여 물리적 네트워크를 공유하는 인스턴스가 동일한 NUMA 노드에 있는지 확인합니다. 데이터센터 하드웨어 활용도를 최적화하려면 여러 개의 physnet을 사용해야 합니다.

주의

최적의 서버 사용률을 위해 NUMA 인식 네트워크를 구성하려면 PCIe 슬롯과 NUMA 노드의 매핑을 이해해야 합니다. 특정 하드웨어에 대한 자세한 내용은 공급업체 설명서를 참조하십시오. NUMA 인식 vSwitch를 올바르게 계획하거나 구현하지 못하면 서버에서 단일 NUMA 노드만 사용할 수 있습니다.

교차 NUMA 구성을 방지하려면 NIC 위치를 Nova에 제공하여 올바른 NUMA 노드에 VM을 배치합니다.

사전 요구 사항

  • NUMATopologyFilter필터를 활성화했습니다.

절차

  • NeutronPhysnetNUMANodesMapping 매개변수를 설정하여 물리적 네트워크를 물리적 네트워크와 연결된 NUMA 노드에 매핑합니다.
  • VxLAN 또는 GRE와 같은 터널을 사용하는 경우 NeutronTunnelNUMANodes 매개변수도 설정해야 합니다.

    parameter_defaults:
      NeutronPhysnetNUMANodesMapping: {<physnet_name>: [<NUMA_NODE>]}
      NeutronTunnelNUMANodes: <NUMA_NODE>,<NUMA_NODE>

다음은 NUMA 노드 0으로 터널링된 두 개의 물리 네트워크가 있는 예입니다.

  • NUMA 노드 0과 연결된 프로젝트 네트워크 1개
  • 선호도가 없는 하나의 관리 네트워크

    parameter_defaults:
      NeutronBridgeMappings:
        - tenant:br-link0
      NeutronPhysnetNUMANodesMapping: {tenant: [1], mgmt: [0,1]}
      NeutronTunnelNUMANodes: 0
  • 아래 예에서 eno2 라는 장치의 physnet을 NUMA 번호 0에 할당합니다.

    # ethtool -i eno2
    bus-info: 0000:18:00.1
    
    # cat /sys/devices/pci0000:16/0000:16:02.0/0000:18:00.1/numa_node
    0

    아래 예제의 heat 템플릿에서 physnet 설정을 관찰합니다.

    NeutronBridgeMappings: 'physnet1:br-physnet1'
    NeutronPhysnetNUMANodesMapping: {physnet1: [0] }
    
    - type: ovs_user_bridge
                    name: br-physnet1
                    mtu: 9000
                    members:
                      - type: ovs_dpdk_port
                        name: dpdk2
                        members:
                          - type: interface
                            name: eno2

NUMA 인식 vSwitch 테스트

  • /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf 파일에서 구성을 관찰합니다.

    [neutron_physnet_tenant]
    numa_nodes=1
    [neutron_tunnel]
    numa_nodes=1
  • lscpu 명령을 사용하여 새 구성을 확인합니다.

    $ lscpu
  • NIC가 적절한 네트워크에 연결되어 있는 VM을 시작합니다.

알려진 제한 사항

  • 2-노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 다른 NUMA 노드에서 physnet에 연결된 두 개의 NIC가 있는 VM을 시작할 수 없습니다.
  • 2-노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 physnet에 하나의 NIC와 다른 NUMA 노드에서 터널링된 네트워크에 연결된 다른 NIC가 있는 VM을 시작할 수 없습니다.
  • 2-노드 게스트 NUMA 토폴로지를 지정하지 않은 경우 다른 NUMA 노드에서 하나의 vhost 포트와 하나의 VF가 있는 VM을 시작할 수 없습니다.
  • NUMA 인식 vSwitch 매개 변수는 Overcloud 역할에 따라 다릅니다. 예를 들어 Compute 노드 1 및 Compute 노드 2에는 다른 NUMA 토폴로지가 있을 수 있습니다.
  • VM의 인터페이스에 NUMA 선호도가 있는 경우 선호도가 단일 NUMA 노드 전용인지 확인합니다. NUMA 노드에서 NUMA 선호도 없이 모든 인터페이스를 찾을 수 있습니다.
  • 관리 네트워크가 아닌 데이터 플레인 네트워크에 대한 NUMA 선호도를 구성합니다.
  • 터널링된 네트워크의 NUMA 선호도는 모든 VM에 적용되는 글로벌 설정입니다.