iT邦幫忙

2025 iThome 鐵人賽

DAY 1
1
Cloud Native

30 篇文帶你用 eBPF 與 Golang 打造 Linux Scheduler系列 第 1

30 篇文帶你用 eBPF 與 Golang 打造 Linux Scheduler

  • 分享至 

  • xImage
  •  

如果覺得文章對你有所啟發,可以考慮用 🌟 支持 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。

目錄

eBPF 基礎

  1. eBPF 的誕生與演進史
  2. eBPF 架構深度解析
  3. 開發環境搭建與工具鏈介紹
  4. 第一個 eBPF 程式:Hello World
  5. eBPF Maps 詳解與使用

eBPF 網路程式基礎

  1. eBPF 網路程式設計入門
  2. 案例分享:使用 XDP 打造 Tiny Load Balancer

eBPF 進階功能

  1. eBPF CO-RE
  2. 內核追蹤與監控
  3. eBPF Skeleton
  4. struct_ops 與 sched_ext 簡介

scheduler extenstion 介紹

  1. scheduling cycles
  2. scx_simple 實作解說
  3. scx_rustland 解說

scx_goland 移植

  1. scx_goland_core 移植與挑戰(一):page fault
  2. scx_goland_core 移植與挑戰(二):watchdog failed to check in for default timeout
  3. scx_goland_core 移植與挑戰(三):data unsync

Gthulhu 開發與整合

  1. Gthulhu 系統設計
  2. Gthulhu API server 系統設計
  3. 使用 Kubernetes 部署 Gthulhu
  4. 搶佔式任務處理
  5. 整合 free5GC 實作低延遲資料層處理(上)
  6. 整合 free5GC 實作低延遲資料層處理(下)
  7. 實作自動化測試流水線
  8. 插拔式排程器設計
  9. 使用 plugin 模式實作簡易排程器
  10. 管理多節點排程策略
  11. 使用 perfetto 觀察排程器行為
  12. 結語

預期成果

完成這個系列後,讀者將能夠:

  • 理解 eBPF 技術
  • 使用 Golang 開發客製化的系統排程器
  • 具備解決實際生產問題的能力
  • 為開源社群做出有意義的貢獻

關於筆者

目前任職於禾薪科技,對核心網路與雲原生開發有一定的經驗與理解,目前也是 free5GC(a Linux Foundation project)的 TSC Member、現任微軟 MVP書籍作家大學兼任講師,同時跟女友一起經營寵物客製化用品的生意。


下一篇
eBPF 的誕生與演進史
系列文
30 篇文帶你用 eBPF 與 Golang 打造 Linux Scheduler3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言