StarRocks on AWS Graviton3,实现 50% 以上性价比提升

在数据时代,企业拥有前所未有的大量数据资产,但如何从海量数据中发掘价值成为挑战。数据分析凭借强大的分析能力,可从不同维度挖掘数据中蕴含的见解和规律,为企业战略决策提供依据。数据分析在营销、风险管控、产品优化等领域发挥着关键作用,帮助企业提高运营效率、优化业务流程、发现新商机、增强竞争力。低成本高效率的完成对海量数据的分析,及时准确的释放数据价值,已成为企业赢得竞争优势的利器。StarRocks on AWS 为这个课题交出了一份答卷。

StarRocks 作为新一代极速全场景 MPP(Massively Parallel Processing)数据库,架构简洁,采用了全面向量化引擎,并配备全新设计的 CBO(Cost Based Optimizer)优化器,实现亚秒级的查询速度,尤其是多表关联查询表现尤为突出。StarRocks 还支持现代化物化视图,进一步加速查询。

StarRocks 不仅能很好地支持实时数据分析,实现对实时更新数据的高效查询,3.0 及以后版本的存算分离架构,对于数据湖中的数据也能够实现极速查询,配合 AWS 提供的高性能高可用的云平台,能够极大地助力客户轻松构建数据湖仓。

越来越多的客户正在尝试湖仓一体的探索,后续我们会推出系列博客介绍如何在 AWS 上构建您的数据湖仓,而存算分离的 StarRocks 会是其中非常重要的一部分,我们也会结合实际客户案例分享 StarRocks on AWS 的最佳实践以及实际业务效果,本文则重点介绍 StarRocks on AWS Graviton3 上实现的超高性价比提升。

关于AWS Graviton

AWS Graviton 是 AWS 推出的基于 ARM 架构的自研处理器,专为优化云计算性能和成本效益而设计。Graviton3 相较于前代产品 Graviton2 有了显著的性能提升,其单线程性能提高了 25%,整体性能提升了 50%。

  • Graviton3 支持 DDR5 内存,提供更高的内存带宽和更低的延迟,使其在处理大规模数据分析、高性能计算(HPC)和内存密集型应用方面表现尤为出色。

  • 在机器学习工作负载方面,Graviton3 的性能提升更为显著,可以达到高达 3 倍的加速,这得益于其增强的矩阵乘法指令集。

  • Graviton3 处理器集成了先进的硬件安全功能,包括内置的内存加密和更高效的加密算法支持,确保数据在传输和存储过程中的安全性,满足敏感数据处理的需求。

  • Graviton3 具有更高的能效,能够在相同的性能下减少能耗,这对于希望降低运营成本和碳足迹的企业来说尤为重要。

通过使用基于 Graviton3 的实例,如 Amazon EC2 C7g 和 R7g,用户可以在保持高性能的同时显著降低计算成本。

最近几年来,在 AWS 上部署和使用 StarRocks 的客户越来越多,AWS 和 StarRocks 致力于为客户提供更加极速和高性价比的服务体验。截至 2024 年 6 月,StarRocks 已经基于 AWS Graviton3 做了大量优化,详见下文测试报告。从最新实测数据来看,相对于 C6i,在 C7g 上已经实现了平均 30% 的性能提升。

测试方法以及结论

由于 Graviton3 基于ARM 的指令集尤其是 SIMD 指令集跟 x86 不同,需要做额外的适配工作。之前已经做了大部分的 SIMD 适配工作,本次测试,是 StarRocks 基于近期完成的适配了一些热点 SIMD 指令优化,然后做出的基于 TPC-DS 100GB 和 1TB 规模的测试。

参与本次对比测试的节点选型:

图片

实例具体配置:

c7g.4xlarge 

  1. 价格:根据 AWS 官网定价, 按需的价格为 0.5781 USD/hour

  2. CPU:ARM AWS Graviton

  3. 16 vCPUs, 32GB Memory, 15 Gbps Network Bandwidth

  4. CPU 频率:6GHz

  5. CPU cache:

SQL
Caches (sum of all):
L1d: 1 MiB (16 instances)
L1i: 1 MiB (16 instances)
L2: 16 MiB (16 instances)
L3: 32 MiB (1 instance)
2.6GHZ

2.6GHZ

c6i.4xlarge

  1. 价格:根据 AWS 官网定价, 按需的价格为 0.68 USD/hour

  2. CPU:x86

  3. 16 vCPUs, 32GB Memory, 12.5 Gbps Network Bandwidth

  4. CPU 频率:9GHz

  5. CPU cache:

SQL 
Caches (sum of all): 
L1d: 384 KiB (8 instances) 
L1i: 256 KiB (8 instances) 
L2: 10 MiB (8 instances) 
L3: 54 MiB (1 instance)

集群版本:

 StarRocks:StarRocks version 3.3 StarRocks version 3.3 | StarRocks

具体的测试方法和代码这里不再展开,有兴趣的读者可以参考: StarRocks TPC-DS Benchmark |  TPC-H Homepage

详细测试结果

在标准 TPC-H 测试集 100G 和 1T 规模下,相比于 C6i 机型,C7g 机型基本没有出现性能回退的 case,并且平均性能提升达到 30%,再结合 C7g 机型 15% 的价格优化,综合起来,可以实现 53% 的性价比提升。

图片

说明:

以上每个测试集的数据都是对测试集内 99 个 query 的延时求和。

  • C6i

在 C6i 机型上的测试结果。

  • C7g

优化 bitshuffle 使用的指令  #44607

优化 CRC 使用的 NEON 指令 #44607

优化 filter_range 使用的 NEON 指令 #44194

C6i/C7g: 任务跑在 C6i 上的耗时是 C7g 的几倍

简单来说,比值越高,说明优化效果越明显。

另外,这里给出在 OLAP 典型应用场景中的优化情况: Scan & Bitshuffle / Aggregate / HashJoin

图片

由上表可知, 在 OLAP 常见的场景中,优化指令集之后的,性能均有 15% 以上的提升,尤其是在 Aggregate 场景下,达到了 43% 的性能提升。

总结

基于 StarRocks 当前的优化情况和最新的测试数据来看,StarRocks on Graviton3 (C7g) 的总体性能比 Ice Lake 8375C (C6i) 实现了30%以上的综合性能提升。再结合 AWS Graviton3 自身的价格优势(C7g 相对于C6i 有 15% 的成本优化),StarRocks on C7g 相对于 C6i 可以实现 50% 以上的性价比提升。

如果您有计划在 AWS 上部署您的 StarRocks 服务,或者您已经运行 StarRocks on AWS,Graviton3 都将会给您带来更优的体验和更低的成本。

另外,还有很多客户在密切关注最新的 AWS Graviton4。Graviton4 与当前一代 Graviton3 处理器相比,性能提升高达 30%,独立核心增加 50% 以上,内存带宽提升 75% 以上,为在 Amazon EC2 上运行的工作负载提供最佳性能和能效,这让我们非常兴奋,近日 Graviton4 在 global region 正式 GA,我们会需要一些时间做定向优化和测试,所以建议大家现阶段可以优先使用 StarRocks on AWS Graviton3。

附录:

  1. 有关 C++ 针对 ARM NEON 指令集的优化,您可以参考这个 Github 链接:aws-graviton-getting-started/SIMD_and_vectorization.md at main · aws/aws-graviton-getting-started · GitHub

  2. 有关 SIMD 优化思路,您可以参考这个链接:SIMD | OLAP 数据库性能优化指南

  3. 测试环境中 FE 以及 BE 中配置参数调整如下:fe.conf --- catalog_trash_expire_second be.conf --- max_compaction_concurrency=0 trash_file_expire_time_sec=0

  4. 性价比提升计算方式:

如果 A 相对于 B,性能提升 30%,价格降低 15%,那么总体性价比的提升有多少?

性能:A= 1.3B

价格:A= 0.85B

如果以 B 的性价比为 1,则 A 的性价比 = 1.3B / 0.85B = 1.53

本篇作者

刘子赫:StarRocks 查询团队核心研发 & StarRocks Committer。

Angela Ren:亚马逊云科技解决方案架构师,负责基于亚马逊云科技云计算方案架构的咨询和设计,推广亚马逊云科技云平台技术和各种解决方案。

Li Jing:亚马逊云科技解决方案架构师,负责亚马逊云科技云计算方案咨询和设计。目前主要专注在现代化应用改造和机器学习领域的技术研究和实践。曾就职于 F5,甲骨文,摩托罗拉等多家 IT 公司,有丰富的实践经验。

更多交流,联系我们:https://wx.focussend.com/weComLink/mobileQrCodeLink/33412/8da64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3249320.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PHP房产中介租房卖房平台微信小程序系统源码

​🏠【租房卖房新选择】揭秘房产中介小程序,一键搞定置业大事!🏡 🔍【开篇:告别繁琐,拥抱便捷】🔍 还在为找房子跑断腿?为卖房发愁吗?今天给大家安利一个超…

【.NET全栈】ASP.NET开发Web应用——AJAX开发技术

文章目录 前言一、ASP.NET AJAX基础1、AJAX技术简介2、ASP.NET AJAX技术架构 二、ASP.NET AJAX服务器端扩展1、声明ScriptManager控件2、使用ScriptManager分发自定义脚本3、在ScriptManager中注册Web服务4、处理ScriptManager中的异常5、编程控制ScriptManager控件6、使用Upda…

GPT LangChain experimental agent - allow dangerous code

题意:GPT LangChain 实验性代理 - 允许危险代码 问题背景: Im creating a chatbot in VS Code where it will receive csv file through a prompt on Streamlit interface. However from the moment that file is loaded, it is showing a message with…

vue使用x6画流程图,简单使用

官网 https://x6.antv.antgroup.com/tutorial/getting-started 安装 npm install antv/x6 --save 使用 <template><div>3333<div id"container" style"width: 800px;height: 800px;"></div></div> </template> <…

上海昇腾AI训练营笔记

文章目录 Ascend C简介CANN架构昇腾AI加速卡AI Core内部计算架构抽象AI Core内核计算SPMD核函数编程API编程范式矩阵编程矩阵乘法数据分块 Ascend C简介 Ascend C系列AI处理器适用于计算力需求较低的场景&#xff0c;如智能监控、边缘计算等。提供多种精简模式和高性能模式&am…

推出全新的ZL3079x、ZL3069x、ZL3066x同步器,优化用于5G运输和无线基础设施设备

一、单通道、双通道和三通道IEEE1588/SyncE网络同步器 ZL3079x提供1个、2个和三个独立的组合硬件和软件平台定时通道&#xff0c;包括IEEE 1588-2008精确时间协议栈和同步算法。该设备使用miTimePLL定时技术&#xff0c;为5G传输和无线基础设施设备提供新的改进功能。该器件非…

如何轻松将Squarespace网站迁移到WordPress

Squarespace是一款非常出色的建站CMS工具&#xff0c;旨在帮助用户轻松地创建高品质的网站&#xff0c;它的特点是注重精美的视觉效果和良好的用户体验&#xff0c;在模板的精致度和易用度上都做的非常好。但是它也有一些缺点&#xff0c;Squarespace是一个封闭系统的CMS&#…

【音视频 | HTTP协议】HTTP协议详细介绍(HTTP方法、报文格式、报文头部字段、状态码)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Redis 关于内存碎片的解决方法

今天生产机报内存爆满异常被叫过去查看问题&#xff0c;通过各种排除最终定位到了Redis的内存碎片的问题&#xff0c;这篇博客将详细介绍Redis内存碎片问题并给出最佳实践解决此问题。 Redis的内存碎片原理 先引用Redis官方的原话&#xff1a; 当键被删除时&#xff0c;Redis …

C/C++ xml库

文章目录 一、介绍1.1 xml 介绍1.2 xml 标准1.3 xml 教程1.4 xml 构成 二、C/C xml 库选型2.1 选型范围2.2 RapidXML2.3 tinyxml22.4 pugixml2.5 libxml 五、性能比较5.1 C xml 相关的操作有哪些5.2 rapidxml、Pugixml、TinyXML2 文件读取性能比较 六、其他问题6.1 version和 e…

PlantUML-UML 绘图工具安装、Graphviz安装、本地使用/在线使用、语法、图示案例

文章目录 前言本地安装vscode安装插件下载安装Graphviz配置Graphviz环境变量测试 在线使用演示PlantUML语法总结活动图&#xff08;新语法&#xff09;时序图类图用例图其他图 更多相关内容可查看 前言 本篇提供两种使用方式分别为 在线使用地址1&#xff1a;https://www.pla…

React安装(学习版)

1. 安装Node.js和npm 首先&#xff0c;确保你的电脑上已经安装了Node.js和npm&#xff08;Node Package Manager&#xff09;。你可以从 Node.js官网 下载安装包并按照提示进行安装。安装完成后&#xff0c;可以在命令行终端中验证Node.js和npm是否正确安装&#xff1a; node …

逆向案例二十五——webpack所需模块函数很多,某翼云登录参数逆向。

解决步骤&#xff1a; 网址&#xff1a;aHR0cHM6Ly9tLmN0eXVuLmNuL3dhcC9tYWluL2F1dGgvbG9naW4 不说废话&#xff0c;密码有加密&#xff0c;直接搜索找到疑似加密位置打上断点。 再控制台打印&#xff0c;分析加密函数 有三个处理过程&#xff0c;b[g]得到的是用户名,b[f] 对…

【Unity学习笔记】第二十 · 物理引擎脉络梳理(数值积分、碰撞检测、约束解决)

转载请注明出处: https://blog.csdn.net/weixin_44013533/article/details/139808452 作者&#xff1a;CSDN|Ringleader| 物理引擎综述 物理引擎是利用物理规则模拟物体运动和碰撞的模块&#xff0c;以在重力、弹力、摩擦力等各种力作用下做出真实运动表现&#xff0c;并对碰…

CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/

1、背景&#xff1a; 在维护paas云平台过程中&#xff0c;有研发反馈paas云平台上的CI/CD的前端流水线执行异常。 2、问题描述&#xff1a; 流水线执行的是前端编译&#xff0c;使用的是node.js环境。报错内容如下&#xff1a; 2024-07-18T01:23:04.203585287Z npm ERR! code E…

高性能分布式IO系统BL205 OPC UA耦合器

边缘计算是指在网络的边缘位置进行数据处理和分析&#xff0c;而不是将所有数据都传送到云端或中心服务器&#xff0c;这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能&#xff0c;它不依赖上位机和云平台&#xff0c;就能…

从PyTorch官方的一篇教程说开去(1 - 初心)

原文在此&#xff0c;喜欢读原汁原味的可以自行去跟&#xff0c;这是一个非常经典和有学习意义的例子&#xff0c;在此向老爷子们致敬 - https://pytorch.org/tutorials/intermediate/reinforcement_q_learning.html 开源文化好是好&#xff0c;但是“公地的悲哀”这点避不开…

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建一个Springboot项目&#xff0c;勾选web将该项目创建git本地仓库&#xff0c;再创建远程仓库推送上去 创建TestController RestController RequestMapping("/test") public class TestController { GetMapping("/hello") public String sayHelloJe…

Mybatis——Lombok

偷懒插件&#xff0c;能有效减少代码量&#xff0c;增加注释即可。 下载&#xff1a; 设置——插件——搜索Lombok——下载安装 导入依赖&#xff1a; <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok<…

FastAPI 学习之路(六十)打造系统的日志输出

我们要搭建日志系统&#xff0c;可以使用loguru&#xff0c;很不错的一个开源日志系统 pip install loguru 我们在common创建log.py&#xff0c;使用方式也很简单 import os import timefrom loguru import logger# 日志的路径 log_path os.path.join(os.getcwd(), "log…