阿里云 ECS 第九代 AMD vs Intel MySQL 性能与性价比对比报告
阿里云 ECS 第九代 AMD vs Intel MySQL 性能与性价比对比报告
测试日期: 2026-08-31
测试目的: 对比阿里云第九代 AMD (g9a) 与 Intel (g9i) ECS 在 MySQL 场景下的性能和性价比
TL;DR —— 给没耐心的工程师
一句话结论:同规格同价位段,AMD g9a 在 MySQL OLTP 场景下全面碾压 Intel g9i,性价比优势 20%~35%。
| 维度 | AMD EPYC 9T25 (g9a) | Intel Xeon 6982P-C (g9i) | 差距 |
|---|---|---|---|
| MySQL 点查 128 线程 QPS | 1,007,912 | 720,342 | AMD 快 40% |
| MySQL 读写混合 128 线程 QPS | 200,020 | 176,656 | AMD 快 13% |
| 月费(折扣前 400G PL1 SSD) | 3,346.88 元 | 3,681.97 元 | AMD 便宜 9% |
| 每万 QPS 成本(点查) | 33.2 元 | 51.1 元 | AMD 低 35% |
| CPU 单核 IPC(分支预测微基准) | 4.46 | 2.19 | AMD 高 104% |
| 分支预测 miss 率(50% 随机分支) | 1.59% | 15.05% | AMD 准 10 倍 |
| MySQL 点查期间 mysqld 进程 IPC | 1.01 | 0.67 | AMD 高 51% |
| MySQL 点查期间 branch-miss 率 | 0.44% | 2.42% | AMD 低 5.5 倍 |
根因:AMD Zen 5 微架构在三个层面领先 Intel Granite Rapids:
- 流水线更宽:8 宽解码 + 4 load 单元 vs Intel 6 宽 + 3 load → 纯 IPC 高 1 倍
- 分支预测更准:miss 率低 5~10 倍 → 流水线冲刷惩罚更少
- 成本更低:chiplet 设计 + TSMC 先进制程 → 同性能价格低 9%
选型建议:除纯写低并发场景外,一律选 AMD g9a。
零、CPU 代际背景
Intel 服务器 CPU 演进
1 | Ice Lake (3代至强) Sapphire Rapids (4代至强) Emerald Rapids (5代至强) Granite Rapids (Xeon 6) |
Intel Xeon 6982P-C 属于 Granite Rapids 家族(Xeon 6 P-core 系列),2024 年 9 月发布。旗舰 6980P 为 128 核 / 504MB L3 / 500W TDP。阿里云的 6982P-C 是云定制变体,本次 VM 分配 8 物理核 16 线程。
注意:阿里云 g9i 文档标注为”Emerald Rapids”是错误的,lscpu 实际报告 Family 6 Model 173,对应 Granite Rapids。
AMD 服务器 CPU 演进
1 | Milan (3代EPYC) Genoa (4代EPYC) Turin (5代EPYC) |
AMD EPYC 9T25 属于 Turin 家族(EPYC 9005 系列),2024 年 10 月发布。”T” 后缀为云厂商定制 SKU。基于 Zen 5 微架构,TSMC 3/4nm 制程。本次 VM 分配 8 物理核 16 线程,位于单个 CCD 内。
两款 CPU 硬件规格对比
| 规格 | Intel Xeon 6982P-C | AMD EPYC 9T25 |
|---|---|---|
| 代际 | Granite Rapids (Xeon 6) | Turin (EPYC 9005) |
| 微架构 | Redwood Cove | Zen 5 |
| 制程 | Intel 3 (~7nm 级) | TSMC 3/4nm |
| 发布时间 | 2024.09 | 2024.10 |
| 宿主机最大核数 | 128 | 192 |
| VM 分配核数 | 8C16T | 8C16T |
| L1d / L1i (每核) | 48 KB / 64 KB | 48 KB / 32 KB |
| L2 (每核) | 2 MB | 1 MB |
| L3 (VM 可见) | 504 MB(单片共享) | 32 MB(单 CCD) |
| 内存通道 | 8 通道 DDR5-6400 | 12 通道 DDR5-6000 |
| PCIe | 5.0, 96 lanes | 5.0, 128 lanes |
| 实测全核频率 | 3800 MHz | ~3804 MHz |
| 指令集扩展 | AVX-512, AMX, SHA-NI | AVX-512, SHA-NI |
架构设计差异:Intel Granite Rapids 采用单片式(monolithic-like)设计,所有核共享一整块 L3;AMD Turin 采用 chiplet 设计,每个 CCD(Core Complex Die)8 核 + 32MB L3 独立封装。VM 的 8 核被分配在单个 CCD 内,只能看到该 CCD 的 32MB L3。
一、测试环境
| 项目 | Intel (g9i) | AMD (g9a) |
|---|---|---|
| ECS 规格 | ecs.g9i.4xlarge | ecs.g9a.4xlarge |
| CPU 型号 | Intel Xeon 6982P-C | AMD EPYC 9T25 (Turin) |
| CPU 架构 | Granite Rapids (Xeon 6) | Zen 5 (EPYC 9005) |
| vCPU / 物理核 | 16 vCPU / 8 Core | 16 vCPU / 8 Core |
| 标称频率 | 基频 3.2 GHz / 睿频 3.6 GHz | 基频 2.7 GHz / 睿频 4.1 GHz |
| 实测运行频率 | 全核 3800 MHz | 全核 ~3804 MHz |
| L3 缓存 | 504 MB (lscpu 报 516096K) | 32 MB (lscpu 报 32768K) |
| 内存 | 61 GiB DDR5 | 61 GiB DDR5 |
| 磁盘 | 400G NVMe (nvme0n1) | 400G NVMe (nvme0n1) |
| 操作系统 | Alibaba Cloud Linux (Rocky 8) | Alibaba Cloud Linux (Rocky 8) |
| 月费 | 3,681.97 元 | 3,346.88 元 |
| 年费 | ~33,579.58 元 | ~30,523.50 元 |
MySQL 配置
| 参数 | 值 |
|---|---|
| MySQL 版本 | 5.7.29 |
| innodb_buffer_pool_size | 40 GB |
| innodb_flush_log_at_trx_commit | 1(最严格持久化) |
| 端口 | 3306 |
测试参数
- 工具: sysbench 1.0.20 + tsar
- 数据集: 16 表 x 100 万行
- 每场景 30 秒
- 并发: 1, 8, 16, 32, 64, 128 线程
- 压测机: 独立 ECS (10.12.9.40) ,同 VPC
二、性能对比
2.1 点查询 (oltp_point_select) - QPS
| 并发 | Intel | AMD | AMD 领先 |
|---|---|---|---|
| 1 | 12,901 | 13,659 | +5.9% |
| 8 | 98,623 | 108,750 | +10.3% |
| 16 | 191,006 | 211,683 | +10.8% |
| 32 | 355,762 | 410,664 | +15.4% |
| 64 | 583,483 | 757,138 | +29.8% |
| 128 | 720,342 | 1,007,912 | +39.9% |
AMD 在点查场景全面领先,高并发优势越来越大。128 线程时 AMD 突破百万 QPS,Intel 72 万。
2.2 只读事务 (oltp_read_only) - QPS
| 并发 | Intel | AMD | AMD 领先 |
|---|---|---|---|
| 1 | 8,771 | 9,483 | +8.1% |
| 8 | 66,031 | 71,767 | +8.7% |
| 16 | 116,008 | 131,402 | +13.3% |
| 32 | 164,363 | 194,646 | +18.4% |
| 64 | 184,422 | 208,679 | +13.2% |
| 128 | 192,241 | 217,748 | +13.3% |
AMD 只读场景领先 8%~18%,32 线程时优势最大。
2.3 读写混合 (oltp_read_write) - QPS
| 并发 | Intel | AMD | AMD 领先 |
|---|---|---|---|
| 1 | 6,424 | 6,543 | +1.9% |
| 8 | 49,050 | 49,537 | +1.0% |
| 16 | 87,578 | 90,466 | +3.3% |
| 32 | 134,711 | 147,730 | +9.7% |
| 64 | 166,261 | 190,922 | +14.8% |
| 128 | 176,656 | 200,020 | +13.2% |
读写混合场景 AMD 同样全面领先,高并发差距拉大。
2.4 只写事务 (oltp_write_only) - QPS
| 并发 | Intel | AMD | Intel 领先 |
|---|---|---|---|
| 1 | 5,401 | 5,062 | +6.7% |
| 8 | 35,826 | 32,055 | +11.8% |
| 16 | 56,866 | 54,638 | +4.1% |
| 32 | 89,769 | 90,727 | -1.1% |
| 64 | 157,465 | 149,115 | +5.6% |
| 128 | 212,003 | 243,079 | -14.7% |
只写是唯一 Intel 在中低并发有优势的场景(1~64 线程平均领先 ~5%),但 128 线程时 AMD 反超 14.7%。
三、延迟对比 (95th Percentile)
点查延迟 (ms)
| 并发 | Intel | AMD | 差距 |
|---|---|---|---|
| 1 | 0.09 | 0.08 | AMD 低 11% |
| 16 | 0.09 | 0.08 | AMD 低 11% |
| 64 | 0.16 | 0.10 | AMD 低 37% |
| 128 | 0.27 | 0.17 | AMD 低 37% |
读写混合延迟 (ms)
| 并发 | Intel | AMD | 差距 |
|---|---|---|---|
| 1 | 3.43 | 3.75 | Intel 低 9% |
| 32 | 5.77 | 5.57 | AMD 低 3% |
| 64 | 10.65 | 9.06 | AMD 低 15% |
| 128 | 21.50 | 18.95 | AMD 低 12% |
只写延迟 (ms)
| 并发 | Intel | AMD | 差距 |
|---|---|---|---|
| 1 | 1.42 | 1.64 | Intel 低 13% |
| 8 | 1.82 | 2.30 | Intel 低 21% |
| 64 | 3.25 | 3.89 | Intel 低 16% |
| 128 | 4.91 | 4.91 | 持平 |
四、CPU 效率对比
以 128 线程点查为例(CPU 利用率最高的场景):
| 指标 | Intel | AMD |
|---|---|---|
| QPS | 720,342 | 1,007,912 |
| CPU user% | 52.6% | 53.3% |
| CPU sys% | 31.7% | 29.0% |
| CPU total% | ~94% | ~91% |
| QPS/CPU% | 7,663 | 11,076 |
AMD 每 1% CPU 产出的 QPS 比 Intel 高 44.5%,说明 Zen 5 的 IPC 效率显著优于 Granite Rapids。
五、实测 CPU 频率说明
| Intel | AMD | |
|---|---|---|
| 标称基频 | 3.2 GHz | 2.7 GHz |
| 标称睿频 | 3.6 GHz | 4.1 GHz |
| turbostat 实测全核 | 3800 MHz | ~3804 MHz |
两台实测运行频率几乎一致(3800 MHz),因此性能差异主要来自 CPU 微架构(IPC)和缓存层级差异,而非频率差。
值得注意的是 Intel 分配了 504MB L3 缓存(宿主机 Xeon 6982P 物理总量的一部分),而 AMD 只分配了 32MB。即便 L3 缓存相差 15 倍,AMD 仍在多数场景领先。
六、性价比分析
月费对比
| Intel | AMD | AMD 节省 | |
|---|---|---|---|
| 月费 | 3,681.97 元 | 3,346.88 元 | -9.1% |
| 年费 | ~33,579.58 元 | ~30,523.50 元 | -9.1% |
每万 QPS 成本(月费 / 128线程峰值QPS * 10000)
| 场景 | Intel (元/万QPS) | AMD (元/万QPS) | AMD 优势 |
|---|---|---|---|
| 点查 | 51.1 | 33.2 | 35.0% |
| 只读 | 191.5 | 153.7 | 19.7% |
| 读写混合 | 208.4 | 167.3 | 19.7% |
| 只写 | 173.7 | 137.7 | 20.7% |
AMD 在所有场景下每万 QPS 成本都更低,点查场景性价比优势高达 35%。
性价比总结
| 维度 | 结论 |
|---|---|
| 纯性能 | AMD 在 4 个场景中的 3 个全面领先(点查/只读/读写混合),只写在中低并发 Intel 略优但 128 并发被反超 |
| 价格 | AMD 月费便宜 9.1% |
| 性价比 | AMD 综合性价比领先 20%~35% |
| 延迟 | 读密集场景 AMD 延迟更低;写密集场景低并发时 Intel 延迟更低,高并发持平 |
七、结论与建议
如果追求最高性价比:选 AMD g9a。在 MySQL OLTP 场景下,AMD EPYC 9T25 (Turin/Zen 5) 性能全面超越 Intel Xeon 6982P-C (Granite Rapids),价格还便宜 9%,综合性价比优势 20%~35%。
Intel 的唯一优势场景:纯写入、中低并发(1~64 线程 write_only),Intel 单线程写入 QPS 高 6.7%,8 线程高 11.8%。如果业务以低并发写入为主,Intel 略有优势。
高并发场景 AMD 压倒性优势:128 线程点查 AMD 比 Intel 快 40%,突破百万 QPS 门槛。如果业务并发高,AMD 优势更明显。
频率并非决定因素:两台实测都跑在 3.8 GHz,性能差异主要来自 Zen 5 vs Granite Rapids 的 IPC 差异和内存子系统效率。
八、大数据集测试(16 表 x 1200 万行,数据集 ~53GB > Buffer Pool 40GB)
目的
100 万行数据集完全被 buffer pool 缓存,无法触发磁盘 IO。1200 万行/表使数据集达到 ~53GB,超出 40GB buffer pool 约 13GB,缓存命中率约 75%,会触发显著的随机磁盘读。此场景下 Intel 的 504MB L3 缓存可能发挥更大作用。
8.1 点查询 (oltp_point_select) - QPS
| 并发 | Intel (12M) | AMD (12M) | AMD 领先 | Intel 降幅(vs 1M) | AMD 降幅(vs 1M) |
|---|---|---|---|---|---|
| 1 | 11,853 | 12,850 | +8.4% | -8.1% | -5.9% |
| 8 | 95,284 | 103,261 | +8.4% | -3.4% | -5.0% |
| 16 | 185,773 | 204,774 | +10.2% | -2.7% | -3.3% |
| 32 | 343,715 | 396,992 | +15.5% | -3.4% | -3.3% |
| 64 | 587,040 | 731,617 | +24.6% | +0.6% | -3.4% |
| 128 | 681,754 | 924,591 | +35.6% | -5.4% | -8.3% |
AMD 依然全面领先,128 线程领先 35.6%。Intel 的 504MB L3 并未扭转局面。
8.2 只读事务 (oltp_read_only) - QPS
| 并发 | Intel (12M) | AMD (12M) | AMD 领先 |
|---|---|---|---|
| 1 | 8,238 | 9,194 | +11.6% |
| 32 | 158,303 | 187,966 | +18.7% |
| 64 | 179,216 | 202,277 | +12.9% |
| 128 | 184,423 | 210,580 | +14.2% |
8.3 读写混合 (oltp_read_write) - QPS
| 并发 | Intel (12M) | AMD (12M) | AMD 领先 |
|---|---|---|---|
| 1 | 5,847 | 5,983 | +2.3% |
| 32 | 127,170 | 137,834 | +8.4% |
| 64 | 154,506 | 178,023 | +15.2% |
| 128 | 166,009 | 188,631 | +13.6% |
8.4 只写事务 (oltp_write_only) - QPS
| 并发 | Intel (12M) | AMD (12M) | 领先方 |
|---|---|---|---|
| 1 | 5,147 | 4,682 | Intel +9.9% |
| 8 | 33,880 | 30,472 | Intel +11.2% |
| 16 | 53,845 | 50,898 | Intel +5.8% |
| 32 | 83,845 | 84,583 | AMD +0.9% |
| 64 | 73,768 | 81,863 | AMD +11.0% |
| 128 | 62,809 | 58,648 | Intel +7.1% |
只写场景两台都出现了严重的性能抖动(TPS 掉到 0),这是数据集超出 buffer pool 后脏页刷盘导致的。Intel 在低并发写入仍有优势,但 64 线程时 AMD 反超。128 线程两台都抖动剧烈,Intel 因为 L3 更大,在脏页管理上稍有优势。
8.5 大数据集关键发现
| 发现 | 详情 |
|---|---|
| Intel L3 缓存优势有限 | 504MB L3 没有在读场景显著缩小与 AMD 的差距,AMD 点查 128 线程仍领先 35.6% |
| 写入场景受 IO 主导 | 两台 write_only 高并发都出现 TPS=0 的 stall,瓶颈在 NVMe 磁盘而非 CPU |
| AMD 读场景稳定性更好 | 点查 128 线程 AMD QPS 波动范围 845K |
| 性能下降幅度相当 | 从 1M 到 12M 行,Intel 点查降 5.4%,AMD 降 8.3%,差距不大 |
8.6 IO 调度器对比:AMD mq-deadline vs none
测试中发现两台 ECS 的磁盘调度器不一致——Intel 是 none(最优),AMD 是 mq-deadline(有额外调度开销)。为排除这个变量,将 AMD 也改为 none 后重新跑了一轮完整测试。
读场景(点查/只读/读写混合):none 一致快 1.5%~6%
| 场景 | 并发 | mq-deadline | none | 差异 |
|---|---|---|---|---|
| 点查 | 1 | 12,850 | 13,657 | +6.3% |
| 点查 | 128 | 924,591 | 960,537 | +3.9% |
| 只读 | 128 | 210,580 | 213,627 | +1.4% |
| 读写混合 | 128 | 188,631 | 191,693 | +1.6% |
读场景改善幅度稳定在 2%~4%,符合预期——去掉 mq-deadline 的请求排序开销,NVMe 的随机读性能略有提升。
写场景:高并发显著改善,但波动大
| 并发 | mq-deadline | none | 差异 |
|---|---|---|---|
| 8 | 30,472 | 28,798 | -5.5% |
| 16 | 50,898 | 47,148 | -7.4% |
| 64 | 81,863 | 103,949 | +27.0% |
| 128 | 58,648 | 70,032 | +19.4% |
低并发写入 none 反而慢了 5%7%(mq-deadline 的请求合并在顺序写时有微量收益),但高并发写入 none 快了 19%27%。不过 64/128 线程写场景两轮都有 TPS=0 的脏页刷盘 stall,大幅差异可能部分来自 stall 发生时间点的随机性。
结论:调度器差异对读场景影响约 2%4%,不改变 AMD vs Intel 的整体结论(AMD 读场景领先 14%40%,调度器差异只是其中的 2~4 个百分点)。NVMe SSD 上推荐统一使用 none。
九、最终综合结论
两轮测试汇总(128 线程峰值 QPS)
| 场景 | Intel 1M | Intel 12M | AMD 1M | AMD 12M | AMD 12M 优势 |
|---|---|---|---|---|---|
| 点查 | 720,342 | 681,754 | 1,007,912 | 924,591 | +35.6% |
| 只读 | 192,241 | 184,423 | 217,748 | 210,580 | +14.2% |
| 读写混合 | 176,656 | 166,009 | 200,020 | 188,631 | +13.6% |
| 只写 | 212,003 | 62,809 | 243,079 | 58,648 | Intel +7.1% |
性价比最终结论
- AMD g9a 在 OLTP 读密集场景性价比压倒性胜出:性能领先 14%~36%,价格便宜 9%
- 只写大数据集场景双方都受 IO 限制:性能差异取决于磁盘 IO 抖动,不具参考性
- Intel 的 504MB L3 缓存没有成为 killer feature:在 MySQL InnoDB 的 buffer pool 架构下,L3 缓存对性能的边际贡献有限
- CPU 微架构(IPC)是决定性因素:Zen 5 的 IPC 优势在所有读密集场景持续体现
采购建议
| 业务类型 | 推荐 | 理由 |
|---|---|---|
| 读密集型(OLAP/查询/缓存) | AMD g9a | 性能领先 14%~36%,价格便宜 9% |
| 读写混合型(典型 OLTP) | AMD g9a | 性能领先 8%~14%,性价比更高 |
| 纯写密集型低并发 | Intel g9i | 单线程写延迟低 13%,低并发写 TPS 高 6%~11% |
| 预算优先 | AMD g9a | 同预算下 AMD 能获得更多算力 |
十、CPU 基准测试(脱离 MySQL,纯 CPU 能力对比)
测试前已停止 MySQL,确保无其他负载。两台实测频率均为 3800 MHz,频率变量已控制。
10.1 sysbench cpu(素数计算,纯整数运算)
| 测试 | Intel | AMD | AMD 领先 |
|---|---|---|---|
| 单线程 (events/s) | 1,265 | 1,919 | +51.7% |
| 16 线程 (events/s) | 10,537 | 16,209 | +53.8% |
| 多核扩展比 | 8.33x | 8.45x | 相当 |
sysbench cpu 是最简单的整数运算测试(判断素数),代码路径极短。AMD 领先超过 50%,直接反映 Zen 5 vs Redwood Cove 的 IPC 差距。
10.2 stress-ng 微架构测试
| 测试项 | 含义 | Intel | AMD | 领先方 |
|---|---|---|---|---|
| matrix 单核 | 矩阵乘法,纯 IPC | 4,733 | 8,338 | AMD +76% |
| matrix 全核 | 矩阵乘法 x16 | 51,736 | 48,041 | Intel +8% |
| vecmath 全核 | 向量运算 (AVX-512) | 38,905 | 45,471 | AMD +17% |
| cache 全核 | 缓存压力测试 | 1.07 | 104.55 | AMD +97x |
| context switch | 上下文切换吞吐 | 6.53M | 6.98M | AMD +7% |
单位: bogo ops/s (real time)
数据说明:
- matrix 单核 AMD +76%:单核矩阵乘法是最纯粹的 IPC 测试,没有多线程锁竞争干扰。Zen 5 的每周期指令完成量远超 Redwood Cove。
- matrix 全核 Intel +8%:这是 Intel 唯一反超的计算型测试。可能原因:(1) Intel HT 在矩阵运算中的两个逻辑核能更好地共享执行单元;(2) GCC 对 Intel 微架构的编译优化更成熟(-march=native 生成的代码倾向 Intel)。
- vecmath AMD +17%:两者都支持 AVX-512,但 Zen 5 的 SIMD 执行单元吞吐更高。
- cache AMD +97 倍:这个悬殊差距需要解释。stress-ng cache stressor 故意制造工作集超出缓存的场景。Intel 的 504MB L3 是单片式设计,数据在环形总线上搬运的延迟高;当 cache miss 发生时,miss penalty 更大。AMD 的 32MB L3 虽小,但位于单个 CCD 内部,访问延迟低,miss 时直接走内存控制器,路径更短。L3 大不等于快,小而近的缓存在高 miss 率场景反而更高效。
- context switch AMD +7%:上下文切换涉及内核态寄存器保存/恢复、TLB flush,AMD 平均 2,280ns/次 vs Intel 2,450ns/次。对数据库连接切换有参考意义。
10.3 UnixBench 系统综合评分
| 子项 | 含义 | Intel 单核 | AMD 单核 | AMD 领先 |
|---|---|---|---|---|
| Dhrystone | 整数运算 | 4,393 | 5,673 | +29% |
| Whetstone | 浮点运算 | 880 | 1,730 | +97% |
| Execl | fork+exec 吞吐 | 1,586 | 2,271 | +43% |
| File Copy 4K | 大块文件拷贝 | 8,079 | 12,142 | +50% |
| Pipe Throughput | 管道吞吐 | 2,182 | 2,799 | +28% |
| Pipe Context Switch | 管道上下文切换 | 515 | 1,196 | +132% |
| Process Creation | 进程创建 | 1,100 | 2,092 | +90% |
| Shell Scripts (1) | Shell 脚本 | 3,016 | 4,449 | +48% |
| System Call | 系统调用 | 1,506 | 1,867 | +24% |
| 综合 Index | 2,470 | 3,692 | +49.5% |
| 子项 | Intel 16核 | AMD 16核 | 领先方 |
|---|---|---|---|
| Dhrystone | 66,870 | 72,236 | AMD +8% |
| Whetstone | 13,737 | 28,415 | AMD +107% |
| Execl | 13,565 | 21,907 | AMD +62% |
| File Copy 4K | 62,354 | 42,686 | Intel +46% |
| Process Creation | 10,621 | 21,927 | AMD +107% |
| 综合 Index | 22,488 | 29,230 | AMD +30% |
数据说明:
- Whetstone 浮点 AMD +97%/+107%:Zen 5 重新设计了浮点执行单元,每周期浮点吞吐大幅提升。对科学计算、数据分析类负载意义重大。
- Process Creation AMD +90%/+107%:fork/exec 性能反映内核态内存管理效率,AMD 在 TLB 和页表操作上优势明显。对 PHP-FPM、CGI 类短连接服务有直接影响。
- Pipe Context Switch AMD +132%:管道读写 + 上下文切换的综合性能,AMD 优势最大的单项。
- File Copy 4K 多核 Intel +46%:Intel 唯一大幅领先的子项。大块连续内存拷贝涉及内存控制器和 LLC 的预取优化,Intel 的 8 通道 DDR5 + 巨大 L3 在此场景发挥了作用。但这不是 MySQL 的典型访问模式(MySQL 是随机访问 buffer pool 页,不是顺序大块拷贝)。
- 单核综合 AMD +49.5%,16 核综合 AMD +30%:多核场景优势缩小是正常的——16 线程争用共享资源(内存带宽、缓存行)会稀释单核 IPC 优势。
10.4 CPU 基准测试 vs MySQL 压测的交叉验证
| 测试类型 | AMD vs Intel 差距 | 说明 |
|---|---|---|
| sysbench cpu 单线程 | AMD +52% | 纯整数 IPC |
| stress-ng matrix 单核 | AMD +76% | 矩阵运算 IPC |
| UnixBench 单核综合 | AMD +49% | 系统综合 IPC |
| MySQL 点查 128 线程 | AMD +40% | 极短路径整数运算,最接近纯 IPC 测试 |
| MySQL 只读 128 线程 | AMD +14% | 复杂事务,IPC 优势被软件层开销稀释 |
| UnixBench 16 核综合 | AMD +30% | 多核综合(介于 MySQL 点查和只读之间) |
结论:CPU 基准测试(单核 IPC 领先 50%76%)验证了 MySQL 压测的方向,但 MySQL 场景下的实际差距(14%40%)小于纯 CPU 测试。原因:MySQL 的每条 SQL 除了 CPU 计算外,还包含网络协议解析、事务管理、锁、buffer pool 管理等固定开销,这些开销在两个 CPU 上差异较小,稀释了架构差距。
10.5 分支预测微基准测试
测试原理
来自 StackOverflow 史上投票最高的编程问题。测试代码对一个 32768 元素的随机整数数组(值域 0-255)做条件累加:if (data[c] >= 128) sum += data[c],循环 10 万轮。
唯一变量:数组是否预先排序。排序不影响指令数(两种情况执行的指令总数完全一样),只影响 if 分支的结果序列——排序后前半全不跳、后半全跳(极度可预测),未排序则 50% 随机跳转(难以预测)。
CPU 流水线不会等 if 算完再取下一条指令,而是提前猜方向继续执行。猜对了流水线不停,猜错了必须冲刷重来(浪费 ~20 个时钟周期)。分支预测器越准,流水线效率越高,IPC 越高。
编译选项 -O0(禁止优化),确保 if 分支保留为真实跳转指令(-O2 会被编译器优化成 cmov 条件移动,消除分支)。
测试结果
排序后(分支可预测)
| 指标 | Intel Xeon 6982P-C | AMD EPYC 9T25 | AMD 优势 |
|---|---|---|---|
| 耗时 | 4.18s | 1.78s | 快 2.35x |
| cpu-cycles | 149.7 亿 | 73.6 亿 | 少 51% |
| instructions | 328.4 亿 | 328.3 亿 | 相同 |
| IPC | 2.19 | 4.46 | AMD 高 104% |
| branch-misses | 37.1 万 (0.00%) | 37.6 万 (0.00%) | 持平 |
未排序(分支随机 50%,不可预测)
| 指标 | Intel Xeon 6982P-C | AMD EPYC 9T25 | AMD 优势 |
|---|---|---|---|
| 耗时 | 13.48s | 2.73s | 快 4.94x |
| cpu-cycles | 483.2 亿 | 112.8 亿 | 少 77% |
| instructions | 328.5 亿 | 328.1 亿 | 相同 |
| IPC | 0.68 | 2.91 | AMD 高 328% |
| branch-misses | 14.8 亿 (15.05%) | 1.56 亿 (1.59%) | miss 率低 10 倍 |
分支 miss 导致的性能惩罚
| Intel | AMD | |
|---|---|---|
| 排序后耗时 | 4.18s | 1.78s |
| 未排序耗时 | 13.48s | 2.73s |
| 未排序/排序的减速比 | 3.2x(慢 222%) | 1.5x(慢 53%) |
解读
这组数据揭示了两个层面的差距:
第一层:纯 IPC 差距。 排序后两家 branch-miss 率都是 0.00%(分支完全可预测),但 AMD 仍快 2.35 倍。执行了一模一样的 328 亿条指令,AMD 只用了 73.6 亿个时钟周期,Intel 用了 149.7 亿——AMD 每个周期完成 4.46 条指令 vs Intel 2.19 条。这是 8 宽解码 + 4 个 load 单元 vs 6 宽解码 + 3 个 load 单元的架构硬差距。
第二层:分支预测器准确率碾压。 面对 50% 随机分支,Intel 猜错 15.05%(每 6-7 次猜错一次),AMD 只猜错 1.59%(每 63 次猜错一次)。虽然数组值是随机的,但每轮循环遍历顺序不变——AMD 的预测器能”记住”32768 个分支位置各自的跳转方向,Intel 的预测器在这个规模上记不住。
对 MySQL 的启示:MySQL 的 B-tree 遍历、WHERE 条件过滤、行级锁判断全是分支密集操作。AMD Zen 5 的分支预测器在”有模式但不完全确定”的分支场景中能比 Intel 少犯 10 倍错误,这是 MySQL 点查 AMD 快 40% 的微架构根因之一。
10.6 MySQL 点查实战 IPC 对比(perf stat 采集 mysqld 进程)
上面的分支预测测试用的是独立微基准程序。这里直接用 perf stat 挂载到 mysqld 进程上,测量真实 MySQL 点查负载下的 IPC 和分支预测数据。
测试方法:sysbench oltp_point_select 120 秒持续压测,同时 perf stat -p <mysqld_pid> 采集 125 秒。数据集 16 表 x 1200 万行(超出 buffer pool,有磁盘 IO)。
32 线程点查
| 指标 | Intel | AMD | AMD 优势 |
|---|---|---|---|
| QPS | 139,692 | 219,889 | +57.4% |
| P95 延迟 | 0.49 ms | 0.15 ms | AMD 低 69% |
| mysqld cpu-cycles | 2,233.3 G | 1,669.5 G | 少 25% |
| mysqld instructions | 1,324.0 G | 1,946.8 G | AMD 多 47% |
| mysqld IPC | 0.59 | 1.17 | AMD 高 98% |
| mysqld branch-misses | 71.1 亿 (2.77%) | 19.0 亿 (0.51%) | AMD 低 5.4 倍 |
| mysqld cache-misses | 16.0 亿 (7.95%) | 0 (0.00%) | AMD 全命中 |
128 线程点查
| 指标 | Intel | AMD | AMD 优势 |
|---|---|---|---|
| QPS | 306,756 | 405,253 | +32.1% |
| P95 延迟 | 0.80 ms | 0.57 ms | AMD 低 29% |
| mysqld cpu-cycles | 4,096.2 G | 3,596.5 G | 少 12% |
| mysqld instructions | 2,761.3 G | 3,615.2 G | AMD 多 31% |
| mysqld IPC | 0.67 | 1.01 | AMD 高 51% |
| mysqld branch-misses | 130.0 亿 (2.42%) | 31.3 亿 (0.44%) | AMD 低 5.5 倍 |
| mysqld cache-misses | 16.4 亿 (5.79%) | 0 (0.00%) | AMD 全命中 |
解读
这是整个报告中最核心的一组数据——不是微基准、不是合成测试,而是真实 MySQL 进程跑真实 SQL 时的硬件计数器。
IPC 在真实 MySQL 负载下差距依然巨大:32 线程 AMD IPC 0.59 vs Intel 1.17(差 98%),128 线程 0.67 vs 1.01(差 51%)。这直接解释了为什么 AMD QPS 高——每个时钟周期完成的有效指令更多。
AMD 执行了更多指令但用了更少的 cycles:以 128 线程为例,AMD 的 mysqld 执行了 3,615G 指令(比 Intel 多 31%),但只用了 3,596G cycles(比 Intel 少 12%)。更多指令 + 更少 cycles = IPC 高 51%。指令数不同是因为 AMD 跑了更多的查询(QPS 高 32%),每条查询处理的指令路径相似。
分支预测差距在真实负载中得到验证:微基准测试中 AMD branch-miss 率低 10 倍(1.59% vs 15.05%),真实 MySQL 负载中低 5.5 倍(0.44% vs 2.42%)。MySQL 的分支模式比纯随机分支更有规律性,所以两家差距缩小了,但 AMD 仍然显著占优。
cache-miss 率 AMD 为零:AMD 的
cache-misses计数器显示 0,而 Intel 有 16 亿次(5.8%)。这与 stress-ng cache 测试的结论一致——AMD 32MB L3 虽小但访问延迟低,在 MySQL 的访问模式下反而比 Intel 504MB L3 更高效。
测试工具: sysbench 1.0.20 + tsar, stress-ng 0.15.00, UnixBench 6.0.1, perf stat | 报告生成: 2026-08-31