4. 计算基础设施需求调研方法
在 AMD EPYC 平台的交付项目中,最容易出问题的环节往往不是安装或调优,而是需求调研阶段把业务负载“翻译”成了错误的硬件规格。业务方说“我们要一台高性能服务器”,这句话无法直接映射到 EPYC 9004 系列的型号选择、内存通道配置或 PCIe 拓扑。需求调研的核心任务,是把业务语言转成可量化的计算基础设施指标:CPU 核数与频率、内存容量与带宽、I/O 吞吐、虚拟化密度,以及它们之间的相互约束。
从业务负载到指标:先分类,再量化
调研的第一步不是问参数,而是识别负载类型。不同类型的负载对资源的敏感维度完全不同:
- 计算密集型(如科学计算、视频编码、编译构建):对 CPU 核数、全核频率和内存带宽敏感,I/O 通常不是瓶颈。
- 内存密集型(如内存数据库、实时分析、大页缓存):对内存容量、内存通道数和带宽敏感,核数反而可能过剩。
- I/O 密集型(如日志采集、消息队列、对象存储网关):对 PCIe 通道、NVMe 队列深度和网卡吞吐敏感。
- 虚拟化/容器密度型(如私有云、VDI、多租户平台):对核数、内存容量、NUMA 拓扑和超分比敏感。
分类之后,才能针对性地采集指标。下面这张图展示了从业务负载到 EPYC 硬件规格的映射关系,以及各指标之间的约束链:
采集方法:从现有系统拿数据,而不是靠猜
需求调研不能只靠访谈。对于已经运行的业务,最可靠的数据来源是现有系统的监控与性能计数器。以下是针对不同指标的具体采集方法:
- 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可以快速汇总。
量化换算:把观测值转成 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 拓扑验证是否能在单路内满足。如果单路不够,再考虑双路。
调研输出:一份可执行的规格清单
调研的最终产出不是一份问卷,而是一份可以直接用于采购和交付的规格清单。清单应包含以下字段:业务负载类型、当前观测值、增长系数、目标值、对应 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 分配,不需要再回头猜测业务意图。调研方法的核心,就是让每一个硬件决策都有业务数据支撑,而不是靠经验或厂商推荐。