龍蜥開發者說:不忘初心,方得始終 | 第 7 期
「龍蜥開發者說」第 7 期來了!開發者與開源社群相輔相成,相互成就,這些個人在龍蜥社群的使用心得、實踐總結和技術成長經歷都是寶貴的,我們希望在這裡讓更多人看見技術的力量。本期故事,我們邀請了龍蜥社群開發者李文成來分享「不忘初心,方得始終」。
開發者說系長期活動,對於積極投稿、多次分享的童鞋,我們還有神祕大禮鼓勵!誠邀開發者們分享真實體驗,以文會友、共同學習、一起進步。
本期故事主角:李文成,「 龍蜥社群 2021 年度突出貢獻獎」獲得者;龍蜥社群 Arm SIG 核心成員,負責龍蜥核心支援飛騰補丁的開發與維護, 對 Linux 核心和網路協議棧有較深入的研究。目前從事 Arm64 國產化 CPU 驅動的開發、核心補丁的維護,解決生態客戶反饋的軟體相關的 BUG。
初心啟蒙,堅定信仰
大學時,初次接觸電路基礎知識,我對硬體課程產生了極大興趣,一發不可收拾,因此,開啟了漫長又有趣的動手實踐歷程。我會時常運用類比電路和數位電路的基礎知識看電路圖和修理故障單板,作為老師及師兄的科研助手不斷歷練,書本上覆雜的原理在我眼中逐漸變得簡單。大四,我順利保研成為心儀導師的學生,有了更多機會接觸電路圖設計和程式開發工作。在學校幾年的理論結合實踐中,我的軟硬體基礎知識鍛鍊地十分紮實。自此,對 Linux 軟體開發滿懷熱血的我正式踏入了嵌入式的大門。
初入職場,我自然而然地選擇了嵌入式 Linux 驅動開發、網路通訊裝置開發等領域的工作。實際上,剛參加工作的那段時間並沒有得心應手,通過閱讀相關書籍我實現了快速的自我提升,如《Linux 裝置驅動程式》、《TCP/IP 詳解》等,
同時研究核心協議棧的實現,邊學習理論邊積累實踐,保證自身技術從不落後。工作中的我嘗試做過許多不同的方向,如從 Linux 核心驅動到使用者態 DPDK、智慧家居的嵌入式開發、核心路由器開發等等。無論是自我提升還是工作探索,我都堅定地圍繞著 Linux 軟體開發的初心,豐富的經歷也為我目前從事國產 CPU 行業做了許多鋪墊。
浪潮已起,乘風而上
隨著中國科技日新月異的發展,國產 CPU 如雨後春筍般出現,行業已呈朝陽之勢。響應浪潮的我幾年前加入飛騰,
負責網路卡驅動開發和維護、解決生態客戶反饋等各種難題。每每遇到客戶反饋的問題,我的心情總是既緊張又興奮,緊張的是像拆彈般時間短任務重,興奮的是自己積累的知識和經驗又一次在實踐中產生價值。比如虛擬機器需要千兆網口支援 30 條組播流、每條流雙向收發速率不低於 2Mb/s、24 小時每條流丟包率都低於 10e-6 等等問題場景,在軟體調優時候,經常會遇見測試到幾小時後突發丟包,又不得不從頭分析的案例,但最終得益於對 Linux 協議棧的熟悉,我每次都能從中發現一些線索進而順利解決問題。
給大家舉例一個讓我至今印象深刻的問題場景。客戶在使用飛騰 CPU 做網路產品的時候發現有萬分之一報文出錯,
而且報文裡面只有一部分內容出錯,出錯的內容和 Cache 大小有關。但是,從軟體上看 Cache 又都處於透明的狀態,當時問題比較棘手,但憑藉我此前對網路卡硬體工作原理的掌握、Linux 驅動的熟悉,以及對 CPU 體系結構的理解,還是從迷霧中找到了解決方案。每每如此,我對 Linux 開發的信心便增添一份篤定,走在這條路上的行囊也因此更加豐富。
(圖/交換機產品框圖)
(圖/錯誤報文示例)
遇見龍蜥,遇見懂得
身處 Linux 開發的圈子,大家往往會遇見各種各樣的開源社群,參與社群並積極貢獻技術力量。社群生活更是我職業生涯不可或缺的重要組成,直到 2021 年,我遇見了龍蜥作業系統開源社群(以下簡稱龍蜥社群)。彼時,飛騰已經加入龍蜥社群併成為了理事會成員,我作為飛騰代表參與共建 Arm SIG 組,成為主要維護者。在社群生活的日常,
除了慣例參加雙週的技術交流例會,與各個維護者代表輪流主持會議,同步交流工作進度,我還會藉助社群平臺面向大家做技術分享。通過參與社群工作,我不僅獲得了與志同道合小夥伴們時時交流的機會,而且還有效地鍛鍊了溝通表達能力(技術例會詳見 SIG)。
在龍蜥社群的日常中,我主要負責對飛騰 CPU Linux 核心補丁的開發和維護。記得印象較深的一次,在阿里雲的伺服器上對龍蜥作業系統進行 FIO 測試,少量機器在 48 小時內出現隨機當機現象。收到這個問題反饋時,感覺有點棘手。問題在於時間隨機不確定,經常測試好長時間才出現,快速復現成為解決問題的關鍵。經過多次反覆嘗試後,我發現跨路 FIO 在大的壓力測試下容易復現,此時會經常看見核心 watchdog 超時,分析發現跨路的時候出現中斷聚集了。於是我不斷閱讀和分析 gic 中斷處理的邏輯程式碼,發現跨路中斷分配邏輯存在問題,才導致了這個現象的出現。於是我們通過修改程式碼後測試,終於在較短時間沒有出現 watchdog 超時導致核心卡死了的問題。就在我們認為問題得到解決時,現實打了臉, 48 小時內還是當機了,而且這次當機現象沒有任何列印資訊,感覺比上次更棘手一點。
思來想去懷疑 CPU 跑飛了,所以只能接模擬器去除錯。事實證實的確如此。我們通過檢視 IO 和記憶體訪問的誤位元速率,發現了存在的問題。
最後通過調整韌體引數減少誤碼解決了問題,並把補丁提交到了龍蜥社群,至此,才有一種如釋重負的感覺。
至此,我們可以發現每次複雜的問題經常是由多種原因導致,需要較深的技術積累,從各個方面去分析才能解決,而這些技術積累正是源自不忘初心。
難能可貴的是,我在龍蜥社群接觸到了很多行業大佬,與大家的交流中,不斷擴大自身知識面。我就像海綿一樣汲汲吸取著新知識,時刻不忘記要進步。
值得一提,龍蜥大講堂直播,我基本上都準時收看。比如聽完《SIMD 指令集在 OpenJDK 中的現狀與未來》,迅速瞭解了 SIMD 在 OpenJDK 中如何進行優化、在哪些方面做了優化,以及將來使用 SVE 指令能帶來更好的效能提升等。每次聽完各位技術大佬的分享,感覺茅塞頓開,在最短的時間內吸取了很多先進的技術和思想。
很榮幸在龍蜥社群開展交流合作的過程中,
我獲得了龍蜥社群 2021 年度「突出貢獻獎」。這是我參與社群建設以來,首次收到來自社群的認可,當然也是自己辛苦付出得到的成果,這也更加堅定了我不斷進步、繼續為社群貢獻我力量的信心。
(圖/獲得龍蜥社群 2021 年度「突出貢獻獎」)
最後,期待未來飛騰 CPU 和龍蜥作業系統產品的適配,為社群做出更多貢獻。也期待社群聚起更多志同道合的朋友,一起為國家的基礎設施開源貢獻一份力量!
歡迎大家加入 Arm SIG 共建,SIG地址可移步龍蜥公眾號(OpenAnolis龍蜥)2022年6月1日相同推送檢視。
—— 完 ——
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2898633/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2020不忘初心,方得始終 | 掘金年度徵文
- 龍蜥開發者說:從入坑到入門 | 第 2 期
- 龍蜥開發者說:從零開始的創造,是動力也是挑戰 | 第5期
- 龍蜥開發者說:首次觸電,原來你是這樣的龍蜥社群? | 第 8 期
- 龍蜥開發者說:我眼裡的龍蜥社群:一個包容的大家庭 | 第 10 期
- 「龍蜥開發者說」徵稿啦!
- 資料治理那點事」系列之三:不忘初心方得始終,資料質量管理要穩住!
- 龍蜥開發者說:海納百川,有容乃大,我在龍蜥社群的升級之旅 | 第 11 期
- 龍蜥開發者說:為愛發電!當一個龍蜥社群打包 Contributor 是怎樣的體驗?| 第16期
- 龍蜥開發者說:給晶片以系統、給系統以社群 | 第 17 期晶片
- 龍蜥開發者說:歷時三週,記錄如何從 0 到 1 構建龍蜥衍生版 | 第 18 期
- 龍蜥開發者說:一人行快,眾人行遠!在龍蜥社群的日子,我想說這些 | 第 12 期
- 龍蜥開發者說:聊一聊我技術生涯的“三次迭代” | 第 3 期
- 龍蜥開發者說:6 年前開啟的開源“潘多拉盲盒”,如今都解了哪些未知數 | 第 15 期
- 龍蜥開發者說:眾人拾柴火焰高!聊一聊我在社群的所思所想 | 第 14期
- 【不忘初心】WindowsWindows
- 龍蜥開發者說:學無止境的 Linux ,以及我的第一個定製版本釋出之路 | 第4期Linux
- 龍蜥開發者說:開源是場馬拉松!來自廣州大學姚同學的開源成長記 | 第 13 期
- 半年總結-不忘初心
- 不忘初心,繼續前行
- 投票開始 | 和你一起見證龍蜥社群年度優秀開發者的誕生
- 隋廣義:鼎益豐持之以恆,方得始終
- 手把手教學直播:如何提交 PR 成為龍蜥社群貢獻者? | 第 23 期
- TapTap 開發者沙龍將於7月27日開啟,為期兩天APT
- 龍蜥開發者說來了,來看看社群一週動態還有什麼? | 3.07-3.11
- 2021 OceanBase 開源半年度報告 | 不忘初心,感恩同行
- 不忘初心,砥礪前行——記錄於2021
- 以終為始:如何讓你的開發符合預期
- InfoQ專訪龍蜥社群陳緒:從CentOS 停服說起,龍蜥作業系統的開源觀CentOS作業系統
- 龍蜥社群&龍蜥開發者獲CSDN2021年度技術影響力「年度開源專案」獎和「年度社群之星」
- AppLovin收購Machine Zone:不忘初心,共創輝煌!APPMac
- 崢嶸十載,AppLovin不忘初心築夢未來APP
- 從SDL到DevSecOps:始終貫穿開發生命週期的安全dev
- 今天 2 點:關於龍蜥社群雲原生 SIG 及安全容器 runD 介紹 | 第 24 期
- 《葉問》第7期
- 開發者日刊 第164期 2019年8月12日
- 科技愛好者週刊(第 159 期):遊戲開發者的年薪遊戲開發
- 相約龍蜥,開源一“夏”!2022程式設計之夏ASoC開始報名了程式設計