【AICon】硅谷视野+中国实践,汇聚全球顶尖技术的 AI 科技盛会 >>> 了解详情
写点什么

鲲鹏应用创新大赛 2023 金奖解读:openEuler 助力北大团队创新改进,网络性能再提升

  • 2023-11-17
    北京
  • 本文字数:3896 字

    阅读完需:约 13 分钟

鲲鹏应用创新大赛 2023 金奖解读:openEuler 助力北大团队创新改进,网络性能再提升

2010 年代掀起的移动计算革命开启了智能手机全民普及的时代,对社会产生了深远的影响。在人均拥有多部智能设备的今天,各行业都在谋求数字化转型,以适应这一全新的技术图景。数字转型的浪潮反过来进一步推动着 IT 产业向着开源、创新和多样化的方向发展,正是在这一背景下,鲲鹏计算产业开始展露头角。如今,鲲鹏计算产业已经形成了包括鲲鹏社区、openEuler 操作系统、openGauss 数据库等技术生态在内的跨领域、跨行业技术体系,并在广大合作伙伴、开发者与用户群体的推动下,成为 IT 行业开源创新的重要源泉。

 

鼓励开发者参与鲲鹏社区,与社区共同成长,是鲲鹏计算产业高速成长的秘诀。在鲲鹏社区丰富多彩的开发者使能活动中,鲲鹏应用创新大赛是最受关注、参与度最高的活动之一。鲲鹏应用创新大赛是面向全国开发者的顶级赛事,旨在激发行业应用创新、加速产业融合、促进人才培养,吸引全产业开发者共同打造鲲鹏全栈解决方案。日前,第四届鲲鹏应用创新大赛全国总决赛在四川成都圆满落幕。经过 6 个月的激烈角逐,大赛最终从 1600 多支参赛队伍中评选出 13 个金奖、16 个银奖和 19 个铜奖。在大赛高校赛事的“openEuler 开源应用创新”赛道中,来自北京大学的“好像有点不”团队凭借基于 openEuler 操作系统网络开源项目的 Cubic 算法实现改进作品,赢得了专家评委的认可。


一、金奖作品青胜于蓝:算法小升级,收获大回报

(一)项目背景:Reno 算法缺陷,导致弱网性能不足


在网络数据传输过程中,数据收发两端经常会出现收发速率不同步的问题,这时就需要通过数据拥塞控制算法来解决问题,拥塞控制算法也是网络协议栈中的关键组件。作为支持嵌入式设备的跨平台操作系统,openEuler 一直使用开源社区自主研发的 Gazelle 用户态网络协议栈。该协议栈使用了轻量级网络传输协议 LwIP 来保障极高的 IO 性能和较低的性能开销,能够显著提升网络传输性能。然而,LwIP 使用的拥塞控制算法 Reno 存在一定缺陷,在网络条件较差,延迟变化剧烈或丢包频繁时,Reno 算法常常无法准确识别和适应拥塞情况,导致性能下降。

 

针对这一问题,北京大学参赛团队选择了对 LwIP 协议进行改进,在已有 TCP 协议栈的基础上实现业界主流的 Cubic 拥塞控制算法,提升高延迟复杂网络环境下的数据传输效率。


(二)整体设计:Cubic 算法接入 LwIP,升级网络协议栈


北京大学团队的整体思路是将拥塞算法从 LwIP 的 TCP 处理流程中解耦,从而将 Reno 替换为 Cubic 算法。团队为协议定义了拥塞控制算法接口,并在 TCP 控制块和描述 TCP 数据段的结构体中添加了新字段来帮助实现拥塞算法,最后调整了 TCP 处理流程中的拥塞控制代码,从而将 Cubic 算法接入了 LwIP 的 TCP 协议。

(三)算法实现:Cubic + SACK 双管齐下提升弱网性能


相比 LwIP 当前使用的 Reno 算法,Cubic 算法使用了一个三次函数作为窗口调整的增长曲线,在网络数据拥塞发生后恢复速度更快,且 Cubic 算法的窗口增长函数仅取决于发生拥塞事件的时间,完全独立于网络延迟,因此更容易应对延迟剧烈变化的场景。

 

团队参照了 Cubic 算法论文中的描述和 Linux 6.1 内核中的 Cubic 算法实现编写了具体的代码,并在此基础上加入了多项优化,避免拥塞窗口增长过快导致大量丢包。

 

同时,团队发现 LwIP 只实现了接收端的 SACK 机制,导致一定程度的虚假数据重新传输现象,使丢包数据不断重新发送。

 


为此,团队添加了发送端的 SACK 处理逻辑,并维护了 TCP 连接的 RTT 值,禁止刚刚发送的 TCP 报文重传,以解决上述问题。


(四)测试结果:弱网环境收益惊人


团队分别测试了 MySQL 场景与 TCP 数据传输场景下新算法的性能表现。经过测试发现,MySQL 场景下,Cubic 版本的 Gazelle 获得了 14% 的性能提升;在高延迟(RTT=50ms~200ms)的 TCP 场景下,Cubic 算法与 SACK 优化叠加,可以获得最高接近 3 倍的性能提升。其中,SACK 优化在高延迟场景下有着非常大的收益,相比无 SACK 时性能提升接近 50%。

 

虽然数据传输效率大幅提升,但新算法的 CPU 开销增长非常微小,相比网络程序整体而言可以忽略不计,内存开销增长也只增加 0.53% 以内,整体可控。

 

总之,北京大学团队的网络协议改进方案就是凭借独创的优化路径、优异的性能表现和极低的实现成本,最终赢得了评委的一致好评,夺得了 openEuler 开源创新赛道的金奖荣誉。


(五)应用场景预测:从物联网到大模型,小升级带来大回报

 

北京大学团队的参赛项目虽然只是对 openEuler 社区用户态网络协议栈创新项目 Gazelle 的一个小改进,但在实践场景中,考虑到网络传输延迟较高的情况并不少见,这一改进可能在多个维度为用户带来明显的性能改进和体验提升。

 

在移动互联网和物联网应用中,由于无线传输技术的先天不足,终端设备经常面临网络条件劣化导致的延迟剧烈波动问题。北京大学团队的方案可以在这类环境下大幅提升数据传输效率,显著减少用户文件下载、视频播放缓冲和物联网设备数据上报等应用的等待时间。

 

在云计算领域,跨多个地区提供云服务的厂商需要频繁对不同地区的数据中心进行大规模数据同步,但在数据传输跨越较长物理距离、多个国家或地区、多个运营商时,这种同步操作也很难保持较低的延迟水平。而基于 Cubic 算法和 SLACK 优化的新方案可以在此类场景中发挥明显优势,通过减少数据重复传输、优化拥塞恢复速度等改进明显缩短数据同步时间、减少流量开销,帮助企业降本增效。

 

新方案在大模型方面也有应用潜力。随着大模型对基础算力设施的要求提升,很多企业需要充分利用分布在多个物理区域的计算集群来完成大模型训练等任务。这些集群需要频繁通信、交互数据来实现协作,新方案同样能够帮助它们在网络条件不佳的情况下保持传输效率,消除高延迟场景下的数据互传瓶颈。


二、以开源促创新,开发者与鲲鹏社区互利共赢

 

北京大学团队的参赛项目之所以能够获得评委认可,夺得鲲鹏应用创新大赛的金奖,一方面是因为团队勇于探索创新,擅长发现问题、解决问题,另一方面则是因为 openEuler 社区的丰硕开源成果为团队提供了技术底蕴和创意源泉。该项目是在 openEuler 社区 Gazelle 用户态网络协议栈项目的基础上改进而来,而 Gazelle 则是社区众多高质量开源项目中的佼佼者,为 openEuler 操作系统的强大网络性能表现提供了重要支撑。北京大学团队站在优秀先行者的肩膀上,自然可以青出于蓝,更进一步。

 

北京大学团队的金奖方案并非孤例。事实上,本届鲲鹏应用创新大赛总决赛入围的 102 个作品中,有 80% 是运行在 openEuler 系统上,72% 使用了鲲鹏开发者套件 DevKit 代码迁移和性能分析工具,65% 基于鲲鹏应用使能套件 BoostKit 进行了性能优化。正是在鲲鹏社区“硬件开放、软件开源、使能伙伴、发展人才”的生态策略引领下,越来越多的优秀开发者加入了鲲鹏社区的大家庭,像北京大学参赛团队一样成为社区开源项目的贡献者、改进者。

 

以 openEuler 开源社区为例,目前社区已聚集超过 205 万全球用户,合并 PR 请求近 14 万,Issue 数量超过 7 万,评审意见超过 220 万,代码仓库超过 10700 个。社区平均每月新增 10 个创新项目,在服务器、云原生/边缘、嵌入式场景全方位协同使能。与此同时,openEuler 已有超过 1200 家成员单位,在他们的推动下,社区的开源项目在关系国计民生的十大关键行业中广泛应用,用户包括电网、银行、运营商、航空等重要部门和企业,产生了显著的商业和社会价值。这些实践落地项目反过来又为社区的开源贡献者带来的丰厚的回报,极大促进了他们推动技术进步的积极性,为开源社区的持续发展带来了源源不断的创新活力。

 

在 IT 行业,创新技术的发展高度依赖健康、繁荣的开源生态,包括 openEuler 等开源社区在内,鲲鹏计算产业正在建立开源生态的良性价值循环。在这一体系中,开发者、企业、用户通力协作,向着共赢数字时代的相同目标努力前进。


三、生态繁荣成长,鲲鹏产业迈向数智未来


星星之火,可以燎原。一个又一个像北京大学团队金奖项目这样的进步累积起来,为鲲鹏计算产业构筑了生态繁荣的根基。从硬件到软件,从基础设施到应用开发,鲲鹏生态正在广大合作伙伴、开发者和用户的共同努力下飞速成长,日新月异。

 

创新生态的积累是量变到质变的过程。北京大学团队的金奖方案如果仅仅是一个独立的开源项目改进,很可能少人问津、难以创造更大的社会价值。但正因为是鲲鹏生态的迭代创新成果,它不仅赢得了鲲鹏应用创新大赛的殊荣,未来还将有广阔的应用天地。由于 openEuler 操作系统在移动互联网、物联网、云计算、人工智能领域都有大量落地场景和机遇,这一金奖方案可以在这些场景中充分发挥优势,创造可观的贡献。与其类似,本届鲲鹏应用创新大赛的近 50 个获奖作品,以及更多优秀项目都有望在鲲鹏生态中找到自己发光发热的位置,向着市场和商业应用的方向开花结果。

 

目前,鲲鹏产业已经与 4500 多家合作伙伴孵化了超过 13500 个解决方案,行业落地持续加速。过去四年来,鲲鹏生态先后发起了鲲鹏开发者计划、鲲鹏展翅伙伴计划、众智计划、优才计划等社区支持项目,这些项目与鲲鹏应用创新大赛等社区活动一起,帮助来自企业、科研、高校领域的开发者提升产品创新能力、产品质量控制能力、营销拓展能力,并打造更优质的产品服务体系。通过繁荣活跃的社区赋能,鲲鹏在处理器、操作系统、数据库等基础软硬件领域,以及数字孪生、AR/VR 等创新领域持续开拓,使各个方向的开发者与企业形成合力,在社区活动和支持项目的帮助下加快创新转化,构建全栈创新的计算产业生态系统,共筑各行业的数字根基。北京大学的金奖方案只是这一浪潮中的一个小小缩影,未来,我们将见证鲲鹏在更多广阔的天地展翅翱翔,成为全球领先的数字社区与生态,携手千百万开发者与合作伙伴共创美好的数智未来。

 

2023-11-17 10:286001
用户头像
鲁冬雪 InfoQ 策划主编

发布了 340 篇内容, 共 201.0 次阅读, 收获喜欢 274 次。

关注

评论

发布
暂无评论
发现更多内容

面试中必问的JVM应该怎么学(面试题含答案)

猿灯塔

cms项目系列(一)——SSM框架搭建

程序员的时光

spring

计算机操作系统基础(十一)---线程同步之互斥量

书旅

php laravel 线程 操作系统 进程

面试官:既然CPU有MESI,为什么 JMM 还需要volatile关键字?

犬来八荒

Java 面试 JVM 硬件

专科程序员与本科程序员之间有什么区别?薪资待遇又差多少?

码农月半

spring 程序员 面试

解读 java 并发队列 BlockingQueue

猿灯塔

Java

锦囊篇|一文摸懂SharedPreferences和MMKV(二)

ClericYi

农产品电商平台的S曲线分析

石云升

增长 S型曲线 破局点

spring 那点事儿——让你少走弯路

爱java爱自己

Spring Cloud Spring Boot

如何站在架构师的角度做框架

小新

Java 集合 框架

1.2w字 | 初中级前端 JavaScript 自测清单 - 1

pingan8787

Java 大前端 Web

饿了么4年,阿里2年:我的总结与思考

程序员生活志

工作经验

今天来聊聊如何挑书

封不羁

读书 个人感想

授权专利争夺正当时

CECBC

数据隐私 授权专利 平台应用服务

Java架构-Apache POI Excel

猿灯塔

为什么建议项目中统一线程池类?

张挺

源码分析 | 数据异构Canal 初探

小新

你真的理解透彻高并发了吗?来看看架构师眼里的高并发

小谈

Java 面试 高并发 高并发系统设计

架构师训练营第五周学习总结

张明森

区块链+金融赋能高原特色农业重点产业

CECBC

打破信息孤岛 区块链+咖啡 特色农业 咖云链

简直了!顶级架构师分享心得,如何在项目中兼容多种数据库

犬来八荒

Java MySQL 数据库 面试

如何搭建一个Zookeeper集群

Rayjun

大数据 zookeeper 分布式

什么时候不要用微服务?以 Istio 为例

无予且行

Java 微服务 后端

【思考】互联网厂商争夺企业市场

superman

企业中台 互联网

架构师训练营 -week5 命题作业

J.Smile

极客大学架构师训练营

编程核心能力之组合

顿晓

Java 学习 pipe

SQLite你用对了吗

山楂大卷

sqlite 数据库 选型

PHP实现一致性哈希算法

任小龙

ConcurrentHashMap里面也有死循环

无予且行

Java jdk 面试 jdk8

架构师训练营 第 5 周作业

Lingjun

极客大学架构师训练营

程序员阿里、京东、美团面试整理的面试题,测试一下你都会了吗?

小谈

Java 阿里巴巴 面试

鲲鹏应用创新大赛 2023 金奖解读:openEuler 助力北大团队创新改进,网络性能再提升_云计算_鲁冬雪_InfoQ精选文章