【编者按】吴峰光,Linux 内核守护者,学生时代被同学戏称为“老神仙”,两耳不闻窗外事,一心只搞 Linux。吴峰光的 Linux 内核之路,是天赋、兴趣、耐心、坚持的综合,这从一个补丁前后迭代了 16 个版本后还进行了重写和简化便可一窥。本期《开源英雄》,让我们一起走进吴峰光的技术人生。

采访 | 刘韧、李欣欣

作者 | 李欣欣 责编 | 唐小引

出品 | 《新程序员》编辑部

2011 年 4 月 4 日,旧金山,Linux 存储与文件系统、内存管理研讨会(LSF/MM)上,大家正在讨论吴峰光和 Jan Kara 的代码哪个进入内核更合理。此时,远在上海的吴峰光很焦急,像是在等待一场命运对他的判决……结果,捷克人 Jan Kara 获得了多数人的支持。这一集体决策的基调,怕是很难翻转。“我当时真的很失落。”吴峰光说。

Jan Kara 的补丁更合 Andrew Morton(Linux 内核开发者群领导者之一,被称为 Linux 内核守护人)的胃口,是因为多数人认为其方案更简单,一目了然。而吴峰光在方案中深究内核脏页平衡(balance_dirty_pages)偶发的长时间阻塞问题,他们认为是多此一举,他们觉得用户根本无法感知这个内核内部的细微差别,可忽略不计。

时间倒回到 2008 年,31 岁的吴峰光在 Intel 着手优化回写算法。Jan Kara 是 ext3 文件系统的维护者,在开始的头两年,他和吴峰光互相审核回写补丁。2011 年 2 月,在吴峰光发的第六个版本遇到困难,几近搁浅,突然,Jan Kara“乘虚而入”,他简化了目标,提出了更简单的方案,并独立更新了两个版本。

半路杀出程咬金,一个竞争者出现了。

竞争一度很激烈,两人争分夺秒……吴峰光一方面很自信,另一方面又感觉到困难重重:“我认为这个东西本质上是‘控制算法’的问题。其实我是控制专业出身,更有优势。”然而,“真的很难,为了兼顾多种指标,我选择了高难度的算法设计,因而屡屡遭遇技术难题,进展缓慢,甚至需要重构算法,两次推倒重来。”

Peter Zijlstra 是吴峰光的代码复审人,作为 Linux 的四个重要子系统模块的维护者,他以局外人的身份试图理解吴峰光的代码,他先找了本控制理论的书看,看完书后能看懂吴峰光的算法,但依然难以理解动态行为。“我的确贴了很多动态响应曲线图,那是很不好琢磨的一些事情。”吴峰光说。

吴峰光和竞争者 Jan Kara 两种方案相持不下……就在吴峰光即将放弃,打算按大家的意愿把他一些好的东西嫁接到 Jan 的方案之上时 ,他意识到自己方案虽然复杂,但经过大量测试铺垫,趋于成熟;而 Jan 的方案是“未经考验”的简单,很难改进为支持理想中的其它目标(比如 Low Latency)。吴峰光决定背水一战。但是,大家似乎并未觉得他的方案有“不可比拟的优势”,吴峰光又一次陷入了困境。

为了加速推进,Linux 社区决定召开会议,现场评议。结果我们在文章开头都知道了。吴峰光很不甘心,他反复琢磨,想到在一个重要的场景下,竞争者的代码束手无策,他的代码应付自如。第二天,吴峰光给几位核心维护者发邮件发邮件,图文并茂,一个星期内,吴峰光连续发了 20 多封邮件深入讨论,为了让大家理解其方案的内在原理中无法拒绝的收益,他用了很多数据和动态图。几天之后,吴峰光收到 Jan Kara 的邮件,他承认吴峰光的代码处理方式有其优越之处。此后,Jan Kara 偃旗息鼓,吴峰光继续完善代码。

2011 年 10 月,布拉格,Kernel Summit 会议上,大家再次讨论吴峰光的代码方案。此时,他的代码已经更新到第 12 个版本。直到 2011 年 11 月 6 日,吴峰光的 IO-less writeback 补丁集最终被 Linus Torvalds(以下简称Linus)合入了内核主线。这不是吴峰光的代码第一次合进 Linux 内核,也不是吴峰光经历的第一次“好事多磨”。

吴峰光和 Linux 之父Linus Torvalds

时间再倒回 2005 年,合肥,中国科学技术大学(以下简称中科大),28 岁的吴峰光正在读博士二年级。每隔几周,他就会更新一个版本到 Linux 内核社区,起因是他在 863 项目里搭建高性能流媒体服务器时,遇到并发能力不足的问题,经过抽丝剥茧的排查后,发现其根本原因是内核预读算法没有按预期检测出视频流和音频流两者交织的顺序读。吴峰光随即动手对预读算法进行优化,接着,他顺手把补丁提交给 Linux 社区,其深层的动机源自于他想让世界上更多的人享受到改进,那样,“技术”就产生了实用的价值。

吴峰光在 Linux 社区连续更新了 5 个版本,无人回应。他的心一直悬着,他认为这个问题必须有人解决。直到 2005 年 10 月 10 日,吴峰光收到一封抄送给他的内部邮件,是技术骨干 Ingo Molnar 对 Linux 内核“看门人”Andrew Morton 说:“这个补丁还不错,你是不是看下?”Andrew Morton 回:“是吧,其实我也注意到。只是我最近没时间,在忙……”然后,Andrew Morton@另外两个人问:“是否可以帮看下?”

读完邮件,吴峰光感觉有戏!他心里一直悬着的石头落地了,更有干劲了。“这事我肯定能给它干到 100 分!”“能通过社区重重考验的才是靠谱的研究成果。是否进入内核是 0 和 1 的价值差别。所以一定要进内核。”

接着,吴峰光收到来自世界各地、各种背景、有不同专业经验的技术高手的反馈。有着深不可测耐心的吴峰光一遍又一遍地修改版本,哪怕一次又一次推翻重写也毫无怨言。每更新一个版本,吴峰光都需要不断做实验测试、分析论证、总结复盘,再发图文到 Linux 社区,供社区成员们公开讨论。“我对任何意见都来者不拒,你们说改什么我就改什么,我把它改进到你们没话可说为止。”“事情不怕难,就怕认真。既然做了这件事,就把相关问题一次性彻底解决掉,之后就不用有人再为此费力了。”吴峰光继续改进,提交了第 16 个版本。在通过了社区的几个审核流程后,他的代码眼看就要进入 Linux 核心,只差最后一步,等待 Andrew Morton 的最后提交操作。

几个星期后,吴峰光意外收到 Andrew Morton 的邮件:“我受不了了,你的补丁越来越复杂了,我不能把它合进 Linux 内核里。”这对吴峰光无疑是个晴天霹雳。有着深不可测耐心的吴峰光又开始反思,又一次重写和简化了代码,直到 Andrew 愉快接受。

2007 年 7 月 19 日,吴峰光打开电脑,整个屏幕被 Andrew Morton 发出的一连串邮件占满,每一个邮件代表一个补丁。接着,Andrew Morton 把补丁集发给 Linus,然后从 -mm tree 里移除消息。至此,提升 IO 性能的文件预读算法代码被 Linux 官方正式接纳。

这一天,对吴峰光来说意义重大,历经一波三折,前后写了 16 个版本,到此时,功德圆满。但他没有与任何人分享,也没有庆祝,吴峰光独自怀揣着这份欢喜,如平日一样。

自此之后,吴峰光一发不可收拾,在 Linux 内核开发的路上披荆斩棘,完成了 readahead、writeback、hwpoison、0day/LKP、 NVDIMM 等 Linux 项目,横穿了他十四年从博士到英特尔的学习和职业生涯。

学习上开窍

刚上小学的吴峰光,身体不好、学习差。到了三年级,老师有意把吴峰光调到跟班上学习最好的学生坐同桌,帮助他的学习。他像突然开了窍,从此,无论学什么,都能轻松拿第一名。

孩提时代的吴峰光

1977 年 11 月 7 日,吴峰光出生在浙江金华市浦江县的一个小山村。父母务农,每天凌晨 3 点,天还黑着,他们起床开始一天的劳作,挖沙、挖土方、种菜、卖菜……什么脏活累活都做。日复一日,早出晚归。吴峰光的父亲总是卯足了劲,一个人干几个人的活儿。他经常说一句话:“有力气不花,过期作废。”到了冬天,天寒地冻,吴峰光的父母经常在雪地里扒菜,双手被冻,肿得像馒头一样,南方的田间湿气很重,经常在土里劳作的双手会长年开裂,溃烂……到了晚上,劳累了一天的父母回到家里,煤油灯点起来,豆大点的火苗在屋里忽明忽暗地跳跃,吴峰光经常看到他们坐在椅子就已经睡着了……

学习上,父母未曾管教吴峰光,只是常把“考不上大学,就下地干活”挂在嘴边。吴峰光心里明白自己要好好学习,要争气。父亲是个严肃的人,不怒自威,虽从没打过他,但发脾气时气势磅礴,吴峰光很害怕,从来不敢忤逆他。好在吴峰光从小性格安静,能坐得住学习,倒是让父母很省心。

1984 年,7 岁的吴峰光在本村的大溪中心小学上一年级,他长相很憨,胖嘟嘟的。“我那时身体不好,经常流鼻涕,学习也成绩不好。”同学们叫他“蝌蚪”,在浦江话里的意思就是说一个人很“憨傻”。直到吴峰光上了三年级,学习上发生了转机。

小吴峰光喜欢在自家屋后的水渠抓小鱼、小虾 ,跑到大水渠和池塘洗澡。每年暑假,一家人走很远的山路去外婆家,每次快走到村口时,他远远看见两棵像巨大伞盖一样的老樟树矗立在路口,像是站岗的哨兵,他心里便十足地开心,这意味着马上要见到外婆了。

小山村背靠茶山,每次到了采茶的季节,村里人星星点点分散在茶山各处,互相遥望,有人扯着嗓子唱了一句山歌,对面的采茶人来和应,这样的劳动场景让小吴峰光感受到集体劳动欢乐的气氛。夏天,山里的各种水果也熟了,西瓜、桃子、梨……一茬接一茬能吃整个暑假。吴峰光欢乐又轻松的小学时光很快就过去了。

1989年,吴峰光高小毕业升入中学

1989 年,吴峰光被浦江第二中学录取。小学三年级时的好状态持续了吴峰光的整个中学阶段。他心无旁骛地投入学习,继续轻松拿第一名。浑身上下都充满活力,意气风发,他总是跑着去上学,放学后跑着回家,超过一个又一个同学。“我很喜欢这种感觉。”

中学的课堂上,跟班的老师们有时间与学生个人互动,这让吴峰光感觉很亲近,遇到对他好又有教学魅力的老师,吴峰光的那门课的成绩自然就好。家里条件有限,课余时间,吴峰光喜欢去邻居家看书,连环画、学习类期刊。到了初中,则看起了金庸、梁羽生的武侠小说。

一本书看一周,掌握了 C 语言

高二暑假,16 岁的吴峰光人生中第一次出远门,他被老师选中去杭州参加物理竞赛的培训。在杭州的一家书店里,他翻到一本谭浩强的《C 语言程序设计》,买回来后看了一周,便掌握了 C 语言要点。整个暑假,他的注意力被计算机吸引,物理竞赛不了了之。

1992 年,中考后,吴峰光被当地最好的浦江中学录取。在这所全县掐尖录取学生的学校里,吴峰光很快感受到了压力,原本在初中毫不费力稳居第一的他现在却在班上是中游位置。他只有在课后再加把劲儿学习。半年后,吴峰光重回第一名,之后一直霸榜,成绩有时甚至远超第二名。

吴峰光的中考物理成绩是 100 分,高中物理老师看好他,有意培养,选他当物理课代表,派他去杭州上物理竞赛培训班……直到他的兴趣在杭州悄然发生了转向。暑假回家后,吴峰光把主要时间和精力都花在自学计算机上,无暇顾及正课,原本稳居第一名的成绩开始变得飘忽不定。

高二,学校有了机房。吴峰光第一次接触苹果 II 电脑,学习简单编程。计算机老师为了统计学生成绩编写了一个 BASIC 程序,在机器里运行半天的时间才能统计出成绩排名结果。这颠覆了吴峰光的认知——电脑这么快,为什么还需要这么长时间?

他开始着手优化老师的算法,跳过老师先排序的方法,直接统计每个分数出现的次数,再做累加,很快得出学生成绩降序排名结果。从那以后,计算机老师给“很喜欢的学生”吴峰光配了把机房钥匙。

到了高三,吴峰光的身体又不行了,他日常有气无力,精神涣散。他一边吃药一边学习,勉强撑到高考。高考吴峰光考了 600 多分,是县里前几名,可圈可点的是物理和化学两门成绩。“物理能考好,得益于我高二暑假时去杭州上物理竞赛培训班,老师们的赛题讲解打通了我学习物理的任督二脉,之后哪怕遇到再难的题,我都能轻松解答。”“化学老师是我的班主任,每次上他的课我都战战兢兢,他一进教室就在黑板上写一道题,然后随机叫三个学生上台解题。这招真的很厉害!我们不得不做好课前预习。”

中科大的招生老师找到吴峰光,问他:“愿不愿来中科大?”吴峰光就在志愿表上填了中科大。随后,他被录取到第二志愿“自动控制专业”,与心仪的第一志愿“计算机专业”失之交臂。

自学 Linux

1999 年,合肥,中科大,男生宿舍楼,606 号寝室。22 岁的吴峰光默默站在他的同学弓岱伟的身后,看着弓岱伟在笔记本上噼里啪啦地敲击着键盘,娴熟地操作 Linux 控制台。他边心生羡慕,边像海绵一样快速学习吸收。“我后来觉得这是最理想的学习方式,有个师傅带我飞奔。”

1995 年,18 岁吴峰光第一次坐火车,从老家到合肥的中科大,这是他人生中第二次出远门。一路上的奔波劳累,导致旧疾复发,吴峰光在医院住了几个月,第一学期勉强读完,为了调理巩固身体,他又休学了一年。到了第二个学期,吴峰光被顺延至下一届的 96 级,继续学业。

中科大每年招生很少,本科 5 年制的培养周期比其他大学要长一年,吴峰光和同学们的学习更加扎实。吴峰光说:“从专业方面,我所在的自动化学科分为两大类:一类是计算机知识,五花八门,像 C 语言、数据库、Unix 操作系统等;另一类是各种理论知识,像数学、物理等,理科是科大的优势学科,课程设置比其他学校更难。”

本科时期某个大雪天,吴峰光和同学梁家恩(云知声创始人)于中科大校园内合影

进入地处偏僻但高手如云的中科大后,吴峰光一头扎进学习里,两耳不闻窗外事。一学期后,吴峰光的成绩从入学时班里的中游水平上升到第一名的位置。他被同学们戏称为“老神仙”,形容他不食人间烟火、心中自有丘壑的超脱个性。计算机依然是吴峰光最着迷的东西。他和室友们合伙买了台计算机,放在宿舍里四个人轮流使用。

1999 年,大三,吴峰光帮老乡安装 Linux,第一次接触 Linux 后,他意犹未尽。吴峰光的同学弓岱伟已经是学习了多年 Linux 的高手,恰巧住在他隔壁宿舍。近水楼台,吴峰光常常到弓岱伟的宿舍,静静坐在他的身后看着他玩儿 Linux。

吴峰光在啃过大部头Borland C++之后更钟情于 Linux。他立志在 GNU/Linux 里深耕。他意识到 Linux 的世界宽广又深邃,经得起时间的考验,值得深潜;GNU/Linux 开放源代码,可以深入学习;一应俱全的命令行工具好像乐高模块,组合灵活,一旦掌握了做事的效率翻飞,很多原本想想都难的事情,现在也唾手可得。“学了之后终身受用。”

2001 年,吴峰光本科毕业随即开启硕博之路

2001 年,24 岁的吴峰光本科毕业。彼时,吴峰光的父亲希望家里能出一位博士,尽管家里的经济条件一直不宽裕,但全家人支持他继续学业。吴峰光遵从父命。同年,他考上了中科大“模式识别与智能系统”硕士研究生。硕士期间,吴峰光跟实验室老师一起做实验,深入了神经网络等课题。2004 年,吴峰光升入本校“控制理论与控制工程”专业读博士,终于实现了父亲的愿望。

中科大,瀚海星云 BBS 上,性格内向的吴峰光找到了社交杠杆,他活跃其中,发帖子,讨论技术,甚至当上了 Linux 版主。除了计算机系的同学,吴峰光认识了一大批背景多元的学习 Linux 的同学,生物系、物理系、数学系……吴峰光眼界大开,他了解到物理系和生物系用 Linux 是在做超算。作为自动化系学 Linux 的人,他感觉自己不再单枪匹马,有了共同学习的氛围感。“我们系里的网络有 IP 冲突,我发现服务器在实验室的一个角落里,风扇坏了还能运行,我写了一个 IP 冲突的解决程序,当时蛮有成就感的。”“我一直对服务器很有感情,也喜欢为别人提供服务,只要是跟服务器相关的问题,我都乐意研究搞定。”吴峰光的 Linux 水平悄无声息地突飞猛进。

后来,吴峰光和弓岱伟把他们的计算机用一根网线互连,一起尝试做网络服务,弓岱伟搭建 BBS,吴峰光做文件服务。“后来,我跟弓岱伟的关系非常好,他很活跃,无论是在计算机还是社交上都非常厉害,吃得开,不像我一直笨笨的。我那时很崇拜他。”吴峰光在寝室摸了三年的 Linux 控制台,后来,他顺理成章变成了实验室里的网络管理员,帮老师接管了机房。

博士期间,吴峰光所在的大实验室里的几位老师都是数学出身,吴峰光本计划跟老师们做理论方面的研究,博士论文的选题方向锁定在控制理论研究方向上。未曾想,实验室接了 863 项目,擅长 Linux 服务与编程的吴峰光自然成了此项目中的关键力量,他很难再分出时间和精力继续原定的理论研究。吴峰光索性把手头的 863 项目当成论文的新选题,开始转向计算机方向的研究——Linux 的 IO 优化。自此,吴峰光开始对预读算法进行优化,并向 Linux 社区提交。

吴峰光旧照

从 1995 年到 2008 年,吴峰光在中科大深造了十三年,分别在本科两届同学,硕士和博士同学,两个实验室里认识了很多同学,跟这么密集的高手打交道,像是在积累无形的财富。中科大里有人格魅力的人比比皆是,有的同学对《红楼梦》有透彻研究;有的同学能记住全套卡牌,推算出对方手里的牌面。有的同学平常吊儿郎当,考试前突击学习几天,总能过关斩将。“跟他们一起真是太有意思了,他们身上各有我羡慕的长处,令我心生敬佩,谁在哪方面强,我就去学习。”

Intel 暗下功夫“抢”人

2008 年,吴峰光博士毕业,正在找工作。网易丁磊先生发来工作邀约,这不是他们第一次有交集。彼时,互联网行业欣欣向荣。时间退回到 2004 年,吴峰光硕士毕业,网易到中科大招人,他前去笔试。做完了题出考场的时候,守在门口的丁磊问他:“你这题用了什么数据结构来解?”“如果我当时直接回答‘哈希算法’就好了,我回答的是‘哈希算法’的另一个代名词……结果面试失败。”当时,如果有人答上了丁磊的问题会被当场签约。四年后,吴峰光拒绝了丁磊先生。“我担心身体吃不消,扛不住互联网繁忙的工作节奏。”

此外,吴峰光还考虑过是否要留校,也被自己否了。一来他觉得在学校里闷头做研究离现实太远,实际价值转化太难;再加上中科大地处偏远,拿到好项目的机会有限。

Intel 开源技术中心邀请吴峰光加入公司,吴峰光欣然接受,任高级工程师。他愿意在众多机会中选择不在“风口浪尖”上的 Intel,更多是为了能专注地延续做自己喜欢的内核开发,持续地在世界范围内发挥技术价值。

时间倒回到 2006 年,Intel 上海的经理冯晓焰在 Linux 社区的邮件列表里看到吴峰光发的 patch 算法巧妙,加上对他的韧性也印象深刻,主动提出赞助吴峰光首次去加拿大参加 Linux Kernel Summit 会议的费用。后来,又专门为吴峰光申请了一个学校合作项目,为他提供了一台先进的 PC 机。“Intel 对我真的很好,在我还默默无闻的时候下功夫接触我。”两年之后,回头再看,吴峰光选择 Intel 似乎也顺理成章。他开始在广西的巴马远程为 Intel 工作。此后,每隔一段时间,吴峰光会从一个风景优美的地方搬到另一个空气清新的地方……他像侠客一样,浪迹天涯,工作之余,看世间繁华。

Intel 的技术氛围更开放,吴峰光在工作上的贡献可见度不仅局限于公司内部,还体现了更广阔的社会价值。在 Intel,吴峰光先是延续了在博士期间的项目,接着重写了 Linux 脏页面平衡回写算法,解决了困扰多年的写延迟和应用挂起问题,改善 CPU 利用率和写性能。之后又对 Linux 内存管理机制进行了一系列改进。

接着,吴峰光开始建设 0day/LKP 测试系统,为 Linux 社区提供即时测试和全自动 bisect 服务,其净化了内核研发流程,降低了新发布内核的编译与启动错误、性能回归等问题。在三年持续不断的高强度的改进中,0day/LKP 越来越受到 Linux 内核社区开发者们的喜爱。

构建面向未来的操作系统

2022 年,杭州。早晨 8 点,吴峰光从家里出发,走 40 多分钟,到达华为公司。9 点,是规定的上班时间。原本骑车 20 分钟到公司的吴峰光改为走路,是为了参加同事们举行的“健步走竞赛”,下班后,吴峰光再走回家,正好能完成每天刷一万步的任务。

华为公司的纪律性和强执行力是众人皆知的一面。刚到华为,在高校和外企呆了 20 多年的吴峰光颇不适应。“但领导为我创造出一个相匹配的工作环境。”华为有两条线,一条是商业驱动,另一条是技术驱动。“我的工作偏技术驱动这条线,做的是更长远的事情,而不是根据商业分析的结论去做一些短、平、快的事情。”

2019 年,华为宣布开源 openEuler,与业界伙伴共建操作系统新生态。中国已经累积了大量开源开发者,而华为在内核投入多年,能找到更多志同道合的人,完成一个真正根植中国、引领全球的 OS。吴峰光自觉技术和经验全面契合,内心有了冲动。于是,42 岁的吴峰光进入华为鲲鹏计算,加入 openEuler 操作系统团队。

华为与 Intel 的行事风格完全不同,如果说 Intel 的管理从上到下像一条线,华为的管理更像是一个立体的网。“在 Intel,如果你想做某件事,你的上级领导同意后,你就可以去做。”“在华为,你需要先写项目可行性报告,再去宣讲,说服各方领导,经过各种论证后,如果确定可行,再按流程正式立项。”“项目真正做起来时,你会变成了团队作战体系中间的某一个环节。比如,你可以专注做架构设计,会有项目经理负责推动项目、有专做编码的人来协同作战。”

OS 很考验综合竞争力。有冰山上看得见的功能特性,也有隐藏海面之下的基础设施,还有如汪洋大海的生态。在吴峰光的理念中,做 OS 的基础是搭建好一个生产软件包的流水线。拿红帽来比较,红帽的 OS 生产线在全球有 6000 台服务器,形成分布式开发、构建、测试的庞大体系,保障良好的质量和兼容性。“目前,生产线是我们的薄弱环节。如果能把生产线的基础设施做好,实现成体系的自动化运转,就像是铁打的营盘,你的 OS 质量就好,还能自主演进。”吴峰光说。

Linux Kernel 支持从服务器到嵌入式的广泛场景,但 Linux OS 长期陷于场景化 OS 烟囱林立的状态,造成生态割裂与内耗。而且新硬件、新软件、新场景还在继续增加中。“需将它们纳入一个统一 OS 体系!我们的 OS 生产线,要能面向千行百业的需求,量体裁衣,构建相应的 OS 制品。”“当中国有机会来主导 OS 构建,我们可以面向新时代的需求,兼顾‘多样’与‘统一’,创造一个繁荣共生的 OS 生态。”吴峰光这样说道。

芯片与 OS 是技术问题,更是生态系统的建设。众所周知,开源软件依靠社区用户在免费使用时顺便“测试”其质量,但主流开发者和用户目前只有 x86 系统,这就是 x86 系统的“生态红利”。如果说“软件”和“用户”是“鸡”和“蛋”的关系,“先有鸡还是先有蛋?”这个永久的哲学问题,也是吴峰光在思考“中国未来芯片与 OS 新生态破局”中的核心问题。

进入华为后,吴峰光发起了 Compass CI,这是个通用的开源软件测试平台,打开芯片生态的同时也服务于 OS 的测试。通过主动测试数以万计的开源软件,暴露这些软件在芯片和 OS 上的问题,在第一时间自动定位问题并报告的形式反馈给第三方软件开发者。方便第三方开发者能及时处理掉问题,提高软件质量,这就是达到双方共赢,撬动“软件+用户”生态飞轮的开始。

体力的确会影响到智力

2014 年夏天,北京怀柔,吴峰光租住在一个 90 平米的老房子里。住了一阵子,他总是隐约感觉房子里有一种说不出来的像是灰尘的气味儿,一进入房子就感觉心神不宁。起初,他没放在心上,直到后来,他的皮肤开始出现红斑点,甚至耳朵旁边长出肉刺一样的东西,精神也在内耗……他赶紧搬离了房子,但为时已晚。

此后,吴峰光的身心日渐损耗,他无法像以前身心安宁,总是魂不守舍。“我的身体是经历过高峰和低谷的。对于身体状态好与坏,我所能体会到的或许比常人要深刻。我在中学时身体很好,做什么都是跑着的。到了大学时,我身体时好时坏,最糟糕的时候很痛苦,躺着都解不了乏。”“但那时至少我的思维是清晰的,但吸入甲醛后,我不仅是体弱,圆通的状态没了,失去了很多高级的能力。”后来,吴峰光从艾灸中找到了治愈身心的方法。

吴峰光知道高峰状态的身体能带来多么大的价值,他更加珍惜身体。他认为保护身体要遵循身体的客观规律,其次把时间拉长,看总体的效率。“我之前也经常熬夜,后来有过反思:熬夜看似是在努力,其实是反方向的努力,《庄子·齐物论》里“朝三暮四”的故事是个很好的寓言,遵守客观规律是最好的努力,你睡眠质量好,工作的总体效率就提升了。”

问答

《新程序员》:你的经历很独特,在中国科学技术大学一直读到博士,大学时自学了计算并应用,以你的经历来看,国内的计算机在教育和应用方面存在脱节现象吗?

吴峰光:现在大学的计算机系有两套培养体系,一套是像我们当时在中科大的计算机系,更偏理论,系主任当时鼓励大家追求远大的目标,比如当“科学家”;另一套是软件学院,课程设置更接地气,偏实践为主,为以后的工作做准备。学校的课程设置的确可能滞后社会需求,好的方面是,现在大企业也在积极与高校展开合作,研究和教学都有覆盖。就我的成长经验,同学之间的互相学习与启发非常重要。拓展开去,有意识找一位能力强的高年级学长做助教,能发挥很好的影响力。

我有个小小心愿,能多开设一些像 Linux 这样的开源软件与开源社区课程。成功的开源软件社区都有一套在实践中培养新人并提高能力的文化氛围。给开源社区做贡献,起步不容易,也决不是简单的单向输出。虽然现在 GitHub 普及,但是真正触及开源实践的学生还是少数。很多人在参与开源后,能爆发出惊人的热情与能量。

《新程序员》:你认为当科学家和工程师是矛盾的吗?

吴峰光:做工程师还是当科学家,要看自己的兴趣和擅长,也要看社会需求。像当年我们自动控制系的同学毕业后基本都去从事计算机工作了。就我而言,这两者很难分开。我的博士论文就是一边做算法,一边做工程验证,它们是一个不断促进的循环。工作的时候,也用科学方法指导工程,比如做 writeback 用了控制理论,做构建用了图论。

《新程序员》:对于流行的“人人都可以学编程”的观点,你怎么看?

吴峰光:计算机作为一种工具和思维方式,每个人都应该学。作为一个职业,因人而异。就我的经验来看,目前真正优秀的计算机人才还是很少的。

《新程序员》:你对游戏的态度是什么?

吴峰光:游戏利用人性的弱点,玩游戏门槛低,奖赏高,人很容易上瘾。我个人无法体会到游戏的迷人之处,Linux 这种奖赏对我够强了。

《新程序员》:在周围同学们都很 high 地玩游戏时,如何才能超然置身于外?

吴峰光:须认识到游戏里的排名、收获、胜利,不是值得一较高下的目标。明了和找到自己更切实、有意义的目标,避开从众心理,建立心理优势和防火墙,早早确立真实价值导向。

《新程序员》:你学习一直很好,有什么心得吗?

吴峰光:心无旁骛——从小比较坐得住。学习动机强——这方面是来自家庭的言传身教。有高人指点——比如高中物理竞赛培训让我开了窍,大学时吴刚老师(中科大教授)一句“你去看一下《金刚经》吧”把我点醒。我学习是为了认识、认知。小时候认识世界,长大了认识自己。每个人的能力不同,取决于他的禀赋表现在哪个方面,以及经历感悟在哪方面开窍。像有些人社交能力很强,我在这方面就愚钝些。另外不要下意识地把“不聪明”当成一个不能解决的问题,思考力是可以训练的,方法论是可以习得的。虽然有点难,但是如果刻意追求,一定会有长进,如果认命,这一道门就此关上。有意识地不断自我丰富、改进、复盘、开拓、学习、思考,就会一辈子进步。

《新程序员》:你觉得数学和计算机之间是什么样的关系?

吴峰光:我可以谈谈学好数学对于我自己的计算机生涯带来的影响。我在学校的时候学过的数学和控制方面的各种各样的理论知识,在我后面的工作上都多少发挥了作用,像概率论与数理统计、随机过程、组合数学、控制理论、模式识别、最优化方法、数字逻辑电路等。我在架构设计中,会用到数学建模、物理建模的方法去定义概念、推导逻辑,实现一个自洽的系统。在项目技术沟通中,依靠扎实的理论功底,能更清晰地表述自己的设计思路。

《新程序员》:在你进入内核社区的时候,来自中国的开发者多吗?

吴峰光:寥寥无几,第一次在 Linux Kernel Summit 只碰见一个华人,他在澳大利亚。接触时发现他脑子转得快,说话利索,是个高手。到后来,遇到的国人就逐渐地多起来了。

《新程序员》:为什么内核社区里中国开发者会比较少?

吴峰光:国内的人接触的机会少,我也是玩计算机很长时间后才接触到内核社区。国外整个计算机产业、互联网都比我们早,开源运动也是他们最早发起。那时,我们的生存压力更大,有可能还要去外面找兼职,没有办法完全专注在开源社区上。

《新程序员》:从你 2006 年对 Linux 做出贡献至今已有 16 年,为什么在内核上做贡献的中国开发者数量和总开发者数量依然不匹配呢?

吴峰光:的确偏少,但已经有很大进步,比如 Linux 内核 5.10 中,代码贡献排名第一的就是华为。

国外的内核社区最早是一群爱好者不拿工资给 Linus 发补丁,后来随着 Linux 的商业成功,越来越多的全职工程师加入到社区中,成为社区贡献的主力。在国内,我们接触内核整体还是比国外晚很多,最早接触内核的大学生很快就步入工作,而当时国内招聘内核的职位数量还很有限,只有 Intel、富士通、Oracle 等少数几家在招。后来,随着国内互联网的兴起,大公司对内核底层掌控和优化的需求增加,招聘也就多了起来,很多人去了华为、阿里等公司。总体来说,内核的业界机会更多了,参与的人数也更多了;只是,每个时代有每个时代的浪潮,如今互联网、手机、 AI 等一浪接着一浪,选择更多了。

《新程序员》:我们要做自己的操作系统,对内核的人才需求大吗?

吴峰光:搞 OS、搞芯片、搞互联网基础设施都需要内核人才支撑。像麒麟、统信操作系统厂家都是上千人的招聘,OS 人才的缺口很大,其中包括了对内核人才的需求;还有芯片和互联网大厂,如华为、阿里巴巴、腾讯、字节跳动,需求都在增长。华为 2012 内核实验室除了做 Linux 内核,也在自研微内核。

《新程序员》:你认为国产的操作系统,目前是一个可为的赛道吗?

吴峰光:大有可为。当芯片被美国卡脖子,芯片的机会就来了;芯片的机会来了,OS 的机会就来了。正所谓“立根铸魂”,“根”是芯片,“魂”是操作系统。内核代码贡献量最多是硬件厂家。操作系统为硬件打软件生态。一个通用芯片能跑好各种软件,用户用得起来,硬件才能卖得好。像 x86 的生态能够繁荣,背后就有着 Intel 开源技术中心上千人的软件团队。

《新程序员》:以你的经验来看,国产的操作系统什么时候能够比肩世界?

吴峰光:从国内的服务器市场占有率看,几年内就能反超 CentOS。从技术角度,OS 是一个系统工程,先做到自主可控,然后自主演进。补短板、追求领先,这两件事情在并行的做,分不同领域、不同子系统,一步一步的进行,而且重心正在往后者倾斜。像 Compass CI,既是在补短板,也是在做一个世界领先的系统;又比如我们正在做的构建系统,也是奔着领先一代去设计的。