# Project 3: free5GC with Gthulhu
[TOC]
## 課程目標
使用 [Gthulhu](https://gthulhu.org/) 加速 free5GC data plane 的處理效率。
> [!Important]
> 請使用 Ubuntu 25.04(必須!!)
> TA 的環境是: 4 core + 8 GB RAM + 50 GB Disk(保證能用)
## 作業說明
請使用 Week8 讓大家練習的 [free5gc-helm](https://github.com/free5gc/free5gc-helm) 部署核網以及 UERANSIM,並使用 [Gthulhu](https://github.com/Gthulhu/Gthulhu) 成功復現在 CPU 滿載的情況下依然可以維持極小的 RTT(使用 `ping` 測試)。
請參考:[利用 Custom eBPF-based Schedulers 改善網路效能](https://free5gc.org/blog/20250726/#ping)
### Gthulhu 安裝
- [安裝 - Gthulhu](https://gthulhu.org/zh/installation/)
### CPU 滿載工具
- CPU 滿載(需安裝 [stress-ng](https://github.com/ColinIanKing/stress-ng?tab=readme-ov-file#debian-packages-for-ubuntu))
```bash
stress-ng -c 20 --timeout 60s --metrics-brief
```
## 作業要求 & 評分
- 70%:復現實驗(截圖)
- 截圖1:ping + Gthulhu(啟動 Gthulhu 後的 RTT)
- 截圖2:ping + Gthulhu + stress-ng(啟動 Gthulhu 以及 stress-ng 後的 RTT)
- 截圖3:Gthulhu + API server(Gthulhu 確實顯示有載入 strategy,不知道這是什麼要認真看 demo 影片!!)
- 截圖4:ping + Gthulhu + stress-ng + API server(載入後真的有降低的 RTT)
> [!Important]
> 1. 這題只有 70% 跟 0%,沒有部分給分
> 2. 截圖 1234 不是要大家把全部的 terminal 放在一起截,重點是括號裡面的部分
- 20%:為何 API server 載入策略之後,RTT可以降低?(文字回答)
- 思考一下 Gthulhu 的內容(上課認真聽很重要!)
- 假設 CPU 當前正在處理一個會佔用長時間的任務,為何 Gthulhu 還是能讓 RTT 保持在極短的時間內?
- 10%:使用 K8s 部署其他應用,利用 API server 的 config 嘗試最佳化 workload (截圖 + 說明)
- 任意應用皆可,需要呈現出優化前與優化後的結果
## 繳交方式
整理成一份 PDF 檔案上傳 e3!
> [!Tip]
> 用 HackMD 寫的可以複製到 Notion 導出 PDF 這樣就不用花錢了