背景
2023年5月7日,阿里云RDS MySQL和RDS PostgreSQL倚天ARM架构数据库全系列规格价格下调,最高降幅40%,详情请参见RDS倚天ARM版规格价格下调。产品商业策略调整的背后,是持续的软硬件协同技术优化带来的红利释放。
首先,ARM架构相对于传统的x86架构,在计算性能和能耗效率上具有较大的优势。阿里云RDS产研团队投入大量的研发资源,逐步优化ARM架构数据库的性能,使其可以更加稳定、高效地运行。随着技术逐步成熟,成本也相应降低,这使得降价成为了一个可行的选择。
其次,伴随着信息化转型的改革浪潮以及云计算的蓬勃发展,越来越多的企业开始将数据库迁移到云上,对高性能、低成本的云数据库的需求也越来越多。阿里云RDS倚天ARM架构数据库降价可以更好地满足市场客户需求,RDS数据库的高性价比可以帮助企业降低成本。
综上所述,阿里云RDS MySQL和RDS PostgreSQL倚天ARM架构数据库同时做到了更低成本、更优性能,使得ARM架构数据库具备较高的性价比,帮助客户降本增效,进一步推动云计算市场的发展。
ARM架构现已被纳入倚天版,具体请参见产品类型。
RDS针对倚天ARM架构的技术优化
硬件层面
Prefetch预取策略优化
ARM倚天710芯片上默认的Prefetch预取策略不适合数据库的访问场景,RDS产研团队和平头哥芯片团队共同针对这一问题进行了调整,从预取算法的选择、预取量的控制、预取过程中对L2的使用等方面,选取了一组最适合数据库场景的预取策略。
OS层面
为了更好地适配ARM架构,RDS产研团队根据ARM倚天710芯片的特点在OS上进行了深度调优。
调度算法优化
自Linux内核版本2.6.23以来,CFS(Completely Fair Scheduler)成为默认的Linux内核调度程序。CFS为了保证对每个可运行任务的公平处理,会通过累计 vruntime,保证任务调度的公平。在ARM服务上,频繁的线程调度会带来较大的性能开销。基于此,RDS产研团队针对OS的调度策略做了针对性优化,重点对sched_min_granularity_ns、sched_wakeup_granularity_ns、 sched_migration_cost_ns等参数进行了调整,保证RDS在ARM服务器上的性能。
开启代码段大页
在传统x86服务器上,为了保证MySQL的性能稳定,默认关闭了代码段大页。在ARM服务器上,新版本的OS支持了单独的代码段大页,即只对代码段开启大页,数据段不使用大页,从而降低代码段的TLB miss率,提升了性能。对于PostgreSQL引擎,无论是ARM还是x86,默认都开启了代码段大页。
网卡中断优化
通过“网卡中断聚合”的方式,针对SMP IRQ affinity和RPS做了相关调整,减少了在处理网络中断时频繁的上下文切换带来的性能损耗,将多个网络队列绑定到一个核上,聚合处理能带来CPU icache使用效率的提升。如下图所示。
编译优化
在ARM服务器上,为了提升OS的运行效率,RDS产研团队在OS编译过程中引入了PGO(Profile Guided Optimization)方式,针对数据库的典型负载,对OS进行编译优化,保证OS在数据库场景下的运行效率。
数据库层面
编译优化
倚天710芯片支持了armv8.6指令集,数据库在编译过程中进行了相应适配,保证指令高效使用。同时在编译过程中启用了LTO(Link Time Optimization)和PGO(Profile Guided Optimization),分别从代码链接优化和运行时profiling反馈优化两个方面,提升数据库的性能。此外,在内存管理上,采用Jemalloc替换默认的内存分配机制,保障内存高效分配与回收。
锁优化
锁冲突是数据库并发场景下最常见的性能瓶颈点,RDS产研团队结合数据库内核和倚天710芯片的特点进行了针对性的优化,通过重新设计spinlock的实现、优化指令操作等方式,有效降低了并发场景下的锁冲突问题。
Double Write
MySQL数据库通过double write机制来保证数据写的安全性,但是double write机制也带来了更大的 I/O压力,特别是在云盘场景下。为此,数据库打通块存储和文件系统,实现了16K原子写的能力。在此能力的保障下,可以在ARM体系下安全地关闭double write,降级写 I/O的压力,极大提升 I/O Bound场景下的性能。
热点函数优化
数据库针对并发访问场景下的典型热点函数进行了针对性优化,对memcpy、crc32、hash_sort等热点函数进行了指令级的优化,充分发挥倚天710芯片的特点,保证数据库的性能。
特色场景优化
倚天710芯片在压缩场景下具有明显的性能优势,依托于倚天710芯片提供的硬件加速能力,RDS PostgreSQL针对压缩表场景进行了优化,开启压缩表后,在存储成本显著降低的情况下性能无退化。
倚天710芯片优势
倚天710 CPU是专门为云而生的云原生处理器芯片,主要体现在如下两个方面:
倚天710芯片无超线程概念,用户使用ECS规格享受的是极高的物理核性能体验,无论用户业务负载压力多大,均不会造成业务性能衰减。在此基础上,芯片设计充分考虑云用户不同规格虚拟机在性能上的可预期性,例如CPU缓存QoS特性等,不同规格均具备可预期的线性性能变化,帮助客户充分应对复杂的业务变化。
倚天710芯片与CIPU实现了1+1>2的效果。倚天710芯片将自身算力优势和CIPU I/O优势结合,使得倚天ECS在用户业务场景取得了优异的性能表现。同时,通过以CIPU为核心的理念,倚天ECS的成本和稳定性均得到了很好的优化。通过以CIPU为核心,我们采用多单路的机型设计方式,在保证低爆炸半径的前提下,提升部署密度,有效降低倚天ECS的使用成本。
ARM架构的RDS MySQL性能优于自建MySQL
以RDS MySQL为例,在经过一系列的软硬件优化后,我们以规格为8核 32 GB、 数据量为100 GB的实例为例进行sysbench压测,从下图中可以看到,ARM架构的RDS实例性能表现最佳。其中RDS ARM表示RDS MySQL on 倚天深度优化的实例,x86自建表示用户基于x86架构的ECS实例自建同等规格数据库,ARM自建表示用户基于倚天架构的ECS实例自建同等规格数据库。
结语
RDS产研团队经过软硬协同的一系列优化,使得倚天ARM架构数据库性能进一步提升并释放技术红利。在稳定性方面,RDS ARM架构规格承诺与x86一致的高SLA保障。产品功能和使用体验也与x86规格完全一致,应用无适配门槛。期望高性价比的ARM架构RDS产品普惠更多RDS云数据库客户。