搜索

11.8. 创建使用 DPDK 的 HCI overcloud

download PDF

您可以通过共置(co-locating)并配置计算和 Ceph Storage 服务来优化资源使用量,通过部署带有超融合节点的 NFV 基础架构。

有关超融合基础架构(HCI)的更多信息,请参阅部署超融合基础架构

以下章节提供了各种配置示例。

11.8.1. NUMA 节点配置示例

为提高性能,将租户网络和 Ceph 对象服务守护进程(OSD)放在一个 NUMA-0 中,如 NUMA-0,以及 VNF 和另一个 NUMA 节点上的任何非 NFV 虚拟机,如 NUMA-1。

CPU 分配:
NUMA-0NUMA-1

Ceph OSD 数量 * 4 HT

VNF 和非 NFV 虚拟机的客户机 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 Object Storage Daemons (OSD)进程分配 CPU 资源。此处显示的值是示例。根据您的工作负载和硬件调整值。

1
osd_numa_node :将 Ceph 进程的关联性设置为 NUMA 节点,例如 0 代表 NUMA-01 代表 NUMA-1,以此类推。-1 将关联性设置为没有 NUMA 节点。

在本例中,osd_numa_node 设置为 NUMA-0。如 第 11.8.3 节 “DPDK 配置文件示例” 所示,IsolCpusListNUMA-1 上包含奇数的 CPU,在 OvsPmdCoreList 元素被删除后。由于对延迟敏感的 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 分配内存。默认值为 0.7

系统中 RAM 总量的 70% 是起点,从中减去了非自动tuned Ceph 守护进程所消耗的任何内存。当所有 OSD 的 osd_memory_target_autotune 为 true 时,剩余的内存被除以 OSD。对于 HCI 部署,mgr/cephadm/autotune_memory_target_ratio 可以设置为 0.2,以便更多内存可用于计算服务。根据需要调整,以确保每个 OSD 至少有 5 GB 内存。

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 :要计算 大页,请从总内存中减去 NovaReservedHostMemory 参数的值。
2
IsolCpusList:分配您要使用此参数与主机进程隔离的一组 CPU 内核。将 OvsPmdCoreList 参数的值添加到 NovaComputeCpuDedicatedSet 参数的值,以计算 IsolCpusList 参数的值。
3
OvsDpdkSocketMemory :使用 OvsDpdkSocketMemory 参数指定从每个 NUMA 节点的巨页池中预先分配的内存量(以 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 参数,从巨页池中预先分配内存(以 MB 为单位)。它是与 OvsDpdkSocketMemory 参数的值相同的内存总量。
2
NovaReservedHostMemory: 为带有 NovaReservedHostMemory 参数的主机上的任务保留内存(以 MB 为单位)。使用以下准则计算您必须保留的内存量:
  • 每个 OSD 5 GB。
  • 每个虚拟机的 0.5 GB 开销。
  • 4GB 用于常规主机处理。确保分配足够的内存以防止跨 NUMA OSD 操作导致潜在的性能下降。
3
NovaComputeCpuDedicatedSet :列出 OvsPmdCoreList 中未找到的 CPU,或使用 NovaComputeCpuDedicatedSet 参数列出 Ceph_osd_docker_cpuset_cpus。CPU 必须与 DPDK NIC 位于同一个 NUMA 节点上。

11.8.5. 推荐的 HCI-DPDK 部署配置

表 11.1. HCI 部署的可调整参数
块设备类型OSD、内存、vCPU 每个设备

NVMe

内存:5GB per OSD
OSDs per device: 4
vCPUs per device: 3

SSD

内存:5GB per OSD
OSDs per device: 1
vCPUs per device: 4

HDD

内存:5GB per OSD
OSDs per device: 1
vCPUs per device: 1

将相同的 NUMA 节点用于以下功能:

  • 磁盘控制器
  • 存储网络
  • 存储 CPU 和内存

为 DPDK 提供商网络的以下功能分配另一个 NUMA 节点:

  • NIC
  • PMD CPU
  • 套接字内存

11.8.6. 部署 HCI-DPDK overcloud

按照以下步骤部署使用 DPDK 的超融合 overcloud。

先决条件

  • Red Hat OpenStack Platform (RHOSP) 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 文件部署 overcloud。

    示例

    $ 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.yaml 而不是 cephadm-rbd-only.yaml

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.