1. 课程导入与容量规划目标定义

在数据中心里,AMD EPYC 平台之所以被大量用于大内存计算场景,核心原因并不只是“核多”,而是它把高核心数、超大内存容量、多通道内存带宽和 PCIe 通道数放在同一个插槽内。以 EPYC 9004 系列(Genoa)为例,单路最多 96 核、12 通道 DDR5,双路平台可提供 24 个内存通道;EPYC 9005 系列(Turin)进一步把单路核心数推到 128 核甚至 192 核,并继续沿用 12 通道 DDR5 设计。这意味着,一台双路服务器在内存侧可以挂载 24 条 DIMM,若使用 128 GB RDIMM,理论容量就是 3 TB;若换成 256 GB 3DS RDIMM,则可达到 6 TB。容量规划要做的,就是在这类硬件边界内,把业务需求翻译成可采购、可部署、可验证的配置。

大内存计算平台通常服务于几类典型场景:内存数据库(SAP HANA、Redis、Aerospike)、实时分析(ClickHouse、Doris、Spark 大 shuffle)、虚拟化与容器密度整合、科学计算与基因测序、以及 AI 推理中的大模型权重常驻。这些场景对“大内存”的诉求并不相同:内存数据库要求容量足够把热数据全部放进内存,同时延迟要低;实时分析往往更在意带宽,因为扫描和聚合会持续打满内存通道;虚拟化整合则看重容量与成本的平衡,带宽只要不成为瓶颈即可。因此,容量规划的第一步不是直接选内存条,而是先明确业务属于哪一类,再确定容量、带宽、延迟、成本四个指标的优先级。

容量规划的核心目标可以概括为一句话:在满足业务性能底线的前提下,用最低的总拥有成本(TCO)确定内存容量、通道填充方式、DIMM 类型与数量,并预留合理的增长空间。它要回答四个问题:需要多大容量?需要多少带宽?延迟能否接受?花多少钱?

四个关键指标之间存在明显的相互制约关系。容量由 DIMM 单条容量和插槽数量决定;带宽由内存通道数、每通道 DIMM 数量以及内存频率共同决定;延迟则与 NUMA 拓扑、通道填充是否对称、是否跨路访问密切相关;成本不仅包括 DIMM 采购价,还包括因插槽占满而牺牲未来扩展性带来的隐性成本。举例来说,同样做到 3 TB 容量,用 24 条 128 GB 单 rank DIMM 填满 24 通道,带宽和延迟表现最好,但成本最高;用 12 条 256 GB 双 rank DIMM 只填一半通道,成本下降,但带宽大约只剩一半,且每通道负载不均会带来访问延迟波动。规划的本质就是在这组矛盾中找平衡点。

为了把上述关系讲清楚,下面这张图把 AMD EPYC 双路平台的内存侧结构、通道分布以及容量与带宽的换算关系放在同一张示意图中。图中以双路 24 通道为基准,展示“插槽—通道—DIMM—容量/带宽”的层级关系,并标出对称填充与非对称填充两种典型状态。

AMD EPYC 双路平台内存侧结构与容量/带宽关系 CPU0 · EPYC 9004/9005 12 通道 DDR5 · 最高 96/128/192 核 CPU1 · EPYC 9004/9005 12 通道 DDR5 · 与 CPU0 通过 xGMI 互联 xGMI 跨路互联 CPU0 通道(12) 12 条 DIMM 全填充 · 对称 CPU1 通道(12) 12 条 DIMM 全填充 · 对称 非对称填充示例(仅 CPU0 半通道) 6 条填充 / 6 条空置 → 带宽减半、延迟波动 容量与带宽换算关系(示例) 容量 = 单条容量 × 有效 DIMM 数 带宽 = 通道数 × 每通道速率 × 有效通道数 延迟 ∝ NUMA 距离 + 通道负载不均 成本 = DIMM 单价 × 数量 + 扩展性代价 示例:24×128GB = 3TB,24 通道 DDR5-4800 理论带宽 ≈ 24 × 4800 MT/s × 8B ≈ 921.6 GB/s 若仅 12 通道填充,带宽约 460.8 GB/s 已填充 DIMM(对称) 已填充 DIMM(非对称) 空置插槽

从图中可以直观看到,容量和带宽并不是同一个维度的指标。容量看的是“总共能装多少”,带宽看的是“单位时间能搬多少”。在 EPYC 平台上,只要通道没有填满,带宽就会按比例下降;而如果通道填充不对称,比如只填 CPU0 的 6 个通道,CPU1 侧完全空置,那么跨路访问时延迟会明显升高,NUMA 效应会被放大。因此,规划时通常优先保证“每通道至少一条 DIMM、两路对称填充”,再根据容量需求决定单条容量。

整体规划流程可以按以下顺序推进,但不必机械照搬,实际项目中经常需要迭代:

  1. 业务画像:确认工作负载类型、数据集大小、并发量、增长预期。例如内存数据库要问“热数据多少 GB”,实时分析要问“每秒扫描多少 GB”。
  2. 容量估算:用“数据集大小 × 冗余系数 + 系统开销 + 预留增长”得到目标容量。冗余系数通常取 1.2~1.5,系统开销按 10%~15% 估算。
  3. 带宽校核:用“峰值吞吐需求 ÷ 单通道有效带宽”反推所需通道数,确保通道数不少于业务峰值所需。
  4. 延迟与拓扑检查:确认 NUMA 绑定策略、是否跨路访问、通道是否对称,必要时用 numactl 或 BIOS 中的 NUMA 设置进行约束。
  5. 成本与扩展性权衡:比较“满通道小容量”与“半通道大容量”两种方案的 TCO,并预留至少一个季度的增长插槽。
  6. 验证与回退:上线前用 stream、mlc、sysbench 或业务压测验证带宽与延迟,记录基线,便于后续扩容时对比。
一个实用的经验法则是:先按“通道数 × 单条容量”算出满配容量,再看业务目标容量落在哪个区间。如果目标容量低于满配容量的 50%,优先考虑减少 DIMM 数量而不是减小单条容量,因为减少数量可以降低成本,但必须保证两路对称、每通道至少一条。

下面给出一个可直接参考的容量规划输入表,字段和粒度都围绕 EPYC 大内存平台的实际决策设计,不引入无关的管理字段。表中数值为教学示例,实际项目需替换为真实业务数据。

规划项 示例值 说明与判断依据
业务类型 内存数据库 热数据常驻内存,容量优先,延迟敏感
数据集大小 1.8 TB 业务方提供的热数据规模
冗余系数 1.3 含索引、临时表、碎片与安全余量
系统开销 12% OS、监控、页表、驱动等占用
目标容量 ≈ 2.62 TB 1.8 × 1.3 × 1.12 ≈ 2.62 TB
平台通道数 24(双路) EPYC 9004/9005 双路各 12 通道
候选 DIMM 128 GB RDIMM 24 × 128 GB = 3 TB,满足容量且留余量
带宽校核 ≈ 921.6 GB/s 24 通道 × 4800 MT/s × 8B,满足峰值扫描
NUMA 策略 每路绑定本地内存 避免跨路访问,降低延迟波动
预留扩展 0 插槽 / 可换 256 GB 满通道后只能换单条容量,需提前评估

这张表体现了一个重要判断:当目标容量为 2.62 TB 时,24 条 128 GB 的满通道方案是合理的,因为它同时满足了容量、带宽和对称性。但如果目标容量只有 1.2 TB,那么 24 条 64 GB 或 12 条 128 GB 都可以考虑,此时就要比较“满通道小容量”与“半通道大容量”的成本和性能差异。前者带宽更好但单条容量小、未来换条成本高;后者成本更低但带宽减半,适合带宽不敏感的业务。

容量规划中最常见的误区是“只看总容量,不看通道填充”。在 EPYC 平台上,内存控制器按通道并行工作,空置通道会直接损失带宽;非对称填充还会导致部分内存访问跨路,延迟从约 90~110 ns 上升到 140 ns 以上。因此,任何容量方案都必须附带通道填充图和 NUMA 策略,否则容量达标也可能性能不达标。

最后需要强调,容量规划不是一次性任务,而是一个随业务增长持续迭代的过程。建议在首次规划时就记录基线数据:实际可用容量、实测带宽、典型延迟、每 GB 成本,以及当前插槽占用情况。后续每次扩容或业务变更时,用同一套指标重新校核,才能保证平台始终运行在容量、带宽、延迟、成本四者的合理平衡点上。