用数据选型:StarRocks 跨架构(arm64 vs x86)基准测试记录

用数据选型:StarRocks 跨架构(arm64 vs x86)基准测试记录

💡 原文中文,约12400字,阅读约需30分钟。
📝

内容提要

本文基于TPC-H/TPC-DS SF1000基准,在StarRocks存算分离架构下横评AWS Graviton(arm64)与x86实例。结果显示Graviton4(m8g)性价比最优,同代相比x86省34%-52%,且性能领先。建议首选m8g,内存密集选r8g/r7g,x86生态选m8i。

🔎

延伸解读

为什么 Graviton 在分析负载上能“便宜又更快”

文章指出,StarRocks 这类分析负载主要受内存带宽和单核效率约束,而非 SIMD 向量宽度。Graviton4 的 L2 缓存翻倍、内存带宽提升 75%,加上单价更低,使其在 TPC-H/TPC-DS 上同时实现性能领先和成本节省。即使 arm64 版本尚未启用 SVE2 等优化,仍能胜过 x86,说明内存子系统对这类负载的关键作用。

选型时需注意的测试边界

测试基于 StarRocks 存算分离架构,CN 无状态,数据在 S3,因此切换架构成本低。但结果仅适用于类似负载和配置:3×CN、本地 Data Cache 统一、单可用区、按需价格。实际部署若使用 Savings Plans 或预留实例,价格差异可能变化;内存密集型或计算密集型场景(如正则、压缩)可能需要重新评估,因为 arm 的 SIMD 优化空间尚未释放。

老代 Graviton 的性价比仍值得关注

文章数据显示,两代前的 Graviton2(r6g)在 TPC-DS 上的价格性能仍高于最新 Intel r8i,而 Graviton3(r7g)的性价比指数也优于 Intel 和 AMD 的旗舰。这意味着对于预算有限或已有 Graviton 实例的团队,升级到最新代并非唯一选择,老代实例在特定负载下仍具成本优势,可作为过渡或混合部署的考量。

Q&A

StarRocks 在 AWS Graviton(arm64)和 x86 实例上的性能对比结果如何?

根据 TPC-H 和 TPC-DS SF1000 基准测试,Graviton 系列(m9g/m8g/r8g/r7g)在性能上包揽前四,其中 m9g 在 TPC-H 上最快,m8g 在 TPC-DS 上最快。

在 StarRocks 存算分离架构下,哪个 AWS 实例的性价比最高?

Graviton4 通用型实例 m8g 的性价比最高,在 TPC-H 和 TPC-DS 双基准中均排名第一,性价比指数为 100。

Graviton 相比同代 x86 实例在成本上能节省多少?

以 TPC-H 为例,m8g 对比同代 x86 实例 m8i 可节省约 34% 的成本,对比 r7i 节省约 46%。

StarRocks 从 x86 迁移到 Graviton 的改造成本高吗?

不高。StarRocks 官方提供 arm64 构建,且存算分离架构下 CN 无状态,替换计算层不影响数据(数据在 S3),迁移近乎零改造。

为什么 Graviton 在 StarRocks 分析负载上性能表现优异?

因为这类负载主要受内存带宽约束,Graviton 的内存子系统(如 Graviton4 的 12 通道 DDR5)和单核处理效率较高,且实例单价更低,因此性能与性价比均占优。

对于内存密集型 StarRocks 工作负载,应该选择哪些实例?

建议选择 r8g 或 r7g,它们属于内存优化型实例,提供 8GB/vCPU 的内存,适合大 Join 和聚合等内存密集型场景。

如果必须使用 x86 架构,StarRocks 应该选择哪个实例?

如果必须绑定 x86 生态,推荐 m8i,它是 x86 实例中价格性能最好的一款。

StarRocks 在 Graviton 上运行稳定吗?

稳定。StarRocks 提供官方 arm64 构建,本次测试中所有 Graviton 集群均使用官方 3.5.19 镜像正常运行,数据加载与查询无异常。

🏷️

标签

➡️

继续阅读