开源PostgreSQL在倚天ECS上的最佳优化实践

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 本文基于倚天ECS硬件平台,以自顶向下的方式从上层应用、到基础软件,再到底层芯片硬件,通过应用与芯片的硬件特性的亲和性分析,实现PostgreSQL与倚天芯片软硬协同的深度优化,充分使能倚天硬件性能,帮助开源PostgreSQL应用实现性能提升。

1. 简介

PostgreSQL 是一个高度先进的开源对象关系型数据库管理系统(ORDBMS)。它以其可靠性、健壮性、和性能而闻名,经常用于处理从小型应用到大规模、复杂的数据处理任务的各种数据。

作为一个 ORDBMS,PostgreSQL 不仅支持标准的 SQL 数据查询和数据类型,还提供了对复杂数据类型和对象导向数据库特性的支持,例如表继承、函数索引、规则系统等。这使得 PostgreSQL 特别适合处理多样化的数据,可以存储和查询包括文本、地理空间数据、JSON 和 XML 等在内的数据类型。此外,PostgreSQL 提供了强大的事务和并发控制,它的多版本并发控制(MVCC)提供了并发用户高度的隔离性,而不会牺牲读写性能。它还包括对 ACID(原子性、一致性、隔离性、持久性)事务的全面支持,以确保数据库操作的可靠性。

PostgreSQL 的扩展性也是其受欢迎的一个原因。它有一个动态的扩展框架,可以加载新的数据类型、函数、操作符或其他功能,而无需修改 PostgreSQL 核心代码。此外,它还有一个大型活跃的开发和支持社区,社区成员积极开发新功能、修复漏洞,并提供支持。

本文基于倚天ECS硬件平台,以自顶向下的方式从上层应用、到基础软件,再到底层芯片硬件,通过应用与芯片的硬件特性的亲和性分析,实现PostgreSQL与倚天芯片软硬协同的深度优化,充分使能倚天硬件性能,帮助开源PostgreSQL应用实现性能提升。

基于阿里巴巴第八代ECS实例和开源版本PostgreSQL应用,使用Sysbench对基于倚天的第八代实例g8y和基于Intel的第八代最新实例g8i做了对比测试,结果显示:在相同规格下,优化后的第八代倚天ECS实例,在典型性读写混合场景下,领先原生g8i ~31%,进一步对比优化后的g8i版本,倚天优化版本依然能够实现性能领先~7%。

image.png

2. 优化手段

平头哥倚天解决方案通用算力团队自底向上对PostgreSQL的性能指标和热点函数进行了详细抓取,并进行了对比分析,从硬件性能完成度指标出发,对开源PostgreSQL应用的特点进行了分析,从涉及应用性能瓶颈的Frontend Bound和Backend Bound指标出发对应用进行自顶向下的全栈优化。

具体包括应用层参数配置优化、OS层配置及内核优化、编译器层优化、微架构分析优化、硬件能力优化等。

  • 应用层:
  • 对PostgreSQL应用侧关键参数进行分析,结合当前的规格配置,针对倚天g8y实例进行适配优化,结合当前内存、cache等配置合适的shared buffer、wal buffer size、cacheline align size等激发硬件性能潜力。
  • 针对数据库并发场景下最常见锁冲突瓶颈,PostgreSQL结合倚天芯片指令进行针对性的优化,通过重新设计spinlock的实现、优化指令操作等方式,有效降低了并发场景下的锁冲突问题。
  • OS层:
  • 基于PostgreSQL运行时系统特点,针对涉及脏页回收、TCP网络包处理以及调度等相关的系统参数进行优化,提升CPU利用率,最大程度发挥倚天性能优势。
  • 配置OS 64K透明大页,以使能PostgreSQL的原子写,进一步降低IO写入代价。
  • 通过开启代码段大页,将应用程序代码段 (.text) 通过file THP映射,减少TLB entry开销,显著降低iTLB miss,降低了整个系统中的资源竞争。
  • 为了减少网络中断处理时由于频繁的上下文切换带来的性能损耗,通过“网卡中断聚合”的方式,针对SMP IRQ affinity和RPS做了相关调整,将多个网络队列绑定到一个核上,聚合处理能带来CPU iCache使用效率提升。
  • 编译器层:
  • 使用链接时优化(LTO)技术,扩展了编译器过程间分析的范围,全局优化数据库代码,降低iCache Miss。
  • 对OS内核及PostgreSQL服务端应用进行PGO(Profile Guided Optimization)优化。通过更优的代码冷热重新布局,降低在典型场景运行时应用的Frontend Bound。
  • 启用jemalloc优化,能够加速内存分配和回收,以减少PostgreSQL的内存管理成本,加速数据查询和写入速度。
  • 微架构分析优化:
  • 基于我们自主研发的Micro-Optimizer微架构分析优化工具,通过抓取运行时指令流,进行分支跳转分析,建立基于Basic Block的分析模型,可以获取更精确的代码冷热情况,可以在PGO的基础上进一步降低iCache Miss,减少应用的Frontend Bound。
  • 基于倚天特有的SPE特性,结合我们的Micro-Optimizer微架构分析优化工具,能够实现对运行时指令流中的ldr/str等访存指令进行分析建模,捕获PostgreSQL在不同场景下的dCache Miss情况。通过分析热点并结合指令预取或缓存锁定等优化手段可针对特定数据进行缓存优化,从而降低应用的Backend Bound。

image.png

  • 硬件能力优化:
  • 通过合适的硬件预取策略配置,可以进一步发挥倚天的硬件能力。数据库的内存访问与常见workload不同,访问模式更加随机,不适合通用的数据预取策略。在数据库场景下,过于激进的数据预取可能无法提高缓存命中率,反而会增加内存带宽的使用,并且在缓存中填充无效的数据。调整预取策略,为缓存设置合理的指令预留,能给PostgreSQL带来显著的性能收益。
  • 启用LSE指令扩展,使用原生的CAS 等指令实现数据库的原子操作,优化了加锁、解锁等操作的性能,极大提高了数据库高并发场景下的性能。

综上所述,从PostgreSQL应用本身出发,基于应用在倚天硬件平台上的top-down性能指标,通过软硬协同的手段,拉通应用-OS-基础软件-芯片硬件全面实现对应用性能的优化,实现Frontend Bound和Backend Bound的显著降低,充分使能和榨取硬件性能。其中有部分优化手段也适用于x86,我们在x86上也进行了同样的优化,也获取了一定的性能收益,但是综合来看在倚天上优化效果更佳,PostgreSQL性能也最终得以反超x86。

3. 性能测试

在性能测试中,我们选用数据库场景的典型8C32GB环境配置进行测试,服务端详细配置如下:

Terms

g8y.2xlarge

g8i.2xlarge

CPUs

8

8

Memory

32GB

32GB

Disk

100GB PL0

100GB PL0

OS

Alibaba Cloud Linux release 3 (Soaring Falcon)

Alibaba Cloud Linux release 3 (Soaring Falcon)

Kernel

5.10.134-15.al8.aarch64

5.10.134-15.al8.x86_64

GCC

Alibaba 10.2.1-3.5 2.32

Alibaba 10.2.1-3.5 2.32

PostgresSQL

REL_15_4

REL_15_4

CFLAGS

default in pgsql

default in pgsql

基础配置为PostgreSQL默认参数配置,对于优化配置,我们已将PostgreSQL所有优化手段集成在ptg-accelerator中,可以在基于开源PostgreSQL进行一键调优。

为了能够准确客观的衡量数据库性能,我们使用sysbench作为负载生成器和性能基准测试工具。

在数据库领域中,Sysbench经常被用来测试各种数据库管理系统(如PostgreSQL、MySQL等)在不同负载下的性能表现。它可以模拟并发用户访问数据库,测量数据库的读写能力、事务处理性能和并发连接处理能力等指标。在我们的测试环境中,它被部署在一个32C机器作为客户端,最终的性能以Sysbench压测输出结果为准,性能指标为TPS(Transactions Per Second,数据库每秒执行的事务数)。


g8y.2xlarge

g8i.2xlarge

倚天优化收益

Read Only

Read Write

Read Only

Read Write

Read Only

Read Write

基础性能

8318.68

5106.18

11365.09

6970.61

0%

0%

调优后性能

15348.05

9169.16

14003.04

8580.39

84.50%

79.57%

image.png

image.png

从上图可以看出,综合当前针对PostgreSQL的优化手段,能够在不同架构和平台下都实现一定的性能提升。但整体而言,基于倚天的硬件优势,多种优化手段能够在倚天上获得较为显著的性能提升,为应用在倚天平台的性能带来更大的性能优势:

  • 不论是只读还是读写混合场景下,优化后g8y都能够保持对相同规格优化版本g8i的性能领先;
  • 在只读场景下,能够实现g8y性能提升~84%,g8i性能提升~68%;
  • 在读写混合场景下,能够实现g8y性能提升~79%,g8i性能提升~68%。

进一步地,通过当前对PostgreSQL的软硬协同优化,对前后端性能瓶颈带来显著缓解,对比倚天平台优化前后性能指标:

image.png

image.png

  • Frontend Bound在iTLB、iCache、branch misses等指标方面显著下降,其中iTLB miss下降一个数量级,branch miss等指标下降接近20%,表明当前的优化有效弥补了PostgreSQL在处理器前端的劣势,能够充分发挥后端带来的处理性能。
  • Backend Bound在L1/L2 cache miss方面下降均超过10%,表明当前的优化在硬件处理方面的效率进一步增强,在已有后端计算和处理单元的基础上,高效利用后端的pipeline实现性能提升。

image.png

4. 优化总结

基于当前PostgreSQL在硬件前后端应用特征分析,结合开源PostgreSQL应用,针对性地对前后端从应用-系统-编译器-硬件芯片使用多种手段综合的协同优化,显著降低应用在CPU前后端的性能瓶颈,提升应用的IPC,实现开源PostgreSQL在倚天平台上性能的显著提升,领先同代同规格x86硬件,进一步实现ECS第八代倚天实例性价比领先Intel实例超过25%,带来可观的成本优势,欢迎购买使用。

相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 弹性计算 算法
倚天产品介绍|倚天ECS加速国密算法性能
倚天ECS是阿里云基于平头哥自研数据中心芯片倚天710推出arm架构实例,采用armv9架构,支持SM3/SM4指令,可以加速国密算法性能。本文基于OpenSSL 3.2和Tongsuo 实测对比了倚天ECS g8y实例和Intel g7 实例国密性能。为用户选择ECS提供参考。
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
165 0
|
1月前
|
编解码 弹性计算 Cloud Native
倚天使用|倚天ECS视频编解码之x264性能
在平头哥发布了首颗为云而生的 CPU 芯片倚天710之后,搭载倚天 710 的 ECS 实例表现出强劲的性能实力,在x264编解码场景下有着极高的性价比。
|
6天前
|
关系型数据库 OLAP 分布式数据库
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
4月26日周五,PolarDB开源社区联合康恩贝将共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!
|
14天前
|
Linux 数据安全/隐私保护
Linux基础与服务器架构综合小实践
【4月更文挑战第9天】Linux基础与服务器架构综合小实践
1245 8
|
16天前
|
运维 关系型数据库 分布式数据库
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
4月19日周五,PolarDB开源社区联合科大讯飞共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
|
22天前
|
弹性计算 前端开发 JavaScript
高校学生在家实践ECS弹性云服务器
简单谈谈我这几周使用ECS弹性云服务器的体验感
|
26天前
|
存储 JSON 关系型数据库
PostgreSQL Json应用场景介绍和Shared Detoast优化
PostgreSQL Json应用场景介绍和Shared Detoast优化
|
1月前
|
存储 弹性计算 监控
ecs配置与优化
阿里云ECS优化涉及实例规格选择、磁盘存储、网络配置、OS及软件优化、连接数管理、监控自动化和升级扩展。选择合适实例类型、磁盘类型以满足I/O需求,优化网络带宽与安全组规则,保持操作系统更新并调整软件配置。注意监控关键指标,利用弹性伸缩适应业务变化,适时升级资源,实现性能与成本的最佳平衡。
24 3
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。

相关产品

  • 云服务器 ECS