Linux系統(tǒng)提速的必修課
像以往一樣,依然在不斷編譯新版 Linux kernel 內(nèi)核——Linux 系統(tǒng)提速的必修課。和 Linux kernel BFS 的相遇充滿了巧合下的必然?,F(xiàn)在看來,BFS Kernel 是 Linux 在半年內(nèi)給我的最大驚喜——系統(tǒng)像電視購物主持人一樣充滿了力量和激情!而且是人能感覺得到的快!特以此文獻給系統(tǒng)編譯狂人,桌面提速狂 Linux 控。向所有 Linux 桌面用戶力頂 BFS。
像以往一樣,依然在不斷編譯新版 Linux kernel 內(nèi)核——Linux 系統(tǒng)提速的必修課。和 Linux kernel BFS 的相遇充滿了巧合下的必然。現(xiàn)在看來,BFS Kernel 是 Linux 在半年內(nèi)給我的最大驚喜——系統(tǒng)像電視購物主持人一樣充滿了力量和激情!而且是人能感覺得到的快!特以此文獻給系統(tǒng)編譯狂人,桌面提速狂 Linux 控。向所有 Linux 桌面用戶力頂 BFS。
最先在 Kindle 上看 xkcd 漫畫,有漫畫如是:
A: 經(jīng)過某些人千百年的努力,最新的 Linux 補丁支持 4096 個 CPU 的電腦了!原來只能支持 1024 個!
B: 全屏 Flash 視頻卡不卡啊?
A: 卡。不過誰他丫的看視頻啊?
而關于 BFS 的消息是最先在 Linux Magazine 上看到的;不久之后 G1 Android 手機 ROM 修改大神 CM 開始在他的測試版 CyanogenMod 使用 BFS 作為 kernel 的 Scheduler,試用之后發(fā)現(xiàn)手機系統(tǒng)速度明顯加快。 用手滑動左右翻屏就像 Opera 下滾動網(wǎng)頁那么平滑,搞得屏幕覆膜上多了好多指紋印。心癢已久,恰逢 Linux kernel 2.6.31 新版正式發(fā)布,打上 BFS Patch 編譯,重啟。神一樣的提速再次出現(xiàn)在我 4 年高齡的筆記本電腦上,注入了雞血的 KDE4 讓人無比興奮???快!快!所以,BFS 是什么?
要知道 BFS 是什么最好先了解一下它的作者,傳說中的澳洲猛士 CK。
CK,Con Kolivas,男, 澳大利亞中年男子,資深內(nèi)核 hacker。眾所周知,Linux Kernel 是聚集了一幫天才蠢才和暴君怪胎的地方,CK 貌似最適合這種地方的人。是真的貌似,一張電影里面典型高智商通緝犯的臉。
幾年前編譯 Linux kernel,ck 補丁集就是系統(tǒng)提速的代名詞。當時編譯內(nèi)核的三部曲是下 kernel 源碼,打上 ck 補丁集,編譯安裝。后來上游代碼將 ck 補丁集穩(wěn)定的部分不斷吸收,它的影響力也漸漸消失。
CK 本身對任務調(diào)度有很深的造詣,他聰明而經(jīng)典地實現(xiàn)了 fair scheduling,而實現(xiàn)模式被 Igor 借鑒改進最終寫出了現(xiàn)在 kernel 用的進程調(diào)度管理器 CFS (Completely Fair Scheduler)。不得不順便介紹一下任務調(diào)度。Kernel 的進程調(diào)度主要是將 CPU 資源分配給各種驅(qū)動、進程等等。你可能聽說過,一般人的大腦使用率不足 20% 這種科學或者偽科學言論。但事實是,你電腦上的 CPU 從來就沒有真正被 100% 的利用過(別跟我說你在資源管理器里面看到過 CPU 100%,我還見過 101% 呢)。如何將各種運算任務一刻不停又有條不紊的塞給 CPU 處理是一門嚴肅的科學,絕不是電視購物導購能解決的問題。一次塞的運算量少了,CPU 閑著,運算時間增長,電腦慢了;而一次塞的運算多了,CPU 忙不過來,運算又要在門口排隊,電腦也慢了。進程調(diào)度主要是用算法解決這個問題,而現(xiàn)在 Linux Kernel 用的 CFS 據(jù)說非常經(jīng)典,在不同情況下都可達到相當高的 CPU 利用率。而現(xiàn)用 CFS 也是在 2.6.23 才加入的,取代原來 O(1),直接將 Linux 桌面速度從 XX 時代帶入了 XX+N 時代。
兩年前,CK 淡出了內(nèi)核開發(fā),忽然從江湖中蒸發(fā)。幾周前,CK 重出江湖,兩年磨一劍,帶來了 BFS ,全稱 Brain Fuck Scheduler (只認識中間那個單詞的請參考谷歌翻譯),聲稱專為低端硬件設計(我的理解是不超過 10 個 CPU 的電腦電視手機游戲機都算低端機),說白了就是比 Kernel 默認要更加山崩地裂??菔癄€房價上漲油價飛升的快。BFS 為什么叫這個名字?為了中文用戶,不能三個詞讓他們一個也不懂吧? 好吧,這名字有點不雅,不過算是直爽。對了,據(jù)說 CK 也是看到上面我提到的漫畫才開始劍走偏鋒。真正有幾個人用有上千 CPU 的電腦呢?為什么要為這種擴展性犧牲桌面性能。BFS 就在其間做了取舍,僅僅支持最多 16 個 CPU ,把問題外沿做小,讓算法更簡單精悍高效。作為原理來講,這足夠解釋速度的來源。對于其它廢問題, CK 專門寫了一個 FAQ。在可以預見的將來,BFS 也不會進入 mainline kernel,說白了是取向問題。
關鍵問題是怎么用?
下 2.6.31 的 kernel 源代碼,如果你不知道在哪里下的話就不必往下看了,在當前歷史時期您還是搞不定的。再去:http://ck.kolivas.org/patches/bfs/ 下第一個 patch,現(xiàn)在是 2.6.31 開頭的,表示適用該版本。解壓內(nèi)核源碼,打上 patch,配置以后編譯安裝。現(xiàn)在 BFS 還在測試期,沒有完全成熟,但已經(jīng)相當可用。編譯的時候有什么需要配置的?不需要, Scheduler 這東西太底層了,打上補丁就把原來的 CFS 替換掉了,沒什么選項給你選。如果你非要問的話,不就圖個快么,記著把配置弄到 1000Hz,開 preempt ,禁掉 dynamic ticks。編譯重啟不用說了,我可以酷酷的扔下一個 have fun 然后去玩 Mac 了,反正你機器啟動不了不要找我。雖然我純凈 kernel 單加 BFS Patch 編譯成功啟動沒問題,依然有一位倒霉的推油編譯以后不知道怎么折騰的無法啟動。可另外被我忽悠成功的推友們反應一致:“快!人能感覺得到的快!”
到底值不值得上手 ,有沒有評測?
這是某些不夠剽悍的讀者會掙扎到最后的問題。BFS 原理上講,機器配置越低,感受會越明顯。如果你非要評測的話,Phoronix 這個專業(yè)的 Linux 測評狂網(wǎng)站也出了一份。我可以提前劇透結(jié)論,區(qū)別都很小,BFS 勝出絕大部分測試,然而優(yōu)勢不明顯。我只是補充一下絕大多數(shù)折騰過的人的感受
——快 !人能感覺到的快!
【編輯推薦】