Day 1:
- 原文:https://ithelp.ithome.com.tw/articles/10374851
- 發布日期:2025-09-11
2025/10/28 UPDATE:
Gthulhu 已加入 CNCF landscape,請參考:landscape.cncf.io
如果覺得文章對你有所啟發,可以考慮用 🌟 支持 Gthulhu 專案,短期目標是集齊 300 個 🌟 藉此被 CNCF Landscape 採納 [ref]。
系列規劃概述
大家好,我是 Ian。我在今年年初受到大神 Andrea Righi 的演講「Crafting a Linux kernel scheduler in Rust」啟發,將 scx_rustland 移植到 golang 平台上運作,並且考慮 Cloud-Native 的應用場景打造了一款適用於雲原生的通用排程器「Gthulhu」。
該系列文會以系統性的方式帶你學習如何開發 eBPF 應用,從零開始逐步掌握 eBPF 技術,並最終實現一個完整的 Linux 排程器。整個系列分為六個階段,每個階段都建立在前一階段的基礎之上。
寫在開始之前
在 ChatGPT 問世以後,我在技術寫作上變得比以往要消極,因為我認為人們不在需要透過閱讀網路文章來學習「簡單的」基礎知識(看 StackOverflow 慘淡的流量就知道),語法怎麼用、特殊指令怎麼下已經不在需要逐篇文章翻閱才能得到答案了。所以過去一年多來我公開在個人 Medium 的文章基本上只會寫一些 ChatGPT、Perplexity 無法準確回答我的知識,經過了這些累積,我想也是時候來寫寫廢文了。
今年的系列文我會讓 GitHub Copilot Plus 基於我提供的 context 負責全部的編撰工作,並且由我本人驗證文章的正確性、適時的補充必要知識。
這麼做的原因如下:
我認為在 AI 工具爆炸式發展的年代,很大程度的顛覆了我們接受新知的方式,所以我們可以在社群媒體上看到很多非工程背景的人利用 Claude Code、Cursor、Copilot 等工具 Vibe 出非常厲害的系統。那麼,軟體工程師又要如何在最嚴峻的世代量化自己的價值呢?筆者個人的想法是:比起外行人只能 vibe coding,我們可以用更精確的 prompt(或是 context engineering)的方式高效的產出「就像是親手寫出來的程式碼」。
除了發表對 AI 工具發展的感想外,今年的挑戰對我來說也與以往十分不同。雖然我在開源社群混了些年,也貢獻過不少知名專案,但是從 0 到 60 認真打造一個開源軟體專案倒是頭一回。希望能藉由鐵人賽這個活動讓更多人認識 Gthulhu。
2025/09/21
我認為 Coding Agent 在產生部分文章的表現有待加強,所以在探討 scheduler 的部分會以我自己撰寫的內容為主。
目錄
eBPF 基礎
eBPF 網路程式基礎
eBPF 進階功能
scheduler extenstion 介紹
scx_goland 移植
- scx_goland_core 移植與挑戰(一):page fault
- scx_goland_core 移植與挑戰(二):watchdog failed to check in for default timeout
- scx_goland_core 移植與挑戰(三):data unsync
Gthulhu 開發與整合
- Gthulhu 系統設計
- Gthulhu API server 系統設計
- 使用 Kubernetes 部署 Gthulhu
- 搶佔式任務處理
- 整合 free5GC 實作低延遲資料層處理(上)
- 整合 free5GC 實作低延遲資料層處理(下)
- 實作自動化測試流水線
- AI 賦能的智慧排程器
- 可插拔式排程器
- 使用 plugin 模式實作簡易排程器
- 使用 perfetto 觀察排程器行為
- 結語
預期成果
完成這個系列後,讀者將能夠:
- 理解 eBPF 技術
- 使用 Golang 開發客製化的系統排程器
- 具備解決實際生產問題的能力
- 為開源社群做出有意義的貢獻
關於筆者
目前任職於禾薪科技,對核心網路與雲原生開發有一定的經驗與理解,目前也是 free5GC(a Linux Foundation project)的 TSC Member、現任微軟 MVP、書籍作家、大學兼任講師,同時跟女友一起經營寵物客製化用品的生意。