# 2025q1 Homework1 (ideas) contributed by < [BennyWang1007](https://github.com/BennyWang1007) > {%hackmd NrmQUGbRQWemgwPfhzXj6g %} ## ideas ### 還政於民的 sched_ext 及機器學習如何幫助 CPU 排程: vax-r > HackMD: [開發紀錄](https://hackmd.io/@sysprog/BJdyxvxX0) > YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=2033) 1. sched-ext 有類似 VFS 的界面,可自定義擴展 BPF 排程器 2. 要素: - 客製化不同的排程,像是影片所述能將特定工作(如原神)的優先級提高。 - 提昇排程策略的速度 - 排程效率:可以快訴修改部署,錯誤則會roll-back回去。 3. 實做使用編譯kernel(CPU-bound) + fio disk I/O tasks(I/O-bound) 問題: 1. 大量的 CPU-bound + I/O-bound tasks 是否能真正的模擬現實情境,如 machine learning tasks 會先有大量的I/O-bound tasks 才接著 CPU-bound tasks。有測試全都 CPU/IO-bound的情景嗎? 2. 我不懂最後學長提問的:I/O-bound 會影響 CPU-bound 的問題,在現實環境下 I/O-bound 本來就會佔用一些 CPU 資源,想請此問題對實驗有造成什麼影響? 3. synchronous I/O 和 async I/O 在此實驗有可能有什麼影響? Tasks的權重不好預估? ### EEVDF 相較於 CFS 的量化比較 : ShawnXuanc > HackMD: [開發紀錄](https://hackmd.io/@sysprog/SyTH65LUC) > YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=3953) 1. CFS 能"公平的"(藉由權重)分配不同 process 的 CPU 時間 2. Virtual runtime 3. EEVDF 能藉由 Eligible time 以及 deadline 來進行排程,選擇執行的程序。 4. 結果表明,EEVDF 在較高的負載下,其 wake-up latency 顯著的比 CFS 低,最大延遲 EEVDF 也明顯的比 CFS 還要短。 問題: 1. 請問為什麼影片中大量提及的 schedgraph 會發音成 [sync-graph]? 是特殊套件的專屬念法嗎? 2. 比較結果可發現 EEVDF 在 context switch 上更頻繁?能造成 wake-up latency 顯著提升,但未必都是好事,或許能讓排程器動態的決定排程頻率? ### 開發具體而微的 Linux 檔案系統 : HotMercury, jason50123 > HackMD: [開發紀錄](https://hackmd.io/@sysprog/r1e08fg7A) > YouTube: [Video](https://www.youtube.com/live/kwYgfkD1dWA?t=5456) 1. 此專題將 simplefs 移植到 v6.8 版 kernel 2. 含 journel 功能 因為在大三上的作業系統課程中,我們也有嘗試寫過簡單的檔案系統,有以下問題想問: 1. 我認為執行 `dd if=/dev/zero...` 命令時發生的問題有些怪異,在 alloc raw block 的時候理應會順帶將指標存入 extend block,這之中一定有嚴重的實現(implementation)錯誤。 2. 中間提到的 remove file 的操作,為什麼原本的實作會需要將所有檔案向前移?像常見的檔案系統一樣,使用 bitmap 有什麼阻礙嗎? 3. 關於 journel 防止 crash 的機制,是否能考慮將每一步操作都寫入一個日誌檔案,等日誌檔案完成寫入後才開始寫入資料、移動指標等,並在每次fs啟動時先檢查日誌的尾部操作是否完成。若日誌寫到一半斷電也不會影響原先的檔案系統。 4. 在各檔案系統都很小的情況下,請問 simplefs 相較於常見的 ext4、FAT32、NTSF 等檔案系統有什麼關鍵的優勢嗎?(經查詢 kernel module 大小 `ls -lh /lib/modules/$(uname -r)/kernel/fs/`,例如 exfat 僅佔 56 KB ,而最小的更僅有 8 KB) ### 運用並行處理來強化網站資料存取的效率 : yeh-sudo > HackMD: [開發紀錄](https://hackmd.io/@sysprog/B1W2HKTER) > YouTube: [Video]() 1. RCU 允許多個 reader 與一個 writer 讀取與更新資料的同步機制 問題 1. 影片中提及的 lock-free programming 為何?參考 [此筆記](https://hackmd.io/@sysprog/concurrency-lockfree) 後,與傳統的 atomic 實作有何區別? 2. 簡單的看名稱猜測不同的 RCU,如 Memory-barrier-based 與 Signal-based RCU,和 Linux kernel 的 read/write-lock 真的有顯著的效能差異嗎? 3. 為何 QSBR 的性能分布會很大? ### 建構 RISC-V 相容處理器並運作 Linux 核心 : millaker > HackMD: [開發紀錄](https://hackmd.io/@sysprog/HyjiP43N0) > YouTube: [Video](https://www.youtube.com/live/qUd1PtF-R38?t=5926) 1. OpenSBI 是一個 RISC-V runtime 思考: 1. 這份專題已經遠超我的知識範圍,從 loader 之後都聽不懂,未來需要多補足這方面的知識。 問題: 1. 與其在不支援 FPU instructions 的處理器上模擬 FPU,如果直接將浮點運算的程式碼轉成整形會有很大的衝擊、影響嗎? ### 打造具備網路連線的精簡虛擬機器 : jimmylu890303 > HackMD: [開發紀錄](https://hackmd.io/@sysprog/ryG0h25I0) > YouTube: [Video](https://www.youtube.com/live/qUd1PtF-R38?t=9629) 1. 虛擬化技術分為: 1. System VM:包含 CPU, RAM 等周邊裝置,如 VMWare, Virtual-Box 2. Process VM:提供虛擬化環境給 process,如 JVM。 2. KVM 是 Linux 核心中的虛擬化模組,讓核心變成虛擬機器管理程式(Hypervisor),並提供API供 User space 呼叫。 問題: 1. 為何 KMV 會以 `open`, `close` 等檔案 system call 進行操作,而不是以 kernel module 或執行檔的身分存在? 2. 回顧聊天室,為何 Type II hypervisor 有機會比 Type I 快,在系統呼叫與模擬上的 overhead 應該不小? 3. 為什麼 KVM 本身不實現網路功能?是希望使用者自己擴展嗎?