2007年9月15日 星期六

Linux 核心變革,採用新的 CFS 行程排班器

Linux : Linux 核心變革,採用新的 CFS 行程排班器
發表人 ols3 於 2007/8/8 12:21:08 (1705 人讀取)
Linux

小三報導:

七月中旬到八月初期間,Linux 核心開發社群裡頭,出現了一點爭論話題。

從 Linux 2.6.23 開始,Linux 核心將把使用多時的 0/1 行程排班器換掉,新採用的 scheduler 稱為完全公平排班器(CFS: Completely Fair Scheduler),這個排班器是由目前在 RedHat 任職的開發人員 Ingo Molnar 在今年 4 月 11 日開始發展的,CFS 在 62 個小時內就被設計出來。在此之前,Linux 核心開發社群中,早有一群人長期擁護的另一個 SD 排班器,卻始終不被 Linus 接受,CFS 的開發時間最短,但卻能立即出線,這讓 SD 的擁護者十分不能接受,因此對於 CFS vs SD 孰優孰劣的爭論,成為最近核心開發社群中的一個熱門話題。

在 Linus 選擇 CFS 成為新的 Linux 行程排班器之後,長期以來專注於提升 Linux 桌面應用效能的業餘核心開發者 Con Kolivas (本職是墨爾本一家醫院的麻醉師,核心開發是他業餘的興趣)宣佈他將不再維護 SD 行程排班器的 ck- 修補程式碼,並且宣佈退出 Linux 核心的開發行列。ck- patch 最早可追溯到 2002 年 Linux 2.4 系列的核心。不過,多年來 Con Kolivas 的修補程式一直無法被核心主力開發群所接受,因此從未進入 Linux 核心主流程式碼中。Con Kolivas 並發表了一些對 Linux 核心開發群始終不重視桌面應用的言論,他在接受 APCMag 專訪時,詳細地解釋他為何要離開(Why I quit: kernel developer Con Kolivas, http://apcmag.com/6735/interview_con_kolivas)。對於這篇專訪,Linus 在郵件論壇中罕見地帶著生氣的口吻反駁,Linus 表示大部份核心開發人員都是 Linux 桌面的使用者,不但不可能忽視 Linux 核心在桌面應用的效能關注,相反地 Linus 認為 Linux 桌面應用一直是核心開發範圍中最重要的一部份(Torvalds rebukes desktop critics, http://www.techworld.com/opsys/news/index.cfm?newsid=9652)。

CFS vs SD 的爭論在核心郵遞論壇中漫延一陣子之後,Linus 最後出面說明他為什麼捨棄 SD 而選擇 CFS 的緣由(http://kerneltrap.org/node/14008)。

Linus 說道: "那些認為 SD 排班器是完美的人,根本忽略了現實問題,很遺憾地,包括 Con Kolivas 自己都是如此,這也是為什麼長期以來我從不接受 SD 程式碼進入 Linux 核心的主要原因之一;Con 始終無法面對使用者回報的問題,採取的態度是爭論對抗,而不是願意用心和使用者一起解決問題。", Linus 強調朝向一個對所有層面都好的解決方案的重要性。" SD 一直沒有一個可以讓人信任的維護者,除了能專注自己的主題之外,也能關注其它層面,這便是 SD 為何會被判出局的原因。"

Linus 推崇 CFS 的開發者 Ingo Molnar 道: "相信我! 做為一個長期的核心開發者,我最清楚什麼才是最重要的,任何能夠不怕麻煩地接受問題回報,並且持續改進的人,絕對比採取對抗問題心態者更為重要"。

Linus 也提到,我知道已有一群人正在測試 CFS 和 SD 在各種狀況下的效能比較,大部份的人應該都會同意 CFS 和 SD 會比原來使用的 0/1 排班器優秀,但 CFS 和 SD 之間卻不會有什麼重大的效能差異。

至此,情況已經很清楚了,由 Linus 的表態,我們可以了解為何 Linus 選擇 CFS 而不是 SD 的原因;Linus 希望任何一個核心開發方案,都能夠注意到其它層面,而不是只顧專注自己的主題,卻排除其它人對各核心領域可能產生影響的考量,最重要的是,開發者要能夠接受問題回報,並且持續改進它。

不管如何,這個爭論應該算是塵埃落定了,近日推出的 Linux 2.6.23-rc2 中已改用 CFS 程式碼(馬上就有人對它進行效能測試:http://www.phoronix.com/scan.php?page=article&item=797&num=1 ),這個事實說明了 Linus 的堅持,許多人應該願意相信 Linus 最終的決定應該是對的。