4. 计算基础设施需求调研方法

在 AMD EPYC 平台的交付项目中,最容易出问题的环节往往不是安装或调优,而是需求调研阶段把业务负载“翻译”成了错误的硬件规格。业务方说“我们要一台高性能服务器”,这句话无法直接映射到 EPYC 9004 系列的型号选择、内存通道配置或 PCIe 拓扑。需求调研的核心任务,是把业务语言转成可量化的计算基础设施指标:CPU 核数与频率、内存容量与带宽、I/O 吞吐、虚拟化密度,以及它们之间的相互约束。

从业务负载到指标:先分类,再量化

调研的第一步不是问参数,而是识别负载类型。不同类型的负载对资源的敏感维度完全不同:

  • 计算密集型(如科学计算、视频编码、编译构建):对 CPU 核数、全核频率和内存带宽敏感,I/O 通常不是瓶颈。
  • 内存密集型(如内存数据库、实时分析、大页缓存):对内存容量、内存通道数和带宽敏感,核数反而可能过剩。
  • I/O 密集型(如日志采集、消息队列、对象存储网关):对 PCIe 通道、NVMe 队列深度和网卡吞吐敏感。
  • 虚拟化/容器密度型(如私有云、VDI、多租户平台):对核数、内存容量、NUMA 拓扑和超分比敏感。

分类之后,才能针对性地采集指标。下面这张图展示了从业务负载到 EPYC 硬件规格的映射关系,以及各指标之间的约束链:

业务负载类型 计算密集型 科学计算 / 编码 / 编译 内存密集型 内存数据库 / 实时分析 I/O 密集型 日志 / 消息队列 / 存储 虚拟化密度型 私有云 / VDI / 多租户 关键需求指标 CPU 核数 / 频率 全核 vs 加速频率 内存容量 / 带宽 通道数 × 速率 I/O 吞吐 / 延迟 PCIe 通道 / NVMe 队列 虚拟化密度 超分比 / NUMA 拓扑 扩展性预留 增长系数 / 峰值余量 EPYC 平台规格映射 型号选择:核心数 / TDP / 频率 如 9354(32C) / 9554(64C) / 9654(96C) 内存配置:12 通道 DDR5 容量 / 速率 / 通道填充策略 I/O 拓扑:128 条 PCIe 5.0 NVMe / GPU / 网卡分配 NUMA 与 CCD 布局 NPS1 / NPS2 / NPS4 模式 平台验证:BIOS / BMC / 固件 兼容性列表与基线配置 约束链:核数 ↑ → 内存带宽需求 ↑ → 通道填充必须完整;I/O 吞吐 ↑ → PCIe 通道分配需与 NUMA 对齐 任一指标单独放大都可能造成瓶颈转移,需整体平衡

采集方法:从现有系统拿数据,而不是靠猜

需求调研不能只靠访谈。对于已经运行的业务,最可靠的数据来源是现有系统的监控与性能计数器。以下是针对不同指标的具体采集方法:

  • CPU 核数与频率:在 Linux 上使用 lscpu 查看逻辑核数、主频和 NUMA 节点;用 mpstat -P ALL 1 观察各核利用率,判断是“核数不够”还是“单核频率受限”。如果 %idle 长期低于 10% 且 %iowait 不高,说明 CPU 计算能力是瓶颈。
  • 内存带宽:用 perf stat -e uncore_imc/data_reads/,uncore_imc/data_writes/ 读取内存控制器计数器,换算实际带宽。也可以用 dmidecode -t memory 确认当前内存通道填充情况——如果只插了 6 条而非 12 条,带宽直接减半。
  • I/O 吞吐:用 iostat -x 1 观察 %util、await 和 r/s、w/s;用 nvme smart-log 查看 NVMe 盘的读写量和延迟。如果 await 持续高于 1ms 且队列深度已满,说明需要更多 PCIe 通道或更高性能的 NVMe。
  • 虚拟化密度:统计当前宿主机上的虚拟机数量、vCPU 总数与物理核数的比值(超分比)、每 VM 内存分配量。用 virsh list --all 和 virsh dominfo 可以快速汇总。
调研原则:优先采集“峰值”而非“均值”。业务负载的峰值往往决定硬件规格,均值只能用于容量规划。建议采集至少一个完整业务周期(如一周)的 95 分位值作为设计输入。

量化换算:把观测值转成 EPYC 规格

采集到原始数据后,需要做一次换算。以下是一个示例计算过程,用于说明方法而非实测结果:

假设某内存数据库业务,现有系统为双路 16 核(共 32 核),内存 256GB(8 通道 DDR4-2666),观测到内存带宽峰值约 85GB/s,CPU 利用率峰值 70%,NVMe 读延迟 0.8ms。业务方要求三年内数据量增长 2 倍,且延迟不恶化。

步骤 1:内存带宽需求
  当前峰值带宽 = 85 GB/s
  增长系数 = 2.0(数据量翻倍)
  预留余量 = 1.3(峰值波动 + 未来缓冲)
  目标带宽 = 85 × 2.0 × 1.3 ≈ 221 GB/s

步骤 2:EPYC 内存带宽能力
  EPYC 9004 系列 12 通道 DDR5-4800
  单通道理论带宽 = 4800 MT/s × 8 Byte = 38.4 GB/s
  12 通道理论带宽 = 38.4 × 12 = 460.8 GB/s
  实际可达约 70%~80% → 约 322~368 GB/s
  结论:单路 EPYC 即可满足 221 GB/s 需求

步骤 3:CPU 核数换算
  当前 32 核支撑当前负载,利用率 70%
  目标负载 = 当前 × 2.0
  所需核数 ≈ 32 × 2.0 × (1/0.7) ≈ 91 核
  考虑超线程与 NUMA 效率,选择 96 核型号(如 9654)

步骤 4:I/O 通道分配
  当前 NVMe 延迟 0.8ms,目标不恶化
  需保证 NVMe 直连 CPU PCIe 通道,避免经过 PCIe Switch
  96 核 EPYC 提供 128 条 PCIe 5.0 通道
  分配:8 条给 NVMe(2 块盘 ×4),32 条给 GPU,16 条给网卡
  剩余通道预留扩展

这个换算过程的关键在于:每一步都保留可追溯的输入和假设。调研报告里不能只写“建议 96 核”,而要写清楚“基于当前 32 核 70% 利用率、2 倍增长、1.3 倍余量,换算得 91 核,取整为 96 核”。这样后续如果业务增长不及预期,可以回溯调整。

虚拟化密度的特殊考量

虚拟化场景的需求调研比物理机更复杂,因为超分比会显著改变资源需求。调研时需要明确三个参数:

  • vCPU 与物理核的超分比:常见生产环境为 2:1 到 4:1。如果业务对延迟敏感(如交易系统),建议不超过 2:1;如果是开发测试环境,可以到 6:1 甚至更高。
  • 内存超分:KVM 支持内存超分,但会引入 swap 风险。调研时需确认业务是否允许内存超分,以及是否使用大页(HugePages)。
  • NUMA 亲和性:EPYC 的 CCD 和 NUMA 布局会影响 VM 性能。调研时需确认 VM 是否绑定 NUMA 节点,以及是否跨节点分配。

一个实用的做法是:先按“每 VM 平均 vCPU 数 × VM 数量 ÷ 目标超分比”估算物理核数,再按“每 VM 内存 × VM 数量 × 内存超分系数”估算内存容量,最后用 EPYC 的 NUMA 拓扑验证是否能在单路内满足。如果单路不够,再考虑双路。

常见误区:只按核数选型,忽略内存带宽和 PCIe 通道。例如 96 核 EPYC 如果只配 6 条内存,带宽只有满配的一半,计算密集型业务会出现“核多但喂不饱”的情况。调研时必须把内存通道填充率作为独立指标确认。

调研输出:一份可执行的规格清单

调研的最终产出不是一份问卷,而是一份可以直接用于采购和交付的规格清单。清单应包含以下字段:业务负载类型、当前观测值、增长系数、目标值、对应 EPYC 型号、内存配置、PCIe 分配、NUMA 模式、验证方式。每个字段都要有数据来源和假设说明。

例如,针对上述内存数据库场景,输出清单可以写成:

指标 当前观测 增长/余量 目标值 EPYC 配置
CPU 核数 32 核 / 70% 利用率 ×2.0 / ÷0.7 ≈91 核 9654(96 核)
内存带宽 85 GB/s ×2.0 / ×1.3 ≈221 GB/s 12 通道 DDR5-4800 满配
内存容量 256 GB ×2.0 / ×1.2 ≈614 GB 768 GB(64GB ×12)
NVMe 延迟 0.8 ms 不恶化 ≤0.8 ms PCIe 5.0 直连,2×NVMe
NUMA 模式 NPS1 延迟敏感 NPS4 BIOS 设置 NPS4

这份清单的价值在于:它把“业务要快”变成了“96 核、768GB、12 通道满配、NPS4”。交付工程师拿到清单后,可以直接对照 EPYC 平台文档进行 BIOS 配置、内存插法和 PCIe 分配,不需要再回头猜测业务意图。调研方法的核心,就是让每一个硬件决策都有业务数据支撑,而不是靠经验或厂商推荐。