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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文基于倚天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%,带来可观的成本优势,欢迎购买使用。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
|
1月前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。
|
1月前
|
人工智能 监控 测试技术
阿里云磐久服务器稳定性实践之路
阿里云服务器质量智能管理体系聚焦自研服务器硬件层面的极致优化,应对高并发交付、短稳定性周期、早问题发现和快修复四大挑战。通过“三个重构”(质量标准、开发流程、交付模式)、“六个归一”(架构、硬件、软件、测试、部件、制造)策略,实现芯片、整机和云同步发布,确保快速稳定上量。此外,全场景测试体系与智能预警、分析、修复系统协同工作,保障服务器在萌芽阶段发现问题并及时解决,提升整体质量水平。未来,阿里云将继续深化大数据驱动的质量管理,推动服务器行业硬件质量的持续进步。
|
1月前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
3月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
3月前
|
运维 安全 Linux
2024 主流的开源服务器面板推荐
随着云计算和虚拟专用服务器(VPS)的普及,服务器面板工具成为了企业和个人管理服务器的得力助手。一个优秀的服务器面板不仅可以简化服务器管理任务,还可以提升工作效率和安全性。本文将为您介绍并测评几款2024年全网热门的服务器面板,包括Websoft9、宝塔、cPanel、1Panel等,帮助您找到最适合自己的管理工具。
2024 主流的开源服务器面板推荐
|
3月前
|
监控 PHP Apache
优化 PHP-FPM 参数配置:实现服务器性能提升
优化PHP-FPM的参数配置可以显著提高服务器的性能和稳定性。通过合理设置 `pm.max_children`、`pm.start_servers`、`pm.min_spare_servers`、`pm.max_spare_servers`和 `pm.max_requests`等参数,并结合监控和调优措施,可以有效应对高并发和负载波动,确保Web应用程序的高效运行。希望本文提供的优化建议和配置示例能够帮助您实现服务器性能的提升。
148 3
|
3月前
|
数据库
|
3月前
|
存储 弹性计算 NoSQL
"从入门到实践,全方位解析云服务器ECS的秘密——手把手教你轻松驾驭阿里云的强大计算力!"
【10月更文挑战第23天】云服务器ECS(Elastic Compute Service)是阿里云提供的基础云计算服务,允许用户在云端租用和管理虚拟服务器。ECS具有弹性伸缩、按需付费、简单易用等特点,适用于网站托管、数据库部署、大数据分析等多种场景。本文介绍ECS的基本概念、使用场景及快速上手指南。
131 3
|
3月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
293 4

相关产品

  • 云服务器 ECS