我的9年开源之路:395 Patch、20+Feature,背后只有努力与热爱

2024-03-25 12:20

本文主要是介绍我的9年开源之路:395 Patch、20+Feature,背后只有努力与热爱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

28ac48ed4100cc1b8db03ab028f53463.gif

b0f273886cbd8f8b442cef728af5ff21.png

| 转载自:腾源会

| 作者:腾小源

| 编辑:周晶晶

| 设计:周颖

| 责编:钱睿

9月17日,在2021中国信通院主办的2021 OSCAR开源产业大会上,腾讯云虚拟化资深研发专家李万鹏凭借在Linux内核KVM子系统的长期及突出贡献,荣获“开源先锋人物”奖。腾源会也第一时间采访了李万鹏,以求向开源爱好者们传递这位开源达人成长背后的感悟及点滴。

2019年8月9号,对于李万鹏来说,是一个不同寻常的日子。

那天早上,来自Paolo Zonzini(KVM总体维护者)的一封邮件让他久久不能平静。邮件中赫然写着的,“Formalize this by listing them as reviewers. I am including people with various expertise:……Wanpeng for LAPIC and paravirtualization”,意味着从此,他的身份里又多了一个新的“头衔”——Linux内核KVM子系统Reviewer。

寥寥一句,不仅是对李万鹏从2012年投入开源社区和开源贡献开始7年来的认可,更让他感慨和念想自己前7年的成长……仿佛一切像“苦尽甘来”。

“那一刻我真的有些激动”,李万鹏说。

59614e242488d1f21fd5c4ddd1b81b60.png

9e2858ccab1e64d95ad56a085d83cd3b.png

我的开源前半段,是一段“虐心”之旅

李万鹏是腾讯云虚拟化产品中心的一名工程师,现负责腾讯云虚拟化开源技术的开发和社区工作。和标准程序员类似,他不擅长言语。“有点无聊,更不是个有趣的人”,是他对自我性格的总结。而在其腼腆内敛的表达下,你很难联想到这个“普通人”背后所拥有的光环:Linux 内核 X86 KVM 子系统的5位核心 Reviewer 之一,Linux内核全球华人贡献排名Top 26……

但这些头衔,的确就是他9年开源之路的烙印。

9年里,李万鹏累计给Linux内核及社区贡献了395个Patches、20多Features(技术特性)。2015年到2021年,他的12个Features被KVM FORUM纳入年度核心突破——对于全球参与KVM贡献的开发者来说,相当于占据了1/5的成果。

不过,李万鹏这一路并非一帆风顺。在2015年前,他也经历过一段长时间的蛰伏期。回忆起那几年参与开源的成长历程,他用的词最多的是:“虐心”

2010年,还在读大二的李万鹏就开始钟情于Linux嵌入式开发。“我那会儿满脑子想着:如果有一天,这个庞大的系统中能有我的Patch该有多好”。于是,潜水专业论坛、检索学习文献、分析内核代码、撰写技术博客,成了他学习之余最大的乐趣。大学期间,李万鹏在自己的CSDN专家博客上发表了很多篇帖子来分析Linux内核中的技术。2012年,他的一篇帖子成功吸引了当时身在 IBM 中国区团队的黑建龙(现腾讯云架构师)的关注,随后,黑建龙将李万鹏内推到了 IBM LTC(Linux Technology Center)部门。

顺理成章的,2012年,大四毕业的李万鹏拿到了那个时候令人艳羡的一份offer,并随即加入了IBM LTC团队。6月9日,他小试牛刀地提交了人生中的第一个Patch——修复Linux内核中的注释错误。

f35bdb21d4778a775a58a92d40a28c44.png

图注:第一个Patch,修复内核中的注释错误

但不久,小插曲发生了。“在提交的Patch没那么完善、价值没那么大的时候,一些大佬们的脾气就会特别不好”,李万鹏回忆说。

在这种压力下,他给自己“闭关”了大半年时间。那个时候他内心非常煎熬。煎熬的原因不是要遭受大佬们艰涩的“质疑”,而是对参与开源这件事的不甘与挣扎。

这种处境直到2013年春节才有所变化。

那年春节,李万鹏没有回家,几个日夜都泡在公司大楼里。借着新项目中的一个技术点,李万鹏终于想通了困扰自己和团队许久的问题——如何解决“内存压缩过滤掉全0页面”。当天他就把这个Feature提交到了社区,社区接收了。想起那个场景,他非常兴奋,“当时我们办公室里还有一个老外和一位很资深的同事,一开始他们还不相信社区能接收”。

这个事情在李万鹏的印象里很深刻。而后的两年时间里,他一直寻找着自己开源生涯中的晋级与突破,其中也包括2014年加入Intel OTC(Open Source Technology Center)虚拟化团队。

“可以完完全全把虚拟化开源当作一份工作来做”,是他选择背后的重要原因。有了更长的专注时间,李万鹏得以逐渐对计算虚拟化当时的痛点问题如虚拟化开销和性能,有更多的理解、尝试。读论文、参加业界会议更是他规划里的常态。此外,他还提交了更多的Feature给社区,算是对自我成长的一种验证。

2014年,是他“开源之旅”中一个非常重要的转折点。

当年,李万鹏给Linux社区提交了第一个比较大的特性——优化了虚拟机上下文切换,从而实现更少的内存占用和更好的性能。这项特性最终并入了内核,并在2015年的KVM Forum上被评为"年度核心突破”之一

看到曙光后,他又陆续对性能损耗中常见的一些问题如TLB(translation lookaside buffer)、IPI(Inter-Processor Interrupt)、Timer进行了特性的优化及贡献。正是基于一系列的投入,接下来的每一年,李万鹏都是KVM “年度核心突破”榜里的“常客”。

“随着越来越多的Patch进入KVM,我慢慢成了KVM的核心开发人员之一,在社区也开始高度活跃起来,我开始更频繁参与社区中的讨论,Review其他人提交的Patch。渐渐的,Maintainer也开始询问我的意见,我的名字和邮箱也慢慢被加到‘Reviewed-by’和‘Acked-by’里”。

对比之前“虐心”的那几年,这一切来得格外不易却又刻骨铭心。

192c88b3824c29939329f89d30849463.png

持续成长,我相信天道酬勤

Linux项目迄今已成立30周年,KVM于2006年10月19日首次发布了Linux内核邮件列表。与一些时髦新兴技术不同,虚拟化技术已发展得相对成熟。目前,全球许多云厂商的底层都基于的KVM内核,KVM社区因此非常活跃。同时,开源也为KVM的发展带来了更大的推动力。

李万鹏认为,“虚拟化技术变迁几乎都是在开源社区中孵化的”,开源的创新也在不断解决KVM虚拟化技术中浮现的问题。

以腾讯为例,腾讯云2013年已全面采用了开源社区支持的KVM技术,2014年起,腾讯云云服务器CVM全部基于KVM技术生产,同年,腾讯云就开始向KVM社区贡献成果。随后2015年起,腾讯云虚拟化技术团队通过解决大规格虚拟机热迁移、降低虚拟化开销并提升虚拟机性能等问题,推出了自适应热迁移优等多套结合腾讯云海量业务应用的创新性解决方案。2016年,腾讯云开始组建开源团队专门负责向社区贡献成果并解决社区反馈的问题,不断提升社区版本的性能和稳定性。

2016年,彼时的李万鹏加入了腾讯。

初期,KPI压力大,事务多,他和团队成员除了工作之外,还需要投入大量的业余时间来参与开源社区的贡献。在团队的共同努力,领导的支持下,腾讯云于2017年第一次登上了KVM全球企业开源贡献榜,这也是榜单上首次出现中国云服务商身影。

到了2018年10月25日,一个更大的舞台让李万鹏感受到了这一切付出背后应得的成就和荣耀。

当天的KVM FORUM(KVM虚拟化社区最重要和最权威的国际大会)上,李万鹏第一次受邀作为讲师,面向现场及线上的几千名开发者,进行了题为“Torwards a More Scalable KVM Hypervisor”的演讲,代表腾讯云分享参与虚拟化开源的经验,并和KVM的Maintainer一起同台对全球虚拟化开发者的提问进行讨论及解答。

ae2030d5e18dfb9dfa858addea712eff.png

图注:在2018年的KVM FORUM上(英国爱丁堡),李万鹏受邀上台进行交流和分享

同样是这一年,腾讯启动“自研业务上云”(将QQ、微信、游戏等全部切换到腾讯云)战略和行动。在业务迁移过程中,“性能损耗”,即虚拟机相对于同规格物理机的性能差距,是很多团队最为关注的问题之一。腾讯云虚拟化团队针对该问题推出了PV TLB shootdown、PV IPI方案,对TLB刷新以及IPI进行了优化,从而提升大规格配置虚拟机的性能,降低虚拟化层损耗,使得部分应用场景性能提升达到了130%~150%。

在这些实战中,李万鹏最大的感受是相互传帮带的工程师文化。因为小组成员擅长点不同(有的擅长开发性能监测单元的虚拟化特性,有的擅长内存管理子系统、内存虚拟化、cgroup子系统等各个内核技术开发),技术氛围多样化……所以,大家平时经常会组织组内探讨、相互协助,“一旦新技术问题产生了,大家是非常愿意花时间深入讨论的。长期以往,我们每个人也在不断拓展自我便捷,将时间和精力分配在更高价值的技术突破上”。

正是在这种成长节奏下,2019年成为了李万鹏开源历程中贡献数最多的一年。

这一年,他代表腾讯云虚拟化团队,继续向社区重点推送了Yield IPI、C-state MSRs、Exitless Timers方案,对业务场景中出现频次最多、性能影响最大的IPI和Timer两大问题做了进一步优化。在这之前, 很多云厂商都相继发现频繁使用Timer带来的很严重的性能下降问题,但社区一直没有很好的解决方案。新Timer方案推出后,业务场景测试下的结果显示,KVM内核性能提升了超过20%。

基于这一系列推送,李万鹏的Feature贡献数占据了2019 KVM“年度核心突破”榜单中的三个席位,腾讯云在KVM领域的影响力也越来越大。在当年的KVM Forum上,“腾讯云还向大家介绍了基于虚拟机克隆的轻量级虚拟化技术, 这项技术能在35ms内启动一台虚拟机,创造了业界目前能最快启动一台虚拟机的记录。”李万鹏自豪地说。

93749882a3ff5e48b3680ab4bc2b2c9f.png

图注:同样是2019年,李万鹏成为了Linux内核KVM子系统Reviewer

2020年至今,他所在的腾讯云虚拟化开源团队又陆续提出了快速处理框架提升IPI 和 Timer 的处理性能;自主设计了完全支持 CPU 并行化的 vMMU 方案,克服KVM 原有设计中 CPU 执行被迫串行化带来的性能损失,实现虚拟机内存管理机制的架构升级;以及开发了全新的文件系统 Dmemfs (Direct Memory File System),给降低系统开销提供了一种新的思路。

截止今日,腾讯云已连续五年登上KVM开源贡献榜,累计贡献超过了200个Patch,20多个Feature。

对于KVM技术研究,李万鹏感悟更多的是,要带着持续饥渴的心态去学习。他说,KVM的开发一定要有扎实的Linux内核开发基础,精益求精学习软硬件知识的态度,特别是在处理虚拟化系统安全与性能的挑战上,需要尽可能拥有全面的技术视角。

c5546157933a6867ac0d702e76adfc77.png

兴趣引发“革命”

伴随KVM技术15年的演进,指令集虚拟化、MMU虚拟化、中断虚拟化中的技术难点被不断突破,在半虚拟化维度,virtio技术栈也从单一到标准,从标准发展为通用;同时,目前开源社区也对轻量级虚拟化方向有更多的探索和研究。不过,开源虚拟化的未来还有很长的发展路。

在李万鹏看来,开源虚拟化技术的未来可能存在着三个方向,第一是对可信计算技术栈的全面支持,第二是对新型offloading硬件包括对Nvidia DPU/GPU、Intel IPU/NVDIMM的技术栈重整;最后,虚拟化各个应用场景的性能优化(特别是对虚拟机调试与性能监控的特性开发)也是长期乃至永恒的技术话题。

这些不同技术维度的演进和未来的探索空间,也侧面反映了长期在内核开源社区贡献是一件需要在学习、心态上都与时俱进的事情

“Linux或者KVM开源社区中,大部分爱好者一开始缺乏一定的技术能力,他们在早期贡献上需要攀爬陡峭的技术学习曲线”。李万鹏见证过很多这样的案例,回想当年自己同样经历过的那些过往,他也感慨道,“这一周期会相对较长,甚至经常会收获一些负反馈。但只有正反馈次数的积累才能决定你在开源社区中技术生态位的高低。”

此外,开源参与者的技术能力和心理能力,是决定其能否在内核社区持续成长的两个关键点。这意味着要想在社区内形成影响力,基本绕不开长时间的学习沉淀,严格工程师文化的考验以及开源社区文化的过滤。这些经历让很多参与过开源的人都深有体会——包括在2014、2015年前,李万鹏也曾走过这一阶段。

不过,他从来没把这些当作负担,即使是前半段被他称作“虐心”的经历,在采访中他更多也以平静的心态去陈述。但言语中,掩盖不住的是他内心的那股狂热,就像从懵懂少年到三十而立的这一路上,追求内核世界的好奇心、好胜心从未改变一样。

5c412ab76d04179256ecde022f6e4a34.png

图注:李万鹏参与 KVM FORUM 2019 大会期间,正赶上当地举办的一场“万圣节”Party

回望这9年在内核世界攀登的过程,李万鹏给自己总结了12字真经——“热爱技术、学会欣赏、追求卓越”。

也许他的意识里,始终被“兴趣引发革命,一切都是为了好玩儿”这句话影响着。这句话来自他热爱的偶像——Linux 之父 Linus Torvalds 的自我成长总结。

Linus 开创了 Linux 系统并推动了开源运动的成功,李万鹏也希望自己能在 Linux 的世界里,种下一颗自己的种子。

相关阅读 | RelatedReading  

a2f37525dfcd206873cbfcd9ac51e9ee.png

今年的 COSCon 中国开源年会,让我们聊点不一样的

1eaa9290d442103997cffdef29a08093.png

志愿者招募|黑客松邀您共同助力“数字环保”

6951970e31dc2e6ccd0705e38b43bb65.png

【招募开始】2021上海创客嘉年华-创客讲堂“演讲者”招募通道正式开启啦!

开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。

2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。

2832c43f81cef3cd5dd735c38339c59f.gif

欢迎大家点击阅读原文查看原文

这篇关于我的9年开源之路:395 Patch、20+Feature,背后只有努力与热爱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844988

相关文章

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param