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

news2024/9/22 1:27:10

在数据时代,企业拥有前所未有的大量数据资产,但如何从海量数据中发掘价值成为挑战。数据分析凭借强大的分析能力,可从不同维度挖掘数据中蕴含的见解和规律,为企业战略决策提供依据。数据分析在营销、风险管控、产品优化等领域发挥着关键作用,帮助企业提高运营效率、优化业务流程、发现新商机、增强竞争力。低成本高效率的完成对海量数据的分析,及时准确的释放数据价值,已成为企业赢得竞争优势的利器。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://www.coloradmin.cn/o/1934629.html

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

相关文章

PostgreSQL的逻辑架构

一、PostgreSql的逻辑架构: 一个server可以有多个database;一个database有多个schema,默认的schema是public;schema下才是对象,其中对象包含:表、视图、触发器、索引等;与user之间的关系&#x…

Artix7系列FPGA实现SDI视频编解码+UDP以太网传输,基于GTP高速接口,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的以太网方案本博已有的FPGA图像缩放方案本方案的缩放应用本方案在Xilinx--Kintex系列FPGA上的应用本方案在Xilinx--Zynq系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡…

一款由AI编写,简洁而实用的开源IP信息查看器

大家好,今天给大家分享一款用于查询和显示用户当前 IP 地址的轻量级项目MyIP。 MyIP提供了多种功能,包括IP地址查询、网络连通性检查、WebRTC连接检测、DNS泄露检查、网速测试、MTR测试等等。 使用MyIP,我们可以轻松地查看自己的公网IP地址&…

linux live555编译以及rtsp服务器搭建

一、live555源码 下载:点击跳转 二、编译 1、往文件 config.linux里的 COMPILE_OPTS 添加以下两个参数 -DNO_STD_LIB 和 -DNO_OPENSSL1 ,修改后如下: COMPILE_OPTS $(INCLUDES) -I/usr/local/include -I. -O2 -DNO_STD_LIB -DNO_OPENSS…

el-tree动态添加子节点的问题

如果我们需要动态往el-tree里面某一个节点添加子节点,追加或删除,我跟你讲,一定要显式地调用el-tree的方法,不然的话,后面调用setChecked这种方法看不到效果的。 比如el-tree绑定的data如下: [{id:"1…

华为云GaussDB部署指南:主备架构的常见问题与解决方案

文章目录 华为云GaussDB部署指南:主备架构的常见问题与解决方案背景介绍部署步骤1.修改主机名2.软件安装检查3.禁用交换内存4.创建数据目录并挂载5.配置NTP时钟同步6.添加资源限制参数7.修改网卡的MTU8.上传安装工具包9.编辑集群配置文件10.修改集群安装模板11.安装…

目标检测IOU和NMS详解

1. 目标检测中两个重要的概念:IOU和NMS 1, 具体来说,它是两边界框相交部分面积与相并部分面积之比,如下所示: 2.原理 这里详细解释一下计算的原理: 一般来说我们给定框的坐标有两种形式: [x,y,w,h] (或者说是[x,y,h,…

区块链技术在溯源领域的应用

区块链技术具有去中心化、不可篡改、可追溯等特点,使其在溯源领域具有广阔的应用前景。具体而言,区块链技术可以应用于以下几个方面。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 产品溯源 产品溯源是指…

JAVA:Filer过滤器+案例:请求IP访问限制和请求返回值修改

JAVA:Filer过滤器 介绍 Java中的Filter也被称为过滤器,它是Servlet技术的一部分,用于在web服务器上拦截请求和响应,以检查或转换其内容。 Filter的urlPatterns可以过滤特定地址http的请求,也可以利用Filter对访问请求…

上位机图像处理和嵌入式模块部署(香橙派AI Pro开发板试用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和工控机相比较,linux嵌入式开发板使用上面方便很多、也容易很多。很多的第三方库都可以通过yum、apt-get这样的方法直接下载到,不需要自己通过源代码重新进行编译、安装。因为自…

PHP萌宠之家微信小程序系统源码

🐾萌宠之家微信小程序🐾 —— 铲屎官们的温馨小窝✨ 🏠【一键开启萌宠乐园】🏠 亲们,是不是每次刷手机都忍不住想看看那些软萌可爱的毛孩子?现在,有了“萌宠之家”微信小程序,你的…

进程与线程(二)线程相关

目录 一. 基本概念二. 线程与进程的比较三. 线程的属性四. 线程的状态与切换五. 线程的组织与控制线程控制块(TCB)线程创建线程终止 六. 线程的实现方式用户级线程(User-Level-Thread,ULT)内核级线程(Kerne…

刷题了:977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

学习记录,主要参考:代码随想录 977.有序数组的平方 题目链接:https://leetcode.cn/problems/remove-element/ 文章讲解:https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html 视频讲解:http…

【go】Excelize处理excel表 带合并单元格、自动换行与固定列宽的文件导出

文章目录 1 简介2 相关需求与实现2.1 导出带单元格合并的excel文件2.2 导出增加自动换行和固定列宽的excel文件 1 简介 之前整理过使用Excelize导出原始excel文件与增加数据校验的excel导出。【go】Excelize处理excel表 带数据校验的文件导出 本文整理使用Excelize导出带单元…

签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。

文章目录 I 签名进行请求数据类型类型判断1.1 常见的ContentType1.2 签名切面处理1.3 文件上传案例1.4 处理接口信息背景: 文件上传接口的请求数据类型通常为multipart/form-data,方便携带文本域和使用接口文档进行调试。 如果携带JSON数据,不方便调试接口。 前端数据也要特…

如何学习Hadoop:糙快猛的大数据之路(利用GPT 学习)

目录 引言Hadoop是什么?学习Hadoop的"糙快猛"之道1. 不要追求完美,先动手再说2. 从简单的MapReduce开始3. 利用大模型加速学习4. 循序渐进,建立知识体系 构建您的Hadoop技能树1. 夯实基础:Linux和Java2. 深入理解HDFS3.…

Chromium CI/CD 之Jenkins实用指南2024 - 常见的构建错误(六)

1. 引言 在前一篇《Chromium CI/CD 之 Jenkins - 发送任务到Ubuntu(五)》中,我们详细讲解了如何将Jenkins任务发送到Ubuntu节点执行,并成功验证了文件的传输和回传。这些操作帮助您充分利用远程节点资源,提升了构建和…

收银系统源码-商城下单,门店接单

随着新零售时代的不断进步,线下线上一体化的收银系统,被很多门店越来越重视。用户在线上商城下单后,门店如何接单呢,如何处理订单呢? 1.收银系统开发语言 核心开发语言: PHP、HTML5、Dart后台接口: PHP7.3后合管理网…

【BUG】已解决:note: This is an issue with the package mentioned above,not pip.

已解决:note: This is an issue with the package mentioned above,not pip. 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷…

操作系统发展简史(Unix/Linux 篇 + DOS/Windows 篇)+ Mac 与 Microsoft 之风云争霸

操作系统发展简史(Unix/Linux 篇) 说到操作系统,大家都不会陌生。我们天天都在接触操作系统 —— 用台式机或笔记本电脑,使用的是 windows 和 macOS 系统;用手机、平板电脑,则是 android(安卓&…