8장. OVS-DPDK 배포 구성

이 섹션에서는 Red Hat OpenStack Platform 환경에 OVS-DPDK를 배포합니다. Overcloud는 일반적으로 컨트롤러 노드, 컴퓨팅 노드 및 다양한 스토리지 노드 유형과 같은 사전 정의된 역할의 노드로 구성됩니다. 이러한 각 기본 역할에는 director 노드의 코어 heat 템플릿에 정의된 서비스 세트가 포함되어 있습니다.

오버클라우드를 배포하기 전에 언더클라우드를 설치하고 구성해야 합니다. 자세한 내용은 Director 설치 및 사용 가이드 를 참조하십시오.

중요

OVS-DPDK에 OpenStack 네트워크를 최적화하려면 network-environment.yaml 파일에 있는 OVS- DPDK 매개변수에 가장 적합한 값을 결정해야 합니다.

참고

director heat 템플릿이 수정하는 etc/tuned/cpu-partitioning-variables.conf 에서 isolated_cores 또는 기타 값을 수동으로 편집하거나 변경하지 마십시오.

8.1. 워크플로우를 사용하여 DPDK 매개변수 비활성화

중요

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

DPDK의 Mistral 워크플로우 개요는 7.2절. “워크플로우 및 파생 매개 변수” 을 참조하십시오.

사전 요구 사항

이 워크플로에서 검색한 데이터를 제공하려면 하드웨어 검사 추가 기능(inspection_extras)을 활성화하는 등 베어 메탈 인트로스펙션이 있어야 합니다. 하드웨어 검사 추가 기능은 기본적으로 활성화되어 있습니다. 노드 하드웨어에 대한 자세한 내용은 다음을 참조하십시오. 노드의 하드웨어 검사.

DPDK의 워크플로우 및 입력 매개 변수 정의

다음 목록에서는 OVS-DPDK 워크플로우에 제공할 수 있는 입력 매개변수에 대해 간단히 설명합니다.

num_phy_cores_per_numa_node_for_pmd
이 입력 매개변수는 DPDK NIC와 연결된 NUMA 노드에 필요한 최소 코어 수를 지정합니다. 하나의 물리적 코어는 DPDK NIC와 연결되어 있지 않은 다른 NUMA 노드에 할당됩니다. 이 매개 변수가 1로 설정되어 있는지 확인합니다.
huge_page_allocation_percentage
이 입력 매개 변수는 대규모 페이지로 구성할 수 있는 NovaReservedHostMemory 를 제외하고 총 메모리의 필요한 백분율을 지정합니다. KernelArgs 매개 변수는 지정된 huge_page_allocation_percentage 를 기반으로 계산된 대규모 페이지를 사용하여 파생됩니다. 이 매개 변수가 50으로 설정되어 있는지 확인합니다.

워크플로는 이러한 입력 매개 변수 및 베어 메탈 세부 검사 세부 사항에서 적절한 DPDK 매개변수 값을 계산합니다.

DPDK의 워크플로우 및 입력 매개변수를 정의하려면 다음을 수행합니다.

  1. usr/share/openstack-tripleo-heat-templates/plan-samples/plan-environment-derived-params.yaml 파일을 로컬 디렉터리로 복사하고 환경에 맞게 입력 매개변수를 설정합니다.

      workflow_parameters:
        tripleo.derive_params.v1.derive_parameters:
          # DPDK Parameters #
          # Specifies the minimum number of CPU physical cores to be allocated for DPDK
          # PMD threads. The actual allocation will be based on network config, if
          # the a DPDK port is associated with a numa node, then this configuration
          # will be used, else 1.
          num_phy_cores_per_numa_node_for_pmd: 1
          # Amount of memory to be configured as huge pages in percentage. Ouf the
          # total available memory (excluding the NovaReservedHostMemory), the
          # specified percentage of the remaining is configured as huge pages.
          huge_page_allocation_percentage: 50
  2. openstack overcloud deploy 명령을 실행하고 다음 정보를 포함합니다.

    • update-plan-only 옵션
    • 환경과 관련된 역할 파일 및 모든 환경 파일
    • --plan -environment-file 선택적 인수가 있는 plan-environment-derived- parms.yaml 파일

      $ openstack overcloud deploy --templates --update-plan-only \
      -r /home/stack/roles_data.yaml \
      -e /home/stack/<environment-file> \
      ... _#repeat as necessary_ ...
      **-p /home/stack/plan-environment-derived-params.yaml**

이 명령의 출력에는 파생된 결과가 표시되며, 이는 plan-environment.yaml 파일에도 병합됩니다.

Started Mistral Workflow tripleo.validations.v1.check_pre_deployment_validations. Execution ID: 55ba73f2-2ef4-4da1-94e9-eae2fdc35535
Waiting for messages on queue '472a4180-e91b-4f9e-bd4c-1fbdfbcf414f' with no timeout.
Removing the current plan files
Uploading new plan files
Started Mistral Workflow tripleo.plan_management.v1.update_deployment_plan. Execution ID: 7fa995f3-7e0f-4c9e-9234-dd5292e8c722
Plan updated.
Processing templates in the directory /tmp/tripleoclient-SY6RcY/tripleo-heat-templates
Invoking workflow (tripleo.derive_params.v1.derive_parameters) specified in plan-environment file
Started Mistral Workflow tripleo.derive_params.v1.derive_parameters. Execution ID: 2d4572bf-4c5b-41f8-8981-c84a363dd95b
Workflow execution is completed. result:
ComputeOvsDpdkParameters:
 IsolCpusList: 1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31
 KernelArgs: default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on
   isolcpus=1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31
 NovaReservedHostMemory: 4096
 NovaComputeCpuDedicatedSet: 2,3,4,5,6,7,18,19,20,21,22,23,10,11,12,13,14,15,26,27,28,29,30,31
 OvsDpdkMemoryChannels: 4
 OvsDpdkSocketMemory: 1024,1024
 OvsPmdCoreList: 1,17,9,25
참고

OvsDpdkMemoryChannels 매개변수는 인트로스펙션 세부 정보에서 파생될 수 없습니다. 대부분의 경우 이 값은 4여야 합니다.

파생 매개 변수를 사용하여 오버클라우드 배포

다음과 같은 파생 매개 변수를 사용하여 오버클라우드를 배포하려면 다음을 수행합니다.

  1. deploy 명령 출력의 파생 매개 변수를 network-environment.yaml 파일에 복사합니다.

      # DPDK compute node.
      ComputeOvsDpdkParameters:
        KernelArgs: default_hugepagesz=1GB hugepagesz=1G hugepages=32 iommu=pt intel_iommu=on
        TunedProfileName: "cpu-partitioning"
        IsolCpusList: "1,2,3,4,5,6,7,9,10,17,18,19,20,21,22,23,11,12,13,14,15,25,26,27,28,29,30,31"
        NovaComputeCpuDedicatedSet: ['2,3,4,5,6,7,18,19,20,21,22,23,10,11,12,13,14,15,26,27,28,29,30,31']
        NovaReservedHostMemory: 4096
        OvsDpdkSocketMemory: "1024,1024"
        OvsDpdkMemoryChannels: "4"
        OvsPmdCoreList: "1,17,9,25"
    참고

    이러한 매개 변수는 특정 역할인 ComputeOvsDpdk에 적용됩니다. 이러한 매개변수를 전역적으로 적용할 수 있지만 역할별 매개변수는 전역 매개변수를 덮어쓸 수 있습니다.

  2. 역할 파일과 환경에 고유한 모든 환경 파일을 사용하여 Overcloud를 배포합니다.
 openstack overcloud deploy --templates \
 -r /home/stack/roles_data.yaml \
 -e /home/stack/<environment-file> \
... #repeat as necessary ...
참고

Compute, ComputeOvsDpdk 및 ComputeSriov가 있는 클러스터에서 워크플로는 Compute 또는 ComputeSriovs가 아닌 ComputeOvsDpdk 역할에 대해서만 공식을 적용합니다.