» «
开源社区就业实训基地

RSS订阅


    抓虾    pageflakes
    Rojo    google reader
    netvibes    my yahoo
    newsgator    blogdtnes
    鲜果    哪吒
    有道

开源社区正挑战Linux内核开发的极限速度

来源: LUPA开源社区
发布时间: 2007-11-19 09:51 作者: 安迪编译 来源: IT专家网 版权申明 向LUPA投递新闻

字体: | 上一篇 下一篇 | 打印


文章来源于http://www.lupaworld.com
  要能忍受批评

  一个新功能要想被采用,可能会经历漫长而充满挫折的过程,Linux内核近期最重要的收获——新的调度器——就是其中一个例子。这个内核调度器想把Unix系统的公平和分时特性与实时操作系统的抢占和快速中断特性结合在一起,前者能处理更多的任务和用户,而后者能快速响应突发的事件。在商业化的操作系统中,这两个特性往往被作为不同的功能来实现,而Linux试图把它们同时实现。

  内核代码的贡献者们已经花费了许多年进行调度器的开发,但其中一名开发者——澳大利亚的医生Con Kolivas今年夏天在整个开源社区掀起了一阵波澜,因为他在《澳大利亚个人电脑》杂志上发表了一篇引起热烈讨论的文章,讲述了自己为什么沮丧地退出了 Linux开发。

  他此前为2.6.23版内核编写了称为“-ck patchset”的代码,由Ingo Molnar负责审阅。Molnar是红帽公司的一名开发人员,此前对多个调度器的开发做出了贡献,因此成为调度器领域受信任的专家之一。他发现 Koliva提交的代码在调度的实时性方面存在缺陷,于是基于这段代码编写了他自己的多用途调度器版本。这种对别人的代码修改后再发布的做法是通用公共协议(GPL)所倡导的,内核的维护者会尽力向代码的最初贡献者表示敬意。但Kolivas此前已经得知自己的代码没被接受,因此对这件事感到有些恼怒。

  Kolivas遇到了对每个开发者都会造成障碍的一种问题。他的设计思路是根据任务的不同类别去使用不同的调度器。Torvalds及其伙伴则信奉通过基本功能把事情一次做好,反对采用多种替代方式去做同样的事。他们认为这样能让软件的维护更简单,并让内核不同子系统之间的交互更容易预测。 Tornalds运用自己的影响力推广了这种架构原则,而在讨论新代码的邮件列表上,参与者也大多信奉这一原则。正是在这个列表进行的讨论中, Kolivas所写的代码经历了并不少见的惨败。“在Linux内核的邮件列表上,讨论者对其他开发者所写代码发表的言论可能比较刺耳,如果有人在一个商业公司里说同样的话,他很可能被解雇,”一直订阅该邮件列表的红帽公司产品管理负责人Joel Berman说。

  包含在2.6.23版内核的调度器叫做“完全公平调度器”(Completely Fair Scheduler),如果考虑到调度器开发过程中发生的各种妥协,这个名字实在有点儿讽刺。不仅是Kolivas感到生气,还有其他人想让调度器获得更好的实时性能,他们希望在明年能把这方面的改进添加到内核中。

  快速发展的虚拟化技术

  与围绕调度器所发生的长期争论相比,Avi Kivity的经历就简单多了。这位来自以色列的开发者提交了一个称作KVM的虚拟化引擎,其中包含了12000行的庞大代码包。代码贡献者在提交一个补丁的时候,如果能让内核开发人员和维护者知道自己的名字,会对自己更有利。但是“KVM的到来非常突然,”Morton说,“此前我从来没有听说过 Kivity本人或他的Qumranet公司”。

  Kivity把自己描述为内核邮件列表上的“长期潜水员”,非常喜欢读上面的内容,也熟悉高手之间的攻击和争论,但自己并没有提交过太多代码。他按照自己领会到的Linux内核标准去设计KVM,让熟悉内核文件系统的Linux高手们及时了解代码的最新进展,并及时答复内核维护者提出的问题和评论。KVM满足了Linux的一个重要需求,因为随着虚拟化技术受到越来越多的关注,Linux内核终于具有了相应的功能,可以利用Intel和AMD公司的芯片提供的虚拟化接口。KVM还巧妙地利用了内核调度器和内存管理器,对操作系统中的其它模块几乎没有影响。结果在去年秋天,KVM提交不到三个月就被加进了Linux内核。

  Morton说,添加的代码如果来自一位不知名的开发者和一个刚创立的公司,就会带来一定的风险,因为两者都可能消失,进而导致没人对这些代码非常熟悉。但考虑到这些代码的独立性,即使它们的开发被终止,其它开发者也能很方便地把它们从内核中移除。

  即使像KVM这样的代码被放进了内核,它们要想被添加到红帽企业级Linux和SUSE企业服务器这两个最主要的企业版Linux,也要延后一两年时间。(像红帽的Fedora和Novell的OpenSUSE这类“社区发行版”,其内核就更新得比较快。)这主要是为了进行广泛的测试和为技术支持做准备。许多企业级用户都对企业版Linux的稳定性感到满意,而不愿意使用功能最多的最新内核。

  不论如何,Linux在各种操作系统的竞争中跑在了前列,因为有一大批开发者正把各种新功能加进内核。这些代码贡献者可能是为了获取名声或满足好奇,有时则是为了得到薪水。在最近的28个月里,共有11个新内核被发布,其中可以识别的个人贡献者从479人增加到了838人。按照一般估计,每个在代码中留名的开发者平均获得了大约三到四个人的帮助。这意味着大约有三千人参与了Linux内核的每一次迭代更新。

  Linux的发展就是依赖于这个志愿者社区,尽管内核的维护者、也就是领导Linux各个子系统开发的高手们是由一些公司支付薪水,比如 Google、惠普、IBM、Novell和红帽。正是因为存在这个社区,Morton才会说在开发速度和可靠性之间没有一种“绝对的折衷”,因为只有让新功能尽快加入内核,才能在添加到商业发行版之前得到更好的测试。

  然而与来自商业公司的代码相比,这样的开发还是存在缺陷。“我不想把这种情况叫做‘不可预测’,但它确实无法保证一个交付日期,”Intel公司的Hohndel说,“因为Linux的代码一旦编写好就会被提交。”

  在接下来的两到三个月内,Torvalds将发布2.6.24版内核。这个版本包含的许多新功能是由数百名全新面孔的人员开发和测试的,他们没有参与过这个月发布的2.6.23版内核的开发。无法预知在新版本内核的诸多功能中,最后有多少会加入经过商业测试的Linux发行版。这实在不能算作人们通常所指的产品“路线图”。但起码到目前,这种开发方式还没有驶向错误的方向。
文章来源于http://www.lupaworld.com

声明:LUPA开源社区刊登此文只为传递信息,并不表示赞同或者反对。
22/2<12

查看全部评论(0)我来说两句 直接向LUPA提出您的宝贵建议

-5 -3 -1 - +1 +3 +5