首页 > 系统 > Linux > 正文

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

2024-08-27 23:55:45
字体:
来源:转载
供稿:网友
  开源社区正以极快的速度向Linux内核中添加新功能,同时又在努力让修补bug的步伐跟上去。放慢开发速度看上去是不太可能的……
 
  Linux内核的最新版本已于本月发布,它展现了一系列令人眼花缭乱的变化。2.6.23版内核的发布距离上一次内核更新只有三个月,它添加了适合商用的新功能,包括对虚拟化技术更好的支持、对极其重要的调度器(scheduler)的更新以及新的设备驱动程序和bug补丁。
 
  每隔两三个月就能从Linux Torvalds负责维护的“代码树”上看到大量的变化,这显示出Linux内核的开发速度在不断加快。到目前为止,这个开发过程产生了不可否认的高质量可靠代码。
 
  但你也许没想到,Torvalds正在把开源开发的速度推向新的极限。随着Linux内核的规模和复杂度不断增大,这种快速迭代的更新对负责测试和修改bug的志愿者社区带来了极大压力。
 
  Linux平均每天增加2000行代码,尽管Trovalds的目标是限制加入内核的代码数量,以便让它尽可能高效。Linux的模块化内核是这个操作系统的核心,负责处理所有的通用任务,例如内存管理、CPU调度请求和输入输出。它的周围是数百个附加软件包,用来完成更具体的任务,例如在 Linux和Windows系统之间传输文件,或是对文件进行配置以便通过Apache Web服务器显示出来。但是内核必须不断发展,以便处理更多的功能和硬件,满足更多用户的需求。Linux在1991年刚诞生时只是操作系统爱好者写出的 10250行代码,目前的代码则超过了八百万行。
 
  有人认为,Linux内核平均每小时增加86行代码的速度正在超越软件开发的极限。Linux的一位关键维护者Alan Cox已经警告说,一些设备驱动程序的修改在加入内核之前应该经过更多的测试。Andrew Morton是一位杰出的Linux开发人员,在被Torvalds任命为Linux内核的负责人之后有了“内核上校”的绰号。他对Linux未经修改的 bug问题也发表了坦率的看法。“我希望开发者能用更多的时间去修补bug,而用更少的时间去添加新功能,”Morton说,“这是我的个人意见”。
 
  然而在最近于英国剑桥举办的Linux内核峰会上,Torvalds说自己在过去犯了过于谨慎的错误。他认为缓慢的内核发布将导致Linux的发展受阻,因为各种新功能都等着被添加到内核中。如果没有及时获得内核维护者和受信任的开发高手的反馈,社区的贡献者们就会失去继续提交代码的兴趣。 (Torvalds没有对我们的采访要求做出回应。)
 
  在加快Linux内核的开发速度上,Torvalds有些做过了头。他依赖于一个基本的开源思想:相对于更有组织的软件测试,大量用户对频繁发布的代码进行测试更有可能发现软件的缺陷。添加到内核中的新代码一旦在某些硬件上无法运行,或跟其它程序——不论是内核中的还是内核外的——发生冲突,就会导致Linux出错。当新代码出现bug的时候,人们都指望当初提交这些代码的开发者去解决bug,但他们通常没去解决。
 
  “在快速的开发过程与完备的代码审阅之间,正在形成一种极其微妙的平衡,”Intel公司负责Linux和开源技术的主管Dirk Hohndel说。即使在目前这种飞快的开发进度中,开发者想添加或用户有需求的功能也不是样样都能加进内核。
 
  Linux的商业用户对这个过程可能感到沮丧。对于欧洲的旅行服务商Amadeus公司来说,Linux是其减少IT基础设施成本的战略关键。该公司负责技术和战略规划的副总裁Fred Bessis说,通过淘汰大型机系统,然后在“廉价的硬件”上运行Linux,该公司减少了大约10%的设备开支。该公司采用Linux已有超过十年的经验,它了解Linux目前的状况,也目睹了潜在有用的新功能通往Linux商业版本的漫长过程。
 
  Amadeus公司的高级系统程序员Holger Weisbrodt说,新的硬件和驱动很快就能在内核中使用,但新的bug诊断和调试工具“需要很长时间才能被加进内核”。他希望Linux内核开发者能对常用的bug调试工具更加关注。
 
  Linux新版内核的开发过程就展示了这种不可预测性,具体表现在它所包含的两个新功能上:新的调度器和改善了的虚拟化支持。这两个功能与内核完全沿着不同的开发路线,分别都有自己的风险和复杂性。
 
  快速发展的虚拟化技术
 
  与围绕调度器所发生的长期争论相比,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发行版。这实在不能算作人们通常所指的产品“路线图”。但起码到目前,这种开发方式还没有驶向错误的方向。
 
 

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表