contributed by < BigMickey69 >
所有紀錄來自觀看「成果展示錄影 (上)」與「成果展示錄影 (下)」
Feb 23, 2025
別說理解了,看之前對 CFS, EAS, EEVDF, Kuanch, devarajabc 等專有名詞一無所知。這是第一個報告的專題,所以我相信大多數人ideas作業也都會紀錄這題。
CFS - Complete Fair Scheduler
EEVDF - Earliest Eligible Virtual Deadline First
EAS - Energy Aware Scheduling
知道了本專題探討的應該是排程器。
CFS如同英文名會盡可能的依任務權重比例去平分 CPU 資源,最小 vruntime(virtual runtime) 的任務優先獲得 CPU
問題:
這樣的分配資源或許在處理程序上問題不大,但對使用者的體驗可能會很差,會感覺卡頓、不舒服。
只使用 vruntime 無法表達 CPU 時間的偏好
看到這個排程器的英文名大概就猜得出它的邏輯,優先分配 CPU 給 deadline 最為緊迫的任務
Nice 與 Latency-nice
Nice -> 表達任務大概要耗多少 CPU 時間
Latency-nice -> 表達任務對 CPU 頻率上的需求(AKA 應多常被 CPU 顧及)
簡報中 Deadline = Nice + Latency-nice
猜測實際上公式絕對不會這麼簡單,要找到一個能套在大多數情況,這件事本身也可以是一個專題了
問題:
簡報中並未提到任何潛藏的問題,有點奇怪
我預想可能的問題:
假設同時擁有很多 deadline 緊迫的小程序與一個deadline 比較寬鬆的大程序,那大程序就一直不會被處理,直到它的deadline逼近, CPU 資源可能會卡在那邊無法顧及其他程序,危害到使用者體驗
!!!不是排程器!!!
同樣看英文明就能理解它想成的目的。考量程序的難易度、緊迫程度,再決定交給哪一個 CPU 核心處理。
大核比較強大,但也會需要消耗更多功耗
小核的能耗比會比較好
TL;DR 就是選核啦
我認為這個報告太短也講太淺,只有非常概略的解釋幾個排程器的邏輯與目標,沒有入解釋實現方式、探討更多潛在問題與情境,也沒有提到任何或許能優話排程器的方式。報告中沒有出現"聽不懂"的狀況,而是同學講的過於淺導致我們只能很表層的理解。
這組的下兩組的報告:「還政於民的 sched_ext 及機器學習如何幫助 CPU 排程」與「EEVDF 相較於 CFS 的量化比較 」就精闢了一點。若能深入探討邏輯、原理,並在這些基礎上再加上自己的想法,並提供許多數據與想法等(幾乎重作一個報告),就能更好。
Feb 23, 2025
一開始先解釋 CFS 與 EEVDF 分別是什麼。
EEVDF 中提到了 Lag value ,第一組沒講到的概念。 Lag value 表示預計與實際得到時間的差
有看到一則留言補充 EEVDF 除了 weight 還會根據request size(time slice) 來決定 CPU 資源的分配
報告講的比較詳細,發現自己有時會倒帶重聽。EEVDF 跟 CFS 一直讓我聯想到公民中的形式平等v.s.實質平等 。
這組有真的去做實驗並搬出數據,在一個好的報告中這是理所當然的,但還是值得鼓勵。
報告中的實驗數據,使用Schbench
後面又用到了Schedgraph來看排程器的排程表現
這個報告前面不錯,但還是過於隴長。他們想表達的 EEVDF 與 CFS 大概第二組數據就已經很明確了,但後面又搬出了好幾組乍看之下不一樣但實際上差不多的圖表。一直有種鬼打牆的感覺。
講了很多也確實很明確,但到頭來並沒有提供任何新東西,沒有創新沒有優化,我認為此專題還有進步的空間。
Feb 23, 2025
專題名稱是 SimpleFS(Simple FileSystem)
簡報中的圖
第一次看到 VFS、Block I/O Layer、I/O Scheduler等名詞,報告中並未解釋。
查到的粗略解釋:
IOPS -> Input/Output Operations Per Second
Issued rwts -> Issued Read/Write Transactions
所以這位同學的 SimpleFS 的 IOPS 與 rwts 較大,表面上較快,但 CPU 使用率卻高不少,代表效率上會略輸一些
查的資料:
Superblock → Stores filesystem metadata (block size, number of inodes, etc.).
Inode Store → Contains inodes that map filenames to storage locations.
Inode & Block Bitmaps → Track free/used inodes and blocks.
Extent Blocks → Point to where actual file data is stored.
Data Blocks → Contain the raw data written by the user.
講者有講到已知 BUG 跟未來的規劃,最後還有個 QA,做的很好。
我覺得目前最有趣的一個專題,讓我對 Filesystems 燃起了一點興趣。我 Google Keep 中有個記事本紀錄著 這堂 Linux 期末專題的任何想法,看完這個後有個電燈泡亮了便寫了以下這條(先不論實際行不行或是合不合理) —
"A simple and intuitive File system with the goal of streamlining connections between files through the web and locally. Using a simple set of rules and instructions that's open source to actually connect, making it easy for anyone to modify or use."
Feb 23, 2025
本專題重點:CMWQ
問題:
每當有新連線時,創建一個新的執行緒來服務該連結。若有大量連接需求時就得花大量時間創建執行緒。
講者說 CMWQ 事先建立好一些執行緒,在任務需要時再配過去,從而省略建立執行緒的成本。
網頁伺服器想當然需要能穿梭各個 Directory ,講者講到原本會一個一個檢查子目錄並依序回傳給連接端,但這樣很沒效率。
所以後來引用了快取的概念,因此只要載入一遍,但這樣第一次打開還是得一個一個傳,而且若目錄中有變更就得重新快取。
是我的話可能會有個檔案或紀錄之類的把子目錄全部包起來,任何變更也會變更這東西。當 request 進來時再整個傳過去。
講者自己有提到很多地方使用 spinlock 而拉垮了整體速度,勇於指出自己的缺點。
與我之前做過的雲端硬碟系統/網站非常相似,也跟我自己遇到的問題有些重疊,但當時我並不是重視性能,許多地方都有偷工減料、能不做就不做,反正能用就好。最後導致整個專案的程式碼宛如義大利麵,若要扎實的做好就得整個打掉重來。
整體介紹的不錯,目標與原理明確,但我自己覺得簡報有些小無聊,我會多加一點顏色或是圖片。
我認為此專題最大的問題是少了個「賣點」,沒有一個特別突出的特點或是花樣,沒辦法另聽眾感到新奇。
若我期末真的做了個 Filesystem,我會想盡量讓它跟我之前的那個破專案做個連結看看。
整體而言我認為沒有什麼特別亮眼的地方,但每件事都有交待好,也很清楚解釋了原理與邏輯,也看了一點點程式碼,不錯!
Feb 23, 2025
Image Not Showing Possible ReasonsLearn More →
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
看到這個,我的第一印象是覺得「哇好牛逼阿」,但更多是「how」? 這位同學是想從0設計並做出一顆處理器嗎?
這讓我聯想到一個我非常喜歡的老外yt頻道: JDH (https://www.youtube.com/@jdh)
其中有兩部影片就在講這個,從0開始設計一臺 8-bit 電腦,從電路設計到寫 CPU 指令集、作業系統、自製程式語言、編譯器、IDE
最後再寫個 PONG 並在上面遊玩
當時看完這部影片我下巴掉到了地上,是個我很崇拜的人,但這就有些扯遠了
(整個頻道都是些很酷的小專案,基本上都只用C語言)
第一頁看不懂的名詞: rv64/32, OpenSBI
RISC-V:
OpenSBI:
qemu -> free & opensource 硬體模擬器
- ZSBL (Zero-Stage Bootloader) (影片中有解釋)
- UART (Universal Asynchronous Receiver-Transmitter):
- Serial communication protocol used for early debug messages and logging.
- SPI (Serial Peripheral Interface):
- High-speed serial communication protocol used to connect microcontrollers with peripherals.
- SD/MMC Init:
- The process of preparing an SD card or MMC storage for data access by the bootloader.
講者提到這是他遇到的大大難關,一直遇到 Timeout 問題,自己又不熟 C# 。最後解決方法是直接把 retry 次數限制刪掉,聽到時我是覺得蠻好笑的。不只是寫程式,只要扯到電腦很多時候會遇到一些不應該出錯而出錯的地方,也很多時候解法的邏輯也非常奇怪,因為太貼近現實所以覺得好笑。
這個專題感覺規模很大,一定花了非常多時間嘗試再嘗試。就如同講者所言,硬體方面(CPU)宛如黑箱,即便在腦袋中邏輯上是通的也不代表現實中不會有問題,出問題時還得猜是硬體還是軟體出問題。
最後他還有提到未來願景、可能改進的地方,這點很好。
我非常佩服這個專題,也自己對這個也蠻有興趣的,即便只是聽也能感覺到背後的心血與所需工程量,中間究竟熬過了幾個夜晚才能有這樣的結果。但也因為這專題這麼好,才會顯得簡報有些不足。感覺還是過於單調,得更有色彩、圖片才好,某些地方再講細一點才好(CPU 部份更是直接被跳過)。
Feb 24, 2025
KVM -> Kernal-based Virtual Machine
講者有講到本專題是建立在他人的專題之上,有些人擴充他的作品後會宣稱整個為自己的作品
雖然報告中一直出現新的概念與名詞,膽講者總是會依依解釋清楚,我自然也不用再去查資料
講者口條清晰、簡報精緻也富有有色彩,報告中每件事都交待得很清楚,不會太深入去講任何細節,把重點放在正確的地方。
講的太順導致我也沒紀錄些什麼,只是心中覺得他報告得很不錯。結束時教授有補充到一點,說講者他原本對 Linux 還蠻陌生的,當時5月初在討論題目時有點怕怕的,但一個多月就順利解決了。
「只要有心學習,即便只有一個多月,很快就能弄出來!」
Feb 24, 2025
本專案原是2021年教授為了 Linux 暑期課程寫了個300多行給同學當練習,而後續有越來越多同學投入,讓專案變得有趣,而在2023年的 Linux 基金會發表成果。
以上是講者為此專案所作的貢獻
另一種標準是45°, 135°, 225°, 315°
IBSS -> Independent Basic Service Set
這邊應該是本專題的精髓了,ad-hoc 又稱 IBSS ,在進入 IBSS 網路後它就能看到同個網路下的 IBSS 裝置溝通,不需要特別做連線。
接下來講著 ad-hoc interface type,再來是 IBSS 怎麼加入與離開,join 跟 leave 的函式。
再來是封包傳遞的部份,得確保 source 與 destination 存在於同一個 BSS(Basic Service Set) 之中
裝置掃描
這些地方講者都交待的很好,只是我自己背景知識實在不足,大致原理與架構都懂,但實際上的任何細節和如何實現等還不明白。查一個不懂的概念的資料,就會多兩到三個不懂的概念與名詞。我想剛開始學都是這樣的,只是有時多少會覺得有些無助。
簡報精美,富有圖片與顏色,內容豐富、解釋完善,專題本身也蠻有趣的,實在無可挑替。
其中有些內容與張燕光教授曾經也有非常概略的講過,當時在討論專題可能的方向,明年開始實做。