L04: fibdrv
主講人: jserv / 課程討論區: 2023 年系統軟體課程
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
返回「Linux 核心設計/實作」課程進度表
自我檢查清單
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
作業要求
- 回答上述自我檢查清單的所有問題,需要附上對應的參考資料和必要的程式碼,以第一手材料 (包含自己設計的實驗) 為佳
- 詳閱第 2 和第 3 週所有教材及作業描述 (一), (二), (三), (四), (五),記錄你的啟發和疑惑
- 在 GitHub 上 fork fibdrv,目標是修正 Fibonacci 數計算並改善
fibdrv
核心模組的計算效率,過程中需要量化執行時間,可在 Linux 核心模組和使用者空間 (userspace) 中測量
- 原本的程式碼只能列出到 而且部分輸出是錯誤的數值,請修改程式碼,列出後方更多數值 (注意: 檢查正確性和數值系統的使用)
- 務必研讀上述 Linux 效能分析的提示 的描述,降低效能分析過程中的干擾;
- 在 Linux 核心模組中,可用 ktime 系列的 API;
- 在 userspace 可用 clock_gettime 相關 API;
- 善用統計模型,除去極端數值,過程中應詳述你的手法
- 分別用 gnuplot 製圖,分析 Fibonacci 數列在核心計算和傳遞到 userspace 的時間開銷,單位需要用 us 或 ns (自行斟酌)
- 嘗試解讀上述實驗的時間分佈,特別是隨著 Fibonacci 數列增長後,對於 Linux 核心的影響。可修改 VFS 函式,允許透過寫入
/dev/fibonacci
裝置檔案來變更不同的 Fibonacci 求值的實作程式碼。
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- 用 printk 固然方便,但其執行時間易受各種因素而不穩定,除了透過統計來觀察,也可改用核心的 sysfs 介面,後者可讓我們自行宣告 show 和 store 介面來提供讀寫操作,可參見 Sample kobject implementation (注意: 切換到對應的 Linux 核心版本)。
- 逐步縮減 Fibonacci 的執行時間,過程中要充分量化
- 嘗試研讀 sysprog21/bignum 的實作,理解其中的技巧並與你的實作進行效能比較,探討個中值得取鏡之處。
- 當 隨著 越來越大時,由 Linux 核心傳遞字串形式的十進位就成為效能瓶頸
繳交方式
編輯 Homework3 作業區共筆,將你的觀察、上述要求的解說、應用場合探討,以及各式效能改善過程,善用 gnuplot 製圖,紀錄於新建立的共筆
截止日期
Mar 21, 2023 (含) 之前
越早在 GitHub 上有動態、越早接受 code review,評分越高
作業觀摩