7.4.2. 内存参数


OVS-DPDK 使用下列内存参数:

OvsDpdkMemoryChannels

映射每个 NUMA 节点的 CPU 中的内存频道。Open vSwitch 使用 OvsDpdkMemoryChannels 参数作为 other_config:dpdk-extra="-n <value>" 值。

  • 使用 dmidecode -t memory 或您的硬件手册来确定可用的内存通道数。
  • 使用 ls /sys/devices/system/node/node* -d 确定 NUMA 节点的数量。
  • 将可用内存通道数除以 NUMA 节点数。
NovaReservedHostMemory

以 MB 为单位保留主机上任务的内存。Compute 节点使用这个值作为 nova.conf 中的 reserved_host_memory_mb 值。

  • 使用静态推荐值 4096 MB。
OvsDpdkSocketMemory

指定从每个 NUMA 节点预先分配巨页池的内存量(以 MB 为单位)。这个值被 Open vSwitch 用作 other_config:dpdk-socket-mem 值。

  • 提供 作为用逗号分开的列表。从 NUMA 节点上的每个 NIC 的 MTU 值计算 OvsDpdkSocketMemory 值。
  • 对于没有 DPDK NIC 的 NUMA 节点,请使用 1024 MB (1GB)的静态建议。
  • 以下驱除 OvsDpdkSocketMemory 的值如下:

    • MEMORY_REQD_PER_MTU = (ROUNDUP_PER_MTU + 800) * (4096 * 64) Bytes

      • 800 是开销值。
      • 4096 * 64 是 mempool 中的数据包数量。
  • 为 NUMA 节点上设置的每个 MTU 值添加 MEMORY_REQD_PER_MTU,再添加另一个 512 MB 作为缓冲区。将值设为 1024 的倍数。
注意

如果 MTU 大小不是 1500,您可能会在 /var/log/messages 中创建 内存池 错误消息。如果出现在实例启动时发生,可以忽略此错误消息。要避免此消息,请将 1500 MTU 的额外 OvsDpdkSocketMemory 增加到您的 OvsDpdkSocketMemory 计算。

Calculation 示例 - MTU 2000 和 MTU 9000

DPDK NIC dpdk0 和 dpdk1 位于相同的 NUMA 节点上,分别使用 MTU 9000 和 2000 进行配置。生成内存所需的计算示例如下:

  1. 将 MTU 值向下舍入到最接近 1024 字节。

    The MTU value of 9000 becomes 9216 bytes.
    The MTU value of 2000 becomes 2048 bytes.
  2. 根据这些循环的字节值计算每个 MTU 值所需的内存。

    Memory required for 9000 MTU = (9216 + 800) * (4096*64) = 2625634304
    Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112
  3. 计算所需的总内存总量(以字节为单位)。

    2625634304 + 746586112 + 536870912 = 3909091328 bytes.

    此计算代表( MTU 为 9000 所需要的内存)+(MTU 为 2000)+(512 MB 缓冲所需的内存)。

  4. 将所需的总内存转换为 MB。

    3909091328 / (1024*1024) = 3728 MB.
  5. 将该值向上舍入到最接近的 1024。

    3724 MB rounds up to 4096 MB.
  6. 使用这个值设置 OvsDpdkSocketMemory

        OvsDpdkSocketMemory: “4096,1024”

Calculation 示例 - MTU 2000

DPDK NIC dpdk0 和 dpdk1 位于相同的 NUMA 节点上,分别使用 MTU 2000 和 2000 进行配置。生成内存所需的计算示例如下:

  1. 将 MTU 值向下舍入到最接近 1024 字节。

    The MTU value of 2000 becomes 2048 bytes.
  2. 根据这些循环的字节值计算每个 MTU 值所需的内存。

    Memory required for 2000 MTU = (2048 + 800) * (4096*64) = 746586112
  3. 计算所需的总内存总量(以字节为单位)。

    746586112 + 536870912 = 1283457024 bytes.

    此计算代表(MTU 为 2000)+(512 MB 缓冲)所需的内存。

  4. 将所需的总内存转换为 MB。

    1283457024 / (1024*1024) = 1224 MB.
  5. 将该值向上舍入到最接近的 1024。

    1224 MB rounds up to 2048 MB.
  6. 使用这个值设置 OvsDpdkSocketMemory

        OvsDpdkSocketMemory: “2048,1024”
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部