--- title: charliechiou (邱柏穎) categories: User ... # 簡介 * 國立成功大學 電腦及通訊工程研究所 * Github: [`charliechiou`](https://github.com/charliechiou) * HackMD: [`Charlie Chiou`](https://hackmd.io/@charliechiu) * LinkedIn: [Po-Ying Chiu ](https://www.linkedin.com/in/po-ying-chiu-399468352/) # 2025 Linux 核心設計 春季班 自我評量 ## 成果發表和貢獻 - 貢獻 - Linux 核心提出 PR : [`[PATCH] rbtree: Fix typo in header comment`](https://lore.kernel.org/lkml/20250415124928.14372-1-charlie910417@gmail.com/T/#u) - LKMPG : [`Align version check #301`](https://github.com/sysprog21/lkmpg/pull/301) - linux-kernel-scheduler-internals : `Refine sentence structure #277`,`Fix grammar mistakes and refine semantic consistency in CFS subsection #275` - lab0-c : [`Fix missing Change-Id #269`](https://github.com/sysprog21/lab0-c/pull/269),[`Ensure proper footer sorting of footer #256`](https://github.com/sysprog21/lab0-c/pull/256),[`Ensure all trailers remain after Change-Id #251`](https://github.com/sysprog21/lab0-c/pull/251),[`Correct order of Co-authored-by in commit footer #249`](https://github.com/sysprog21/lab0-c/pull/249) - kxo : [`Revise log format for consistency #6`](https://github.com/sysprog21/kxo/pull/6) - concurrent-programs : [`Free task memory after completion #23`](https://github.com/sysprog21/concurrent-programs/pull/23) - simrupt : [`Improve warning message for fast buffer overflow #5`](https://github.com/sysprog21/simrupt/pull/5) - Linux 核心相關公開演講 : - 源來適你社群分享 : Building a Custom Linux CPU Scheduler with sched_ext ![alt text](/sched_ext_poster.jpg) 評分 : 這部份我給自己 `9` 分,對於每份課程教材皆在閱讀過程中尋找可以貢獻的機會。且實際去嘗試授課老師所提到的貢獻 Linux 核心程式碼的流程,並提交自己所發現的 Patch。 在進行期末專題時也透過台灣開源社群 - **源來適你** 分享 sched-ext 的內容,替開源社群盡一份心力。 ## 作業/隨堂測驗 - [2025q1 Homework1(lab0)](/RYT_zF1ATF27y2WE0Ahmvw) - [2025q1 Homework2 (quiz1+2)](/yEbDE5OISIW7C74hgofpbw) - [2025q1 Homerwork3](/BOnJ9UUvT8mBhIZV9oPwDA) - [2025q1 Homework4 (quiz3+4)](/jR81StiUQ3y7aqB60rmD8A) - [2025q1 Homework5 (assessment)](/blg-5EKVQkqD3y3GrflteA) 評分 : 這部份我給自己 `6` 分。Homework 1 作業有達成老師要求來完成 lab0 中各項功能,並對於作業教材中 git-hook 的問題提出 PR 修正。而後續作業僅完成至程式碼理解,並未有完成作業的對應要求,但仍然對於自己發現的錯誤提出 PR 修正。整體而言有很大的進步空間,因此給自己 6 分,應在理解作業後有相對應的實驗觀察或修改。 ## 期末專題 - [Sched-ext 專案貢獻 - Pull Request](https://github.com/sched-ext/scx/pulls?q=is%3Apr+is%3Aclosed+author%3Acharliechiou) - [開發紀錄](https://hackmd.io/@cce-underdogs/scx_project/%2FZhzEtqp_RF-nDgvNXzVEBA) - [相關演講筆記](https://hackmd.io/pWe3g01DQ02PVCB8W3r40A) 這學期的期末專題目標為將 ML 引入 sched-ext 的排程器。 在 Machine Learning 部份,由於實驗室所學便是 ML ,因此在學習 Rust 下的機器學習框架 - Candle 相對快速,應用到自己專業並成功導入專題中。 Sched-ext 部份,由於這是過去相對沒接觸過的內容,我們積極的和來自 Meta, NVIDIA 的社群開發者互動並提出 Pull Requests,參與 office hour 的會議來得知第一手的資訊並討論。最後,我們也於台灣開源社群 - 源來適你分享專案並報名 COSCUP 在八月的演講且已被接受,將 Sched-ext 推廣給更多人知道,期望能夠壯大社群。 評分 : 這部份我給自己 `10` 分 ## 與授課教師的互動 - 2025/3/4 : 課堂互動 / [筆記紀錄](https://hackmd.io/K4C5ofeqQg6LC8OEbdVcwg) - 2025/6/24 : 課堂互動 / [筆記紀錄](https://hackmd.io/K4C5ofeqQg6LC8OEbdVcwg) - 一對一討論 - 2025/04/21 - 2025/04/25 - 2025/05/01 - 2025/05/05 - 2025/05/12 - 2025/05/27 - 2025/06/12 - 2025/06/17 - 2025/06/19 - 2025/06/25 - 2025/06/27 評分 : 這部份我給自己 `8` 分。課堂回答部份,老師第一次向我詢問了基本的浮點數運算問題,第二次老師向我詢問搶佔相關問題,兩次的課堂問題都以類似面試的方式來進行,也讓我意識到許多過去學過得基本知識皆囫圇吞棗,在問答結束後我也詳細的紀錄了老師所提的問題(可參考筆記紀錄)並反思類似的場合如何適宜的應對。一對一討論部份,我們這組的題目為 sched-ext 相關,我們積極的和老師預約討論並推進進度,可參考一對一討論的預約時間。 ## 所見所聞所感 課程名稱為 **Linux 核心設計 (Linux Kernel Internals)** 但實際上這學期所學到的遠超出 Linux 核心程式碼。前六週課程授課老師很少提到核心相關程式碼,反而是著重於資訊科技領域開發所需要重視的事情。從 Git 的 commit message 開始,讓我了解到要以何種嚴謹的心態面對程式碼的開發,而非單純的程式碼會動即可。 `路見不平 拿 Patch 來填`是老師常掛在口邊的話,而我這學期也實際的對許多專案提出 Pull Request,也還記得第一次所提出的 PR 把作業的 change id 用壞導致同學在 fb 社群詢問,這時我真正意識到了老師所說的 `你的程式碼是幾百幾萬人要用` 的意思,也對於後面所提出的 PR 更加嚴謹。而後續所提出的 PR ,和開源社群的其他人討論的過程中也了解到如何正確的與他人合作完成程式碼。 若要我所說,這學期所學到最重要的東西是**如何學習**。從老師所說的`切勿舉燭` 到 `閱讀第一手材料` ,過去只要程式碼會動便認為是正確的,從沒想過背後的機制或可能導致的問題。而這點又在大型語言模型遍地開花的現在格外重要,要小心的查證來源,並理解背後的機制。此外,老師上課所提的許多問題往往是過去並未仔細思考的,這便是囫圇吞棗的結果,只將知識死記而非實際應用或實驗去了解,如何用現有的工具去了解並分析程式碼的行為也是修課後才真正理解到的。 最後,期末專題有幸的被老師指派 sched-ext 的開發,並和大公司第一線的開發人員有所互動。第一重要的便是看到大家是如何線上視訊討論,並透過 GitHub 來開發。此外,在參與討論時也聽聞到來自 NVIDIA 的 Andrea Righi 提到他們所用的設備 NUMA Node 的節點數,是遠遠超出我所想像的,更讓我了解到大公司在程式碼開發上的複雜程度及所面對的問題,這都是期末專題帶給我難能可貴的見識。 評分 :這部份我給自己 `10` 分。 ## 自我評量 (1 ~ 10) * GEOMEAN = $\sqrt[5]{9+6+10+8+10} \approx 8.45$ * 方案 A : 8 + floor(0.3 * GEOMEAN) = 8 + floor(0.3 * 8.45) = 10 * 方案 B : 1 + floor(GEOMEAN) = 1 + floor(8.45) = 9