43

Martin_Ma · 2022年07月15日

在基于AWS Graviton3实例上部署ClickHouse可获得高达26%的性能优势

1.简介

ClickHouse是俄罗斯最大的搜索引擎公司Yandex于2016年开源的用于联机分析处理(OLAP)的列式数据库管理系统,其处理数据的速度比传统方法快上千倍,性能超过了目前市场上其他所有的列式存储数据库。近些年,ClickHouse在OLAP领域中非常热门,国内外互联网大厂都有大规模使用。

本文中,我们将ClickHouse分别部署在AWS C7g实例(基于Arm Neoverse IP的Graviton3)与C6i实例(基于第3代英特尔至强处理器IceLake)上,并比较查询时间和吞吐量。结果表明,ClickHouse部署在C7g实例上可以比部署在C6i实例上获得高达26%的性能优势。以下部分将介绍详细的测试方法和测试结果。

2.基准测试的搭建与结果

我们将ClickHouse服务端和客户端分别部署在不同的实例中,客户端向服务端发送指定的一组查询,然后收集查询处理时间和吞吐量,进而比较运行在C7g和C6i实例上的性能差异。

编译选项

为了达到最好的性能,我们按照官方的编译方法,使用最新的Clang来编译ClickHouse,另外还加入了NATIVE和AVX等官方提供的编译选项
image.png

为了确保jemalloc在C7g和C6i上的行为一致,在jemalloc_internal_defs.h.in中配置了以下jemalloc参数。
image.png

测试环境和软件参数

ClickHouse服务端运行在不同大小的C7g/C6i实例上。基准测试客户端运行在一台C7g.4xlarge实例上。

 title=
image.png
注意:'max threads'参数指定了ClickHouse用于并行查询处理的线程数量;默认值为物理CPU核数。使用默认设置时,运行在C7g实例上的性能比C6i实例高出40%,但是测试过程中发现C6i实例中有一半的CPU资源是空闲的,而C7g实例的CPU资源则被完全利用。为了充分利用C6i上的CPU资源,我们将'max threads'的值设置为C7g和C6i实例上的vCPU数量。

查询时间测试

根据官方提供的基准测试方法和数据集,我们使用web分析数据集(包含1亿行数据)和43个典型查询来收集总的查询处理时间。

具体的测试方法,针对每一条查询在预热后连续查询10次,然后取算数平均值,最终将所有43条查询的平均时间求和,得到总的查询处理时间。对比结果可以看到,ClickHouse运行在C7g实例上的查询时间性能对比运行在C6i实例上有25.8%的性能优势。

下表显示了在不同大小的C7g和C6i实例上总查询处理时间(越小越好)的对比数据。
 title=
表1: C7g和C6i实例上查询处理时间基准测试结果
 title=
图1:C7g对比C6i实例上查询时间的性能优势

我们还选择了3个消耗时间较长的查询(Query 19、Query 33、Query 34),以观察C7g实例对比C6i实例的性能优势。
image.png

下面几张图表显示了以上3个查询在C7g和C6i实例上的比较结果。
 title=
表2: Query 19在C7g和C6i上的测试结果

 title=
图2: Query 19在C7g上对比C6i的性能优势

 title=
表3: Query 33在C7g和C6i上的测试结果

 title=
图3: Query 33在C7g上对比C6i的性能优势

 title=
表4: Query 34在C7g和C6i上的测试结果

 title=
图4: Query 34在C7g上对比C6i的性能优势

吞吐量测试

我们使用ClickHouse官方提供的基准测试工具和相同的数据集来收集吞吐量数据。每次测试时,基准测试工具运行在客户端,在预热阶段后持续向服务端发送43条查询,在测试结束后报告每秒处理的查询数(QPS)。对比结果可以看到,ClickHouse运行在C7g实例上的吞吐量性能对比运行在C6i上有31.6%的性能优势。

下表显示了在C7g和C6i实例上使用单连接场景(clickhouse-benchmark --concurrency=1)的QPS(越高越好)对比数据。

 title=
表5: C7g和C6i实例上吞吐量基准测试结果(单连接)

 title=
图5:C7g对比C6i实例上吞吐量的性能优势(单连接)

下表显示了在C7g和C6i实例上使用多并发场景(clickhouse-benchmark --concurrency=N)的QPS对比数据。(2xlarge/4xlarge实例因为内存大小的限制不支持多并发场景)

 title=
表6: C7g和C6i实例上吞吐量基准测试结果(多并发)

 title=
图6:C7g对比C6i实例上吞吐量的性能优势(多并发)

3.总结

总之,ClickHouse部署在AWS Graviton3的实例上与部署在具有相同配置的基于第3代英特尔至强处理器的实例上相比,可以获得26%的查询处理时间性能优势以及32%的吞吐量性能优势,此外还有20%的成本优势。

如果想了解更多关于基于AWS Graviton3的C7g实例的详细信息,请查看此页面。如果计划将现有应用程序迁移到AWS Graviton实例,请查看此github页面。如果在Arm Neoverse平台上运行软件时有任何疑问,欢迎留言讨论。

推荐阅读
关注数
17402
内容数
80
分享arm服务器软件应用经验、测试方法、优化思路、工具使用等。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息