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의 워크플로우 및 입력 매개변수를 정의하려면 다음을 수행합니다.
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: 50openstack 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여야 합니다.
파생 매개 변수를 사용하여 오버클라우드 배포
다음과 같은 파생 매개 변수를 사용하여 오버클라우드를 배포하려면 다음을 수행합니다.
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에 적용됩니다. 이러한 매개변수를 전역적으로 적용할 수 있지만 역할별 매개변수는 전역 매개변수를 덮어쓸 수 있습니다.
- 역할 파일과 환경에 고유한 모든 환경 파일을 사용하여 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 역할에 대해서만 공식을 적용합니다.