【編者按】吳峰光,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,既是在補短板,也是在做一個世界領先的系統;又比如我們正在做的構建系統,也是奔著領先一代去設計的。