输入客户业务场景(并发量、TPS、数据量、IOPS、吞吐、时延、保留年限), 输出 CPU 与存储选型推导、配置清单(BOM)含跨层一致性校验、三年 TCO、 友商公开参数对标表、技术方案书与商用演示 PPT 骨架。
场景为自拟、选型为公开规格驱动的模型推算,非真实业务数据、非实测。
零第三方依赖,git clone 后直接跑。
服务器与存储的选型和算力卡选型是两件不同的事,而多数测算工具只做算力卡:
| 侧 | 瓶颈关注点 | 本项目模块 |
|---|---|---|
| CPU | 核数推导、内存带宽、单路 vs 双路拓扑、内存通道是否填满 | cpu_sizing.py |
| 存储 | IOPS 与吞吐双约束、耐久度 TBW、NVMe/SATA/SAS 形态差异 | storage_sizing.py |
最容易出错的三个地方,本项目逐一处理:
| 常见错误 | 后果 | 本项目的处理 |
|---|---|---|
| 只算权重不算其他 | 带宽与容量都算错 | 核数按并发与 TPS 两条路径取大者,内存向上取整到通道倍数 |
| 以为双路性能翻倍 | 带宽只 ×1.6(内存控制器与 UPI 争用),多耗 10% 电 | 双路判定 + 折损系数显式写入推导链 |
| 存储只看 IOPS 或只看吞吐 | 选出的盘另一个维度跑不动 | 四个约束各自算盘数,取最大值 |
| 能力 | 输入 | 输出 | 关键约束 |
|---|---|---|---|
| CPU 选型 | 并发、TPS、时延、数据库核数 | 核数推导链 + 内存 + 单路/双路 + 带宽 | 至强与国产双候选;不过度配置 |
| 存储选型 | 数据量、IOPS、吞吐、时延、写入量 | 盘数 + RAID + 形态 + 耐久度需求 | 四约束取最大值;接口必须区分 |
| BOM 校验 | CPU + 存储测算结果 | 配置清单 + 跨层冲突清单 | 5 条规则,每条带修正建议 |
| 三年 TCO | 配置 + 电价 + 利用率 | 分项成本 + 可压缩性标注 | 电费单列;硬件价缺失不凑总额 |
| 友商对标 | 公开规格 | CPU/存储/整机三类参数并列 | 只列客观参数,不做优劣评价 |
| 文档装配 | 以上全部 | 方案书 / 演示 PPT / 客户 FAQ | 演示骨架要求先问客户再报配置 |
| 单路 | 双路 | |
|---|---|---|
| 核数 | 受单路上限约束 | 翻倍 |
| 内存带宽 | 单路值 | 仅 ×1.6 |
| 功耗 | 单路 | ×2 × 1.1 |
| 成本 | 低 | 显著高 |
双路买不到双倍带宽。 很多客户默认双路,实际多花了钱却只拿到 1.6 倍带宽 和 2.1 倍功耗。这个判断直接写进推导链,是本项目最能体现专业度的一处。
盘数 = max(IOPS 所需, 吞吐所需, 容量所需, 耐久度所需)
实测(data_lake 场景,3000 TB / 20000 IOPS / 5000 MB/s):
| 约束 | 所需盘数 |
|---|---|
| IOPS | 8.30 块 |
| 吞吐 | 1.67 块 |
| 容量 | 870.00 块 ← 最紧 |
| 耐久度 | 未提供日写入量,跳过 |
只按 IOPS 算会得出 9 块盘 —— 容量差 90 倍。这就是「四个约束」的价值。
| 概念 | 定义 | 常见误解 |
|---|---|---|
| IOPS | 每秒随机读操作数 | 与顺序读是两个独立瓶颈 |
| 吞吐 | 每秒顺序读 MB/s | 容量大不等于吞吐高 |
| TBW | 盘寿命内可写入的总 TB 数 | 机械盘没有这个概念 |
能说清这三句话,就说明对固态存储的技术特点有了清晰认识。
厂商不公开统一售价,渠道价随时变动。TCO 中硬件采购列为「未计入项」并 注明「合计不完整」—— 编价格算出的 TCO 在客户面前一问就穿帮。
| 数据 | 来源 | 可信度 |
|---|---|---|
| 至强规格(核数/频率/通道/UPI/TDP/带宽) | Intel 官方产品规格页 | official |
| 国产 CPU 定位(海光/鲲鹏/飞腾/龙芯/兆芯/申威) | 公开技术分析 + 厂商官网 | secondary |
| 存储介质参数(IOPS/吞吐/TBW/形态) | 厂商公开规格书 | secondary |
| 存储指标口径 | nvme-cli(概念层级)、fio(iops/bw/延迟三维度) | official |
| 行业毛利率背景 | 存储 / 服务器行业公开年报(公开披露口径) | secondary |
| 场景参数 | 自拟 | — |
明确不含:真实客户名称、合同金额、账号凭据、内部报价、厂商内部测试数据。
国产 CPU 的内存带宽、TDP 大量字段在公开资料中口径不一,表中留空即代表 未查到。这是真实的选型信息缺口,不是数据缺失 —— 遇到此类客户 应建议以厂商正式规格书为准。
data/scenarios/<场景>.json ─┐
data/specs/intel_xeon.csv ├─> catalog.py ──> 目录(缺列即报错,空字段=None)
data/specs/domestic_cpu.csv│
data/specs/nvme.csv ─┘
│
cpu_sizing.py ──── 并发/TPS 两条路径取大者 → 核数 → 内存 → 单路/双路 + 带宽折损
│ (至强按最小满足型号挑选,不选最大核数)
├─ storage_sizing.py ┈ IOPS/吞吐/容量/耐久度 四约束 → max(盘数)
├─ bom_builder.py ──── 生成清单 + 5 条跨层一致性校验
├─ tco.py ─────────── 电费单列 + 每项标注可压缩性
├─ competitor_matrix.py ┈ CPU/存储/整机 参数并列(无优劣结论)
│
└─ doc_assembler.py ── 技术方案书 / 演示 PPT / 客户 FAQ
环境:Python 3.10+(验证于 3.12.8 / Windows)。无需安装任何运行时依赖。
# 跑全部场景
python -m src.cli --all
# 指定机型与存储参数
python -m src.cli --scenario data_lake --chassis "6U 液冷 4 卡" --interface NVMe --raid RAID6
# 只出友商对标表
python -m src.cli --competitor
# 跑测试
pip install pytest
python -m pytest -q输出落在 output/<场景编号>/:
| 文件 | 内容 |
|---|---|
solution_proposal.md |
技术方案书:需求 / CPU 选型 / 存储选型 / BOM / 三年 TCO / 边界声明 |
solution_ppt.md |
商用演示 PPT 骨架 + 演示前必问的五个问题 |
bom_table.csv |
配置清单,可直接贴进报价单 |
customer_qa.md |
客户高频疑问与应答,含「哪些说法会丢订单」 |
result.json |
全量结构化结果 |
$ python -m pytest -q
.............................................................. [100%]
62 passed in 1.05s
三个场景(利用率 0.6,电价 0.8 元/度,PUE 1.3):
| 场景 | CPU 需求 | 推荐 CPU | 拓扑 | 内存 | 带宽 | 存储 | 最紧约束 | 年电费 |
|---|---|---|---|---|---|---|---|---|
| Web 业务 | 63 核 | Xeon Platinum 8592+ | 单路 | 392 GiB / 8 根 | 358.4 GB/s | 1 块 | 吞吐 | 2820.58 元 |
| AI 推理 | 1 核 | Xeon E-2488 | 单路 | 8 GiB / 1 根 | 184.6 GB/s | 16 块 | 容量 | 2082.64 元 |
| 视频数据湖 | 9 核 | Xeon Silver 4510 | 单路 | 72 GiB / 2 根 | 184.6 GB/s | 870 块 | 容量 | 39728.63 元 |
三个值得注意的结果:
-
AI 推理场景只推 8 核的 Xeon E-2488,不是 64 核旗舰。 核数够用时选更大的型号就是过度配置 —— 采购价和三���电费都白花。 这是售前最值钱的技术判断。
-
数据湖场景的 870 块盘触发了 3 处校验问题,其中 1 处 P0:
级别 规则 问题 修正建议 P0 B-03 盘位 870 块超过 4U 背板 36 槽,且超单机盘位上限 60 应走分布式存储或加挂盘柜 P1 B-02 内存通道 2 根未填满 8 通道,带宽跑不满 补足内存或重算带宽需求 P2 B-05 盘数 同容量约束下盘数偏多 改用更大容量单盘,减少故障域 这正是本项目存在的意义 —— 这类错误在投标阶段发现是改图纸,交付后才发现是退货。
-
三个场景全是单路。 因为核数需求都没超过单路上限。 工具不会为了显得"高端"而推荐双路 —— 需求多少就配多少。
| # | 局限 | 影响 | 补齐方式 |
|---|---|---|---|
| 1 | 核数换算系数为默认值 | 每核并发 2500 / 每核 TPS 200 须按实际压测校准 | 压测数据替换 assumptions.md A-01 |
| 2 | 时延未校验 | 目录无单盘延迟字段 | 用 fio 实测(randread_4k, iodepth=32) |
| 3 | 硬件价格未查到 | TCO 合计不完整 | 取得正式报价 |
| 4 | 电价与 PUE 为默认值 | 电费数字有偏差 | 按项目所在地替换 |
| 5 | 国产 CPU 内存带宽普遍未查到 | 无法做带宽对比 | 向厂商索取规格书 |
| 6 | RAID 未做重建时间与故障域分析 | 缺可靠性维度 | 补充 RAID 重建窗口计算 |
| 7 | 不做网络产品选型 | 本项目聚焦 CPU 与存储两侧 | 组网拓扑只做 CPU 侧 UPI/内存互连 |
| 8 | 无实测 | 全部为模型推算 | POC 阶段补齐 |
第 1、2、5 条是这个项目最需要盯的地方 —— 选型对不对,取决于假设准不准。
这个工具的价值不在于给一个配置数字,而在于说清这个数字在什么假设下成立、
什么假设下会失效:默认参数集中登记在 data/assumptions.md,
每份输出都带 assumption_refs,任何一条都可以单独替换后重算。
本仓库不包含任何真实客户名称、合同金额、账号凭据、内部报价或客户业务数据。 原始场景参数为自拟。芯片与存储参数取自公开资料,标注了来源与可信等级。 本项目未做实测,输出不构成任何产品性能承诺或采购依据。 友商条目仅为公开信息整理,不含价格策略与未公开信息,不构成优劣评价。 本项目与文中出现的任何厂商无隶属或合作关系,厂商名称与产品名称仅用于资料来源标注。