BFS 简介,Linux 桌面的极速未来?
{ 撰文/Truth }
像以往一样,依然在不断编译新版 Linux kernel 内核——Linux 系统提速的必修课。和 Linux kernel BFS 的相遇充满了巧合下的必然。现在看来,BFS Kernel 是 Linux 在半年内给我的最大惊喜——系统像电视购物主持人一样充满了力量和激情!而且是人能感觉得到的快!特以此文献给系统编译狂人,桌面提速狂 Linux 控。向所有 Linux 桌面用户力顶 BFS。
最先在 Kindle 上看 xkcd 漫画,有漫画如是:

A: 经过某些人千百年的努力,最新的 Linux 补丁支持 4096 个 CPU 的电脑了!原来只能支持 1024 个!
B: 全屏 Flash 视频卡不卡啊?
A: 卡。不过谁他丫的看视频啊?
而关于 BFS 的消息是最先在 Linux Magazine 上看到的;不久之后 G1 Android 手机 ROM 修改大神 CM 开始在他的测试版 CyanogenMod 使用 BFS 作为 kernel 的 Scheduler,试用之后发现手机系统速度明显加快。 用手滑动左右翻屏就像 Opera 下滚动网页那么平滑,搞得屏幕覆膜上多了好多指纹印。心痒已久,恰逢 Linux kernel 2.6.31 新版正式发布,打上 BFS Patch 编译,重启。神一样的提速再次出现在我 4 年高龄的笔记本电脑上,注入了鸡血的 KDE4 让人无比兴奋。快!快!快!
所以,BFS 是什么?
要知道 BFS 是什么最好先了解一下它的作者,传说中的澳洲猛士 CK。
CK,Con Kolivas,男, 澳大利亚中年男子,资深内核 hacker。众所周知,Linux Kernel 是聚集了一帮天才蠢才和暴君怪胎的地方,CK 貌似最适合这种地方的人。是真的貌似,一张电影里面典型高智商通缉犯的脸。
几年前编译 Linux kernel,ck 补丁集就是系统提速的代名词。当时编译内核的三部曲是下 kernel 源码,打上 ck 补丁集,编译安装。后来上游代码将 ck 补丁集稳定的部分不断吸收,它的影响力也渐渐消失。
CK 本身对任务调度有很深的造诣,他聪明而经典地实现了 fair scheduling,而实现模式被 Igor 借鉴改进最终写出了现在 kernel 用的进程调度管理器 CFS (Completely Fair Scheduler)。不得不顺便介绍一下任务调度。Kernel 的进程调度主要是将 CPU 资源分配给各种驱动、进程等等。你可能听说过,一般人的大脑使用率不足 20% 这种科学或者伪科学言论。但事实是,你电脑上的 CPU 从来就没有真正被 100% 的利用过(别跟我说你在资源管理器里面看到过 CPU 100%,我还见过 101% 呢)。如何将各种运算任务一刻不停又有条不紊的塞给 CPU 处理是一门严肃的科学,绝不是电视购物导购能解决的问题。一次塞的运算量少了,CPU 闲着,运算时间增长,电脑慢了;而一次塞的运算多了,CPU 忙不过来,运算又要在门口排队,电脑也慢了。进程调度主要是用算法解决这个问题,而现在 Linux Kernel 用的 CFS 据说非常经典,在不同情况下都可达到相当高的 CPU 利用率。而现用 CFS 也是在 2.6.23 才加入的,取代原来 O(1),直接将 Linux 桌面速度从 XX 时代带入了 XX+N 时代。
两年前,CK 淡出了内核开发,忽然从江湖中蒸发。几周前,CK 重出江湖,两年磨一剑,带来了 BFS ,全称 Brain Fuck Scheduler (只认识中间那个单词的请参考谷歌翻译),声称专为低端硬件设计(我的理解是不超过 10 个 CPU 的电脑电视手机游戏机都算低端机),说白了就是比 Kernel 默认要更加山崩地裂海枯石烂房价上涨油价飞升的快。BFS 为什么叫这个名字?为了中文用户,不能三个词让他们一个也不懂吧? 好吧,这名字有点不雅,不过算是直爽。对了,据说 CK 也是看到上面我提到的漫画才开始剑走偏锋。真正有几个人用有上千 CPU 的电脑呢?为什么要为这种扩展性牺牲桌面性能。BFS 就在其间做了取舍,仅仅支持最多 16 个 CPU ,把问题外沿做小,让算法更简单精悍高效。作为原理来讲,这足够解释速度的来源。对于其它废问题, CK 专门写了一个 FAQ。在可以预见的将来,BFS 也不会进入 mainline kernel,说白了是取向问题。
关键问题是怎么用?
下 2.6.31 的 kernel 源代码,如果你不知道在哪里下的话就不必往下看了,在当前历史时期您还是搞不定的。再去:http://ck.kolivas.org/patches/bfs/ 下第一个 patch,现在是 2.6.31 开头的,表示适用该版本。解压内核源码,打上 patch,配置以后编译安装。现在 BFS 还在测试期,没有完全成熟,但已经相当可用。编译的时候有什么需要配置的?不需要, Scheduler 这东西太底层了,打上补丁就把原来的 CFS 替换掉了,没什么选项给你选。如果你非要问的话,不就图个快么,记着把配置弄到 1000Hz,开 preempt ,禁掉 dynamic ticks。编译重启不用说了,我可以酷酷的扔下一个 have fun 然后去玩 Mac 了,反正你机器启动不了不要找我。虽然我纯净 kernel 单加 BFS Patch 编译成功启动没问题,依然有一位倒霉的推油编译以后不知道怎么折腾的无法启动。可另外被我忽悠成功的推友们反应一致:“快!人能感觉得到的快!”
到底值不值得上手 ,有没有评测?
这是某些不够剽悍的读者会挣扎到最后的问题。BFS 原理上讲,机器配置越低,感受会越明显。如果你非要评测的话,Phoronix 这个专业的 Linux 测评狂网站也出了一份。我可以提前剧透结论,区别都很小,BFS 胜出绝大部分测试,然而优势不明显。我只是补充一下绝大多数折腾过的人的感受
——快 !人能感觉到的快!
{ source. Thanks Truth. }
Read More:
用了bfs之后的确感觉到系统响应变快了,但是一天之内死机了三次,只能放弃了……
不错,顶一个
桌面提速? 改进X的架构才是关键,不然治标不治本
希望linuxtoy以后多介绍些类似这样的新闻。
请问我建议用户amy后,查看amy的UID是501
删除amy用户后,再重新建立amy用户UID仍是501
为什么UID没有变化???
备注:没有修改过/etc/login.defs,建用户时也没有指定UID
这文章写得好!!浮一大白!
折腾过的白鼠都来说说~我等菜鸟不敢冒进啊 ^^
折腾过的白鼠都来说说~我不敢冒进 ^^ http://aur.archlinux.org/packages.php?ID=29842
文中倒霉的推友路过… 在gentoo-sources的基础上打bfs补丁,第一次重启后正常,第二次重启就不行了,进不了openrc…唉…
经常死机 +1,桌面卡死,毫无反应……
真的假的说, 当年打上CK补丁也没啥感觉啊~
就像扔掉人生的很多责任,人一样可以快活很疯狂一样
ck之类,剑走偏锋,虽然有不少好的成果,但毕竟上不了大雅之堂(比如BSD的core team)。 喜欢追求快、追求极致的朋友,还是读读《老子》吧
等着达人与小白鼠共同奋斗,我等只管等待最终成果。
推荐喜爱尝鲜的同志使用zen-sources.org的zen sources 其中包含了不少官方未包含的(实验性)特性(如reiser4,aufs2,nouveau drm,slqb,cko,compcache) 最近最新版的2.6.31-zen1已经包含了bfs 但是在其说明中有提到 * BFS is still for testing and has known problems yet, use at your own risk!
呵呵,留给爱折腾的人吧~
又好比 eglibc,真能拿到x86等系统上吗?很多的优化都是根据具体的内存等情况作出的调整,拿过来可能反而有问题,要嵌入式的空间优点,那么glibc自称的很多优化就要舍弃。又比如,基于比较的排序,随怎么优化,也不会快过 O(nlogn)
@well: 神仙你好,神仙再见。这世界都TM疯狂了,您就继续跟老聃同学探讨吧,下一个千年再出来吓人比较合适。
@well
O(xxx)这种是理论值。就算同样数学描述的算法,写成程序也会有很多不同。比如编译器完全不做优化的话,x += 256 就比连续256个 x++ 要快。
文章透出的情绪很狂热,对程序作者大段介绍,对其作品却几笔带过... 没看出什么有用的内容。
这个还没正式,不用
archlinux+openbox T60的硬件应该不用这东西了吧,啥时候旧货市场淘宝一个二手货再尝试~
@well: 也就排序这种东西知道是O(nlogn),其他的就算是矩阵乘法目前都不知道下限是什么~
没试过,等进mainline再说吧。我需要稳定。
这篇东西贴的到处都是了
快,是有心理作用的吧,折腾半天,不感觉到快,对不起自己编译的动作啊。呵呵。
ck is back!
兩年前(2007)ck離去時的訪談:
http://apcmag.com/6762/interview_with_con_kolivas_part_2_his_effort_to_improve_linux_performa
Very good!
服务器内核和桌面内核还是分开定制好,也许这个BFS发展成熟后桌面发行版会编译进桌面内核。
今天貌似到处都在热播这条新闻啊!
机子比较破,费了很长时间编译内核, 感觉是快了不少, 不过不知道是不是心理作用
好文章 先看大家的試驗報告再用,就想把firefox用順點。
ck回來了嗎?
之前在 Phoronix 上看到过这个评测,的确如作者所说优势不明显,部分还有不足。
个人感觉这个东西还是跟目前的 BtrFS 一样,处于前期实验:按照设计来讲会有巨大性能提升,但是还有不少实现上的问题需要解决。
至于到底用户感受到快没有,留待双盲测试说话吧……
奇文佳作啊!!! 看得我热血沸腾……
这个感觉像神一样,都是狂热介绍人。依据@majia321的链接,测试了一下,实在没有感觉快,我的那e17还是那样的有点卡。
已经打上BFS补丁了,没啥特别感觉
看来我水平太差了 第一眼看上去脑子里想到的是blfs
草它丫的,好久没有看到这么生动的文章了.潜水一年半载的浮上来祝贺一下
真巧啊,我昨天在Phoronix上看到的(那时toy还没发呢),就马上打上补丁试了一下。真的是像打了鸡血一样。的确实验性质很强还有BUG,不过响应的速度真的很疯狂。稳定一些之后对桌面用户来说就完美了。看完了CK写的BFS FAQ看样子真的是个革命性的东西,在桌面应用方面调度器的设计还有很大的改进空间。
打上补丁,编译内核 没差别...启动时的速度还更慢了...
@rorot: 同意,我也觉得是
Compiling....
楼主写的很棒。但是我还是没被你忽悠去用bfs
不错。 可惜,稳定对我最重要。
在 LT混了这么久,就这篇文章最有意思。
回去试了试…… 在我睡着前还没编译好,早上起来看编译好了,装上,改个menu.lst 顺利启动了。但是X没起来。看AUR上有nvidia-bfs,说我内核版本太高,nvidia-bfs-beta,在装好nvidia-utils-beta后就出错退出了。搞不定,接着用默认内核。
估计对响应速度改善有影响,上面的希望它提升启动速度的,估计没戏
.....内核原码几百M,编译时把我的硬盘空间全占没了……
always say:“ No space left on device”
@mongolia 如果你是第一次使用 linux ,应该了解一下用户管理,uid 如果没有指定就是系统自动按顺序生成的,Fedora/Redhat 体系中,1-500为系统保留,Debian体系为1-1000,也就是说,在Fedora上新建用户 uid 默认是从 501 开始的,当然可以创建用户时可以指定uid的。
@ሙሪሙሪ ያስናሜኢል ሞቭፒት ሲለኢስ ፕልክፍታርሩ: 你的ID好神奇~
@ext- 这辈子老聃就会告诉你做事的原则,试试下次挑战2小时内一次吃5亿个正常包子,做到了再说我们吓你吧
无聊的讨论,这也是我离开一些地方的原因,一群自以为是的东西
好文 不过说不好也会进入mainline。。。slob不也是进入mainline了么。。。
正常工作鸟,不知道会不会死机
@ext- 说过头了,抱歉,当我胡言乱语,静默中
呃 这么多人死机 都不敢用了 我要的首先是稳定~
已经用上了,感觉超级快!!!! 人能感觉到的快!!!!
用上了!! 快!!!!
花了2个小时编译成功,确实快
没有想像中快!
Ubuntu 9.04 w/linux 2.6.31 已经打上BFS补丁, 有感觉的变快, 但开机变很慢 ....
因为才刚用,所以不能很确定,现在观察到按启动图示的时候,图示zoom out效果的确明显变得快了.... Firefox冷启动也能感觉到快了,但Bookmarks, awesome bar 的速度跟不上,明明Firefox已经开好了, 鼠标按上bookmarks或网址列的时候, 要延迟一下子才出来, (出来之后就都变快了)
才用了一下, 死机还没发生过,希望不会发生
用Gimp开大图档应能感觉到有无bfs的差异, 开Gedit也是, 没用BFS时,sudo打开gedit时鼠标会变等待图示(转动的圆形), 虽然只是一瞬间,但仍看得见鼠标有变成等待图示,用了BFS之后, 开Gedit启动时看不到鼠标有任何变化, 啪的一下就喷出来了, 我是2004/2005年左右的硬件, P4 2.4G, 1GB RAM. (可能较新的硬件会比较感觉不到BFS的速度优势)
编译成功,运行一段时间以后就锁定键盘,鼠标倒是没有问题。
BFS-240版patch昨天放出....
原在opensuse 11.1用2.6.31 desktop kernel上bfs patch有時候會hang住!看bfs-todo-bugs可能是因為i915 graphics(硬體是965GM),昨天改用240到現在...活的很好! ^_^
BFS 代码好简洁啊 ....
就应该这样! 已经更新到 240 了,呵呵
BFS-240 开机卡住很久的问题修复了
[問卦] 有沒有bfs patch衝到300的八卦?
bfs 开到 310 了,呵呵,人能感觉到的快!!!
本来没放在心上,前几时把自己的G2手机刷了系统后,再刷上打了bfs补丁的kernel,简直象喝了v-blood一样,把窗口动画打开,刷刷的,真舒服。今天把桌面系统也打上了bfs,用几天感觉感觉。
打了补丁,发现一般时候是很快,但是一旦有磁盘操作就整个系统就非常卡,cpu占用率变高。还是回到标准内核了,舒服多了,唉……