版本 08c44a3d6637fab6e0560f7d7d6fe2f2f52daa1c
Kuanch (李冠澄)
簡介
2024 Linux 核心實作 春季班 自我評量
相關共筆
Linux Kernel Internals 2024 Spring
本篇是課程中所有共筆的集合,包含作業、課程材料的理解以及課程材料延伸問題的探討。
期末專題
我的專題最重要的三個主題是
kprobe 和 tracepoint :
撰寫 tracepoint 的相關程式碼並不困難,但需要結合對排程器理解,撰寫 Kernel Module 與核心互動
加上再以 kprobe 復現功能,雖然僅有小小篇幅,但我認為足以作為專題的主題之一使用 remote GDB 追蹤 CPU Scheduler 的行為 :
技術上並沒有什麼門檻,但一步步分析、理解排程器的作動,以及其延伸問題,對我學習 Linux 核心有巨大幫助。撰寫《Demystifying the Linux CPU Scheduler》:
感謝老師讓我參與該書 EEVDF 部分的貢獻,這部分最令我收穫良多的是從無止盡的 Patches 中找出當前 Linux 核心中重要的討論和主題
並加上自己的理解,將其轉換為其他人能夠快速吸收、理解的知識
可惜力有未逮,遺憾十分的多,程式碼的開發比例太少
譬如對於 sched_ext 和 eBPF 的開發,看起來非常有趣又可以與排程器結合
以及 schbench 的分析和進一步的開發,尤其是發現它與 hachbench 在開發排程器時被大量開發者應用
若是能夠在碩一時修課,應該還能夠有時間變得更強
修課心得
我認為作業的設計是之所以本門課被稱為神課的因素之一,同樣的題目,允許不同人有不同的想法,並自主投入時間
特別有興趣的題目,也許可以花更多時間鑽研。雖然考驗同學的自主性,但一旦能夠上手,馬上就能快速進步
如我在作業四之後就大量投入排程器相關的議題,並將其整理在 hackmd 成冊
有些問題是靈光乍現、先前從未思考過,就可以將研究的過程和成果記錄下來
允許同學自主開發題目、分配時間,這樣的形勢十分有挑戰但也無疑收穫巨大
此外,老師準備了許多材料
當你有任何 Linux 核心相關的疑問,必然有先導教材
能夠快速讓你了解其前因後果,而歷屆學生可能也有共筆
如果你願意搭配 ChatGPT 等工具不斷追問、願意設計並投入實驗
你完全有可能將某一個問題研究的淋漓盡致,並使其成為有價值的成果
分項自我評量
參與 《Demystifying the Linux CPU Scheduler》 編撰 (9 分)
作業 1 - 6 皆有如期完成,且有一定完成度 (9 分)
期末專題可參考前述,具有一定完成度,所有的 TODO 皆有產出 (9 分)
與老師討論兩次,分別為 5 / 1 及 6 / 8 (7 分)
投入狀況以及心得 (7 分)
投入狀況我給自己 7 分。 原因是我在本門課前對於 C 以及 OS 知識十分缺乏導致常常耗費大量時間在基本問題上打轉,當然也不一定是壞事
只是難以消化大量有價值的課程教材,如 CS:APP 和 lkmpg 等,教材的閱讀進度較為低落此外,我在本門課程中較少有以程式開發為主的題目,許多成果似乎只是對我自己有幫助
但對其他同學可能不具有技術難度,導致雖然筆記很多,但就內容看來似乎有些灌水,並不是特別有價值的產出但我也紮紮實實的學到很多很多東西,如同在作業五閱讀〈因為自動飲料機而延畢的那一年〉所提及的
「完成比完美更重要」+「誠實面對自己」+「持之以恆」
我也會繼續堅持下去,感謝老師我僅有在 4 月發送郵件給指導老師 (3 分)
自我評量總分
採方案 B 計算分數為,1 + (9*9*9*7*7*3)^(1/6) = 7.89