EEVDF 排程器¶
“最早符合條件的虛擬截止時間優先”(EEVDF)最初於 1995 年在一篇科學出版物中提出 [1]。Linux 核心從 6.6 版本開始過渡到 EEVDF(作為 2024 年的新選項),放棄了早期的完全公平排程器(CFS),轉而使用 Peter Zijlstra 在 2023 年提出的 EEVDF 版本 [2-4]。有關 CFS 的更多資訊,請參見CFS 排程器。
與 CFS 類似,EEVDF 旨在在具有相同優先順序的可執行任務之間平均分配 CPU 時間。為此,它為每個任務分配一個虛擬執行時間,建立一個“滯後”值,該值可用於確定任務是否已獲得其公平的 CPU 時間份額。這樣,具有正滯後的任務被欠 CPU 時間,而負滯後意味著該任務超過了其份額。EEVDF 選擇滯後大於或等於零的任務,並計算每個任務的虛擬截止時間 (VD),選擇具有最早 VD 的任務來執行。重要的是要注意,這允許具有較短時間片的對延遲敏感的任務優先處理,這有助於提高它們的響應性。
關於如何管理滯後,特別是對於睡眠任務,目前仍在進行討論;但在撰寫本文時,EEVDF 使用基於虛擬執行時間 (VRT) 的“衰減”機制。這可以防止任務透過短暫睡眠來重置其負滯後而利用系統:當任務睡眠時,它會保留在執行佇列中,但被標記為“延遲出隊”,允許其滯後在 VRT 上衰減。因此,長時間睡眠的任務最終會重置其滯後。最後,如果任務的 VD 較早,則可以搶佔其他任務,並且任務可以使用新的 sched_setattr() 系統呼叫請求特定的時間片,這進一步方便了對延遲敏感的應用程式的工作。
參考文獻¶
[2] https://lore.kernel.org/lkml/a79014e6-ea83-b316-1e12-2ae056bda6fa@linux.vnet.ibm.com/