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 分)
修改第二章文法及錯別字,以及 2.4 EEVDF 章節,增修 2.4.2 之後章節。
由於 EEVDF 仍在開發中,並且持續改進原始論文或原先設計,需要持續追蹤 Patch Series 了解未來可能進行的變更及其理由
故亦將過程整理為 Patch Review 心得。作業 1 - 6 皆有如期完成,且有一定完成度 (9 分)
所有的作業都有對應的產出,並有不同於其他同學的延伸問題探討;如HW4 W3-Q2 等。
此外,我認為我記載於 Linux Kernel Internals 2024 Spring 的其他筆記,如 “從 start_kernel 到第一個任務” 等延伸討論,也可作為此項計分。期末專題可參考前述,具有一定完成度,所有的 TODO 皆有產出 (9 分)
對於每一項 TODO 皆有相對應內容,並且參與期末專題展出;此外,專題內容遠多於專題展示內容,並且在 TODO 之外的相關延伸,
譬如 kprobe 以及 qemu 等使用都有詳盡介紹,故我在此項也給予高分。與老師討論兩次,分別為 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