版本 d3944e251ab4deeb9d39042d1d141bd9c7804946
Changes from d3944e251ab4deeb9d39042d1d141bd9c7804946 to current
---
title: JeffBla (林宸顗)
categories: User
...
# 簡介
* 國立成功大學 資訊工程學系 114 級 (2022 ~ 2025)
* GitHub: [`JeffBla`](https://github.com/JeffBla)
* HackMD: [`JeffBla`](https://hackmd.io/@JeffBla)
# 2025 Linux 核心設計 春季班 自我評量
## 成果發表和貢獻
### 成果發表和貢獻
* 《Demystifying the Linux CPU Scheduler》 第 9 頁,第 1.2.4 節,原句:「Program execution is different in kernel/user space, just like the memory management we have seen in earlier.」,“in” 使用上有誤,將其刪除。
* 教材
* [藉由 spinlock 的調整,改善多核處理器建立 TCP 連線效能](https://hackmd.io/fzLFYqT7RTeWVFMm61Oq2w)
* 為調整後的 inet_unhash 增加可以解決綁定處理器的 workqueue 例子,讓讀者能夠更懂「我們所能做的,僅是避免這種情況的發生,例如藉由外部的機制或者工具,對行程和處理器進行綁定,從而避免行程在多個處理器間來回」的意思。
* [從 CPU cache coherence 談 Linux spinlock 可擴展能力議題](https://hackmd.io/0WkZfkdtTfucKiV35wxRAA?view)
* 修正公式錯誤 - 連乘範圍修正
* [並行程式設計教材修訂](https://hackmd.io/@sysprog/H1dCuDxQR)
* 修正 arch_spin_lock
* 修正 arch_spin_lock
評分 : $7$ 分。
這學期第一次修習 Linux 核心設計,面對排山倒海的教材加上並行程式設計教材有許多難懂的程式碼與論述,我開始紀錄遇到的問題與並與同儕、老師討論,其教材的修訂內容也是我研讀時所遇到的問題,我試著解釋、重新推到,並站在教師的角度試著讓下一位讀者能更深刻的吸收,才有了這些修訂。
在之後的學習上,我會持續運用紀錄問題、探討並輸出的方法深刻學習並改善文本,期望透過這些知識能加強程式碼撰寫並貢獻專案。目前仍尚待累積,給予自己 $7$ 分。
## 作業/隨堂測驗
* lab0-c: [Github](https://github.com/JeffBla/lab0-c) / [HackMD](https://hackmd.io/@JeffBla/linux2025-homework1)
* ideas: [HackMD](https://hackmd.io/@JeffBla/linux2025-ideas)
* Homework2: [HackMD](https://hackmd.io/@JeffBla/linux2025-homework2)
* kxo: [HackMD](https://hackmd.io/@JeffBla/linux2025-homework3)
* Homework5 (assessment): [HackMD](https://hackmd.io/@JeffBla/linux2025-homework5)
評分 : $6$ 分。
作業有些尚未完成,在教材的學習與作業進度中權衡,儘管 kxo 的完成度不高,仍透過授課教師與同學的討論中學習到 kernel module 的撰寫、安裝與測試,後續因為利用 [virtme-ng](https://github.com/arighi/virtme-ng) 對 rbtree 進行實驗,了解到 rbtree 的測試 module - [test_rbtree](https://github.com/torvalds/linux/blob/master/lib/rbtree_test.c),幫助我解讀與修改該 module 程式碼。因此雖然有諸多遺漏但在學習上仍不遺餘力,給 $6$ 分。
## 期末專題
* Linux 核心專題: 同步處理機制 : [HackMD](https://hackmd.io/4KtzDEbuRRS55S8nm_48Eg?view)
評分 : $8$ 分。
對於並行程式好奇與興趣,加上總是不能深刻了解其中實作細節,我與老師討論針對 scalability 進行專題,透過 [Non-scalable locks are dangerous](https://people.csail.mit.edu/nickolai/papers/boyd-wickizer-locks.pdf) 利用條件函數與排隊理論中的生滅過程,探討、程式模擬 MCS lock 與 qspinlock 的 scalability 情形,完成了我這段時間想達成的事情 - 基於數學的程式設計 - 透過機率研究問題的可行性。
鑑於專題在排隊理論模型的搜尋與推導模擬,給予 $8$ 分。
## 與授課教師的互動
* 一對一討論: 4/30
* 課堂討論: [3/11](https://hackmd.io/AVg2YkX9RveH1W6SVWmNIw#JeffBla)
評分 : $4$ 分。
評分 : $5$ 分。
在 4/30 的一對一討論中,針對 elf 在 kernel 中的實際運行與 CPU out-of-order execution 在範例程式碼實驗不出來,在與老師討論後學習到透過工具如 bpftrace、litmus、strace 等可以找到很多解答並了解 kernel 實際運作,我也針對前兩項議題進行了追蹤紀錄 [How ELF work](https://hackmd.io/pJM-pR92SJ2aQIdO_0DYbA)、[4/30 一對一討論](https://hackmd.io/U10ofMHJQFaNJ3GWf9a9Xw),其中老師提出的「cache 讀取快但寫入慢。但為什麼?」讓我對硬體有近一步的認識,「原來並行也和硬體有這麼細緻的關係。」,在後續研究中,透過分析 SRAM Cell 中得兩個 CMOS inverters 與 amplifier 學到電位差造成的讀取寫入延遲。
## 所見所聞所感
評分 : $9$ 分。
本學期第一次修習 linux 核心設計,老師在 commit message 撰寫上就給我一個當頭棒喝,「本課程極度重視細節」,本來我自以為了解 commit 格式,透過 Commitizen 所呈現的內容就已經足夠詳盡,但我不常將為什麼與寫了什麼描述詳盡,在內文撰寫格式上也沒有注意,甚至會把一大堆不相干的程式碼綁在同個 commit 中,現在看來實在荒唐。注重細節方面也充分體現在對於數學的要求,老師在教材 - 隨機數與期末專題讓我能夠將數學分析應用在非機器學習與深度學習領域當中,一直以來,對於機器學習與深度學習的數學應用不陌生,每每設計模型就會需要將一些數學引入,以讓模型解決當前問題,然而,面對其他非模型問題,我卻不知如何透過機率等數學工具模擬現實問題,老師的教學內容正好滿足這個問題,透過排隊理論,讓我使用 markov model 與生滅過程結合條件函數模擬 qspinlock 的行為。
閱讀〈因為自動飲料機而延畢的那一年〉,受到作者滿腔熱血與壯志的影響,迷茫地我也因為時間、事情的推移與學習上的累積,漸漸找到方向,在 scalability 中,我可以深入探討 qspinlock ,延伸模擬的結果,在 computer vision 中,我正研究 OCR ,嘗試協助專案的推進,期望這些小目標最終能引領出一個大目標。〈因為自動飲料機而延畢的那一年〉不僅僅是拋頭顱灑熱血的夢想實踐,「與世界接軌」是另外一項課程重視的課題,透過 PR 與實驗,我們可以向第一線的工程師學習,了解現實生活中的機器。「一言不合就發 patch。」在 [The cling C++ interpreter](https://github.com/root-project/cling),我因老師在課堂上提及,嘗試 build from source ,然而卻怎樣都失敗,翻閱 CMakeLists.txt 後,發現文檔落後於 CMake 配置,因此著手改進並被[接受](https://github.com/root-project/root/pull/18161),在實驗方面, 受到 4/30 一對一討論後老師的影響,[開始利用 bpftrace 與 strace 分析 elf 的載入、運行流程](https://hackmd.io/pJM-pR92SJ2aQIdO_0DYbA)。
這堂課收穫滿滿,還強調將所學公開輸出,讓我在撰寫內容時都小心謹慎,但也在不知不覺中在 google 搜尋上留下些足跡。
## 自我評量 (1 ~ 10)
* $\text{GEOMEAN} = (7 \times 6 \times 8 \times 4 \times 9) ^ {1/5} \approx 6.6$
* 方案 B : $1 + \text{floor}(\text{GEOMEAN}) = 7$