검색

11.8. DPDK를 사용하는 HCI 오버클라우드 생성

download PDF

최적화된 리소스 사용을 위해 Compute 및 Ceph Storage 서비스를 공동 배치하고 구성하여 하이퍼컨버지드 노드를 사용하여 NFV 인프라를 배포할 수 있습니다.

하이퍼 컨버지드 인프라(HCI)에 대한 자세한 내용은 하이퍼컨버지드 인프라 배포를 참조하십시오.

다음 섹션에서는 다양한 구성의 예를 제공합니다.

11.8.1. NUMA 노드 구성 예

성능 향상을 위해 NUMA-0 및 VNF와 같은 하나의 NUMA 노드에 테넌트 네트워크와 Ceph 개체 서비스 데몬(예: NUMA-1)을 다른 NUMA 노드에 배치하십시오.

CPU 할당:
NUMA-0NUMA-1

Ceph OSD 수 * 4 HT

VNF 및 비NFV VM용 게스트 vCPU

DPDK lcore - 2 HT

DPDK lcore - 2 HT

DPDK PMD - 2 HT

DPDK PMD - 2 HT

CPU 할당의 예:
 NUMA-0NUMA-1

Ceph OSD

32,34,36,38,40,42,76,78,80,82,84,86

 

DPDK-lcore

0,44

1,45

DPDK-pmd

2,46

3,47

Nova

 

5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87

11.8.2. Ceph 구성 파일 예

이 섹션에서는 샘플 Red Hat Ceph Storage 구성 파일에 대해 설명합니다. Red Hat OpenStack Platform 환경에 적합한 값을 대체하여 구성 파일을 모델링할 수 있습니다.

[osd]
osd_numa_node = 0                              # 1
osd_memory_target_autotune = true              # 2

[mgr]
mgr/cephadm/autotune_memory_target_ratio = 0.2 # 3

다음 매개 변수를 사용하여 Ceph OSD(오브젝트 스토리지 데몬) 프로세스의 CPU 리소스를 할당합니다. 여기에 표시된 값은 예입니다. 워크로드 및 하드웨어에 따라 값을 적절하게 조정합니다.

1
osd_numa_node: Ceph 프로세스의 선호도를 NUMA 노드로 설정합니다(예: NUMA-0 의 경우 0, NUMA-1 의 경우1 등). -1 은 선호도를 NUMA 노드로 설정합니다.

이 예에서 osd_numa_nodeNUMA-0 으로 설정됩니다. 11.8.3절. “DPDK 구성 파일의 예” 에 표시된 대로 IsolCpusList 에는 OvsPmdCoreList 의 요소가 제거된 후 NUMA-1 의 홀수 CPU가 포함되어 있습니다. 대기 시간에 민감한 Compute 서비스(nova) 워크로드는 NUMA-1 에서 호스팅되므로 NUMA-0 에서 Ceph 워크로드를 격리해야 합니다. 이 예에서는 stroage 네트워크의 디스크 컨트롤러 및 네트워크 인터페이스가 NUMA-0 에 있다고 가정합니다.

2
osd_memory_target_autotune: true로 설정하면 OSD 데몬이 osd_memory_target 구성 옵션을 기반으로 메모리 사용을 조정합니다.
3
autotune_memory_target_ratio: OSD에 메모리를 할당하는 데 사용됩니다. 기본값은 Cryostat 입니다.

시스템의 총 RAM의 70%는 시작점이며, 자동 조정되지 않은 Ceph 데몬이 사용하는 메모리는 모두 차감됩니다. osd_memory_target_autotune 이 모든 OSD에 대해 true인 경우 나머지 메모리는 OSD로 나뉩니다. HCI 배포의 경우 Compute 서비스에 더 많은 메모리를 사용할 수 있도록 mgr/cephadm/autotune_memory_target_ratio0.2 로 설정할 수 있습니다. 각 OSD에 5GB 이상의 메모리가 있는지 확인하기 위해 필요에 따라 조정합니다.

11.8.3. DPDK 구성 파일의 예

parameter_defaults:
  ComputeHCIParameters:
    KernelArgs: "default_hugepagesz=1GB hugepagesz=1G hugepages=240 intel_iommu=on iommu=pt                                           # 1
      isolcpus=2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87"
    TunedProfileName: "cpu-partitioning"
    IsolCpusList:                                               # 2
      ”2,46,3,47,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,49,51,
      53,55,57,59,61,63,65,67,69,71,73,75,77,79,81,83,85,87"
    VhostuserSocketGroup: hugetlbfs
    OvsDpdkSocketMemory: "4096,4096"                            # 3
    OvsDpdkMemoryChannels: "4"

    OvsPmdCoreList: "2,46,3,47"                                 # 4
1
KernelArgs: hugepages 를 계산하려면 NovaReservedHostMemory 매개변수 값을 총 메모리에서 제거합니다.
2
IsolCpusList: 이 매개변수를 사용하여 호스트 프로세스에서 격리할 CPU 코어 세트를 할당합니다. OvsPmdCoreList 매개변수의 값을 NovaComputeCpuDedicatedSet 매개변수의 값에 추가하여 IsolCpusList 매개변수 값을 계산합니다.
3
OvsDpdkSocketMemory: OvsDpdkSocketMemory 매개변수를 사용하여 NUMA 노드당 hugepage 풀에서 사전 할당하기 위해 MB 단위로 메모리 양을 지정합니다. OVS-DPDK 매개변수 계산에 대한 자세한 내용은 OVS-DPDK 매개변수를 참조하십시오.
4
OvsPmdCoreList: 이 매개변수를 사용하여 DPDK 폴링 모드 드라이버(PMD)에 사용되는 CPU 코어를 지정합니다. DPDK 인터페이스의 로컬 NUMA 노드와 연결된 CPU 코어를 선택합니다. 각 NUMA 노드에 대해 2개의 HT 형제 스레드를 할당하여 OvsPmdCoreList 매개변수 값을 계산합니다.

11.8.4. nova 구성 파일의 예

parameter_defaults:
  ComputeHCIExtraConfig:
    nova::cpu_allocation_ratio: 16 # 2
    NovaReservedHugePages:                                         # 1
        - node:0,size:1GB,count:4
        - node:1,size:1GB,count:4
  NovaReservedHostMemory: 123904                                   # 2
  # All left over cpus from NUMA-1
  NovaComputeCpuDedicatedSet:                                                  # 3
  ['5','7','9','11','13','15','17','19','21','23','25','27','29','31','33','35','37','39','41','43','49','51','|
  53','55','57','59','61','63','65','67','69','71','73','75','77','79','81','83','85','87
1
NovaReservedHugePages: NovaReservedHugePages 매개변수를 사용하여 hugepage 풀에서 메모리를 MB로 미리 할당합니다. 이는 OvsDpdkSocketMemory 매개변수 값과 동일한 메모리 합계입니다.
2
NovaReservedHostMemory: NovaReservedHostMemory 매개변수를 사용하여 호스트의 작업에 메모리를 MB로 예약합니다. 다음 지침을 사용하여 예약해야 하는 메모리 양을 계산합니다.
  • 각 OSD에 대해 5GB입니다.
  • 각 VM에 대해 0.5GB 오버헤드입니다.
  • 일반 호스트 처리를 위한 4GB. NUMA 간 OSD 작업으로 인한 성능 저하를 방지하기 위해 충분한 메모리를 할당해야 합니다.
3
NovaComputeCpuDedicatedSet: OvsPmdCoreList 또는 NovaComputeCpuDedicatedSet 매개변수를 사용하여 Ceph_osd_docker_cpuset_cpus 에서 찾을 수 없는 CPU를 나열합니다. CPU는 DPDK NIC와 동일한 NUMA 노드에 있어야 합니다.

11.8.5. HCI-DPDK 배포에 권장되는 구성

표 11.1. HCI 배포를 위한 조정 가능한 매개변수
블록 장치 유형장치당 OSD, 메모리, vCPU

NVMe

메모리 : 장치당 OSD
OSD당 5GB: 장치당 4
vCPU: 3

SSD

메모리 : 장치당 OSD
OSD당 5GB: 장치당 1
vCPU: 4

HDD

메모리 : 장치당 OSD
OSD당 5GB: 장치당 1
vCPU: 1GB

다음 기능에 동일한 NUMA 노드를 사용합니다.

  • 디스크 컨트롤러
  • 스토리지 네트워크
  • 스토리지 CPU 및 메모리

DPDK 공급자 네트워크의 다음 기능에 대해 다른 NUMA 노드를 할당합니다.

  • NIC
  • PMD CPU
  • 소켓 메모리

11.8.6. HCI-DPDK 오버클라우드 배포

DPDK를 사용하는 하이퍼컨버지드 오버클라우드를 배포하려면 다음 단계를 따르십시오.

사전 요구 사항

  • RHOSP(Red Hat OpenStack Platform) 17.1 이상.
  • Red Hat Ceph Storage 6.1의 최신 버전입니다.

프로세스

  1. Controller 및 ComputeHCIOvsDpdk 역할에 대한 roles_data.yaml 파일을 생성합니다.

    $ openstack overcloud roles generate -o ~/<templates>/roles_data.yaml \
    Controller ComputeHCIOvsDpdk
  2. openstack flavor createopenstack flavor set 명령을 사용하여 새 플레이버를 생성하고 구성합니다.
  3. RHOSP director 및 Ceph 구성 파일을 사용하여 Ceph를 배포합니다.

    예제

    $ openstack overcloud ceph deploy --config initial-ceph.conf

  4. 생성한 사용자 지정 roles_data.yaml 파일을 사용하여 오버클라우드를 배포합니다.

    예제

    $ openstack overcloud deploy --templates \
      --timeout 360 \
      -r ~/<templates>/roles_data.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/\
      cephadm/cephadm-rbd-only.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services-docker/neutron-ovs-dpdk.yaml \
      -e ~/<templates>/<custom environment file>

    중요

    이 예에서는 Ceph RGW(오브젝트 스토리지) 없이 Ceph RBD(블록 스토리지)를 배포합니다. 배포에 RGW를 포함하려면 cephadm-rbd-only.yaml 대신 cephadm.yaml 을 사용합니다.

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.