阿里云消息团队创新论文被软件工程顶会 FM 2024 录用

本文涉及的产品
云原生网关 MSE Higress,422元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 此论文灵感来源于 RocketMQ 适配阿里云倚天 CPU 的性能优化过程中。RocketMQ 此前在发送消息的过程中存在两种锁:自旋锁和互斥锁。本文旨在提出一种新的自适应 K 值退避锁,能够让高并发系统的部署者无需考虑两种锁的优劣势,只需使用一把锁即可实现性能的最优以及最低的资源损耗。

近日,由阿里云消息队列团队发表的关于 RocketMQ 锁性能优化论文被 CCF-A 类软件工程顶级会议 FM 2024 录用。

image.png

FM 2024 是由欧洲形式化方法协会(FME)组织的第 24 届国际研讨会,会议汇聚了来自各国的形式化研究学者,是形式化方法领域的顶级会议。FM 2021 强调形式化方法在广泛领域的开发和应用,包括软件、网络物理系统和基于计算机的综合系统。形式化方法以严格的数学化和机械化方法为基础来规约、构建和验证计算系统,是改善和确保计算系统质量的重要方法,其模型、技术和工具已延生成为计算思维的重要载体。


此次被录用的论文为《Beyond the Bottleneck: Enhancing High-Concurrency Systems with Lock Tuning》。此论文灵感来源于 RocketMQ 适配阿里云倚天 CPU 的性能优化过程中。RocketMQ 此前在发送消息的过程中存在两种锁:自旋锁和互斥锁。我们发现,不同 CPU 适合的锁行为并不相同。糟糕的锁行为可能导致性能的大幅下滑,而适配的锁行为能够在提升性能的同时降低资源损耗。这两种锁在版本迭代过程中,都在线上版本中使用过,且对于不同的版本来说,使用这两种锁可能带来截然不同的性能结果。


因此,本文旨在提出一种新的自适应 K 值退避锁,能够让高并发系统的部署者无需考虑两种锁的优劣势,只需使用一把锁即可实现性能的最优以及最低的资源损耗。换言之,我们希望有一把锁能够同时具备自旋锁、互斥锁的特点,同时适用于竞争激烈和不激烈的情况。我们最终决定改造自旋锁,通过一把特殊的自旋锁,使系统在各种竞争情况下都保持非常优质的锁行为。自旋锁由于无限自旋直到获取到锁,在临界区较大时会产生较多的空转,耗费大量的 CPU 资源。为了能有效利用自旋锁的优势,因此我们要在临界区较大时对其空转次数的控制,从而避免大量空转,最大程度兼容临界区较大的场景。


最终,我们基于排队论,通过对自旋锁的行为建模,得到了自旋次数与系统负载的关系:

image.png

image.png


我们最终基于系统的最大压力场景提出了自适应 K 值退避锁:进行 K 次自旋后还未获得锁后,执行 Thread.yield() 将 CPU 执行权交给操作系统。这种行为能够避免互斥锁的无谓上下文切换,也能避免高压场景下的无限自旋带来的 CPU 损耗。这种行为能够缓解系统压力,取得自旋和 CPU 上下文切换两种方法中的最低开销。

image.png

在自适应 K 值退避锁的作用下,我们能找到系统性能的局部最优点,达到最大的 TPS 性能。结果如下表所示:

image.png

消息发送最大 TPS 的性能优化结果


此外,我们还检查了各个 K 值下的 Broker 资源损耗情况,发现在最大 TPS 时的 K 值,同时也是资源占用相对最低时的 k 值:

image.png

各个 K 值下的 CPU 使用率


以 X86 架构,同步刷盘的行为为例。实验结果表明,在 k= 10^3 时,发送速度不仅达到峰值(155019.20),CPU 使用率也达到最低。这表明退避策略成功地节省了 CPU 资源。此时,CPU 支持更高的性能水平和较低的利用率水平,这表明性能瓶颈已经转移——例如,可能已经转移到了磁盘上。在表中可以观察到,在具有相同的 k(10^3)和配置参数(最新代码,SYNC 刷盘模式)的 ARM CPU 上,RocketMQ 的性能提高了 10.4%。此外,如上图所示,当 k= 10^3 时,CPU 使用量大幅下降,从平均超过 1000% 下降到 750% 左右。资源消耗的减少表明,减轻其他系统瓶颈可能可以带来更显著的性能提高。


附论文信息

录用论文题目:《Beyond the Bottleneck: Enhancing High-Concurrency Systems with Lock Tuning》

作者:季俊涛,古崟佑,傅玉宝,林清山

论文概述:高并发系统常常面临性能瓶颈,主要是由于线程间激烈竞争锁导致的等待和上下文切换。作为一家云计算公司,我们非常重视性能的最大化。为此,我们对轻量级自旋锁进行了改进,并提出了一种简洁的参数微调策略,能够在最低风险条件下突破系统性能瓶颈。该策略在高吞吐量消息队列系统 Apache RocketMQ 中得到了验证,实现了 X86 CPU 性能提升 37.58% 和 ARM CPU 性能提升 32.82%。此外,我们还确认了这种方法在不同代码版本和 IO 刷新策略下的一致有效性,显示出其在实际应用中的广泛适用性。这项工作不仅为解决高并发系统的性能问题提供了实用工具,还突显了形式化技术在工程问题解决中的实际价值。


相关链接:

[1] FM 2024

https://www.fm24.polimi.it/


点击此处,RocketMQ 一站式学习,最全最新的 RocketMQ 资讯、文章和答疑,尽在中文社区(https://rocketmq.io/)!


相关文章
|
5月前
|
人工智能 安全
又遇到GPT写的review了?看看北大&密歇根的这个研究工作
【7月更文挑战第27天】北大的一项研究"Eliciting Informative Text Evaluations with Large Language Models"探讨了如何利用大型语言模型激励高质量文本反馈。提出两种机制:生成式同行预测机制(GPPM)和生成式概要同行预测机制(GSPPM),通过一致性评分鼓励详细准确的反馈。实验表明GSPPM能有效区分人工及AI生成内容,尤其擅长降低大型语言模型生成评论的影响。但仍面临模型预测偏差、潜在操纵等挑战。[论文](https://arxiv.org/abs/2405.15077)
50 4
|
7月前
|
域名解析 负载均衡 网络协议
阿里云基础设施网络研发团队参与论文获得CCS 2023 杰出论文奖
阿里云基础设施网络研发团队参与论文获得CCS 2023 杰出论文奖
|
机器学习/深度学习 人工智能 安全
隐语团队研究成果再创佳绩,两篇论文分别被USENIX ATC'23和IJCAI'23接收!
隐语团队研究成果再创佳绩,两篇论文分别被USENIX ATC'23和IJCAI'23接收!
208 0
|
存储 JSON 人工智能
送给大模型的「高考」卷:442人联名论文给大模型提出204个任务,谷歌领衔
送给大模型的「高考」卷:442人联名论文给大模型提出204个任务,谷歌领衔
174 0
送给大模型的「高考」卷:442人联名论文给大模型提出204个任务,谷歌领衔
|
人工智能 安全 算法
可信联邦学习线上分享:杨强教授带领四篇论文解读最前沿研究
可信联邦学习线上分享:杨强教授带领四篇论文解读最前沿研究
|
机器学习/深度学习 人工智能 运维
理论用于实践!华为配置管理研究获SIGCOMM 2022最佳论文奖(2)
理论用于实践!华为配置管理研究获SIGCOMM 2022最佳论文奖
146 0
|
人工智能 JSON 运维
理论用于实践!华为配置管理研究获SIGCOMM 2022最佳论文奖(1)
理论用于实践!华为配置管理研究获SIGCOMM 2022最佳论文奖
154 0
|
机器学习/深度学习 Web App开发 算法
伦敦大学学院、UC伯克利联手,撰文综述深度强化学习泛化研究
伦敦大学学院、UC伯克利联手,撰文综述深度强化学习泛化研究
120 0
|
人工智能 自然语言处理 API
超越现有指标57.3%,邢波教授、胡志挺教授团队提出统一NLG评价框架
超越现有指标57.3%,邢波教授、胡志挺教授团队提出统一NLG评价框架
130 0
|
机器学习/深度学习 人工智能 自然语言处理
30页论文!俞士纶团队新作:AIGC全面调查,从GAN到ChatGPT发展史
30页论文!俞士纶团队新作:AIGC全面调查,从GAN到ChatGPT发展史
169 0
下一篇
DataWorks