剑锋Jianfeng's profile行行摄摄PhotosBlogListsMore Tools Help

Blog


    September 08

    挑战开发极限

    2007/11

    开源社区在拼命修复缺陷的同时,也在推动内核新功能的迅猛发展。让开发减速看来不太可能。

    本文转自:信息周刊http://www.informationweek.com.cn/iarticle/iarticle.asp?articleid=3663 

    最新版Linux内核在本月发布了,同时带来了令人瞩目的诸多变化。内核2.6.23的发布距离上个内核版本发布仅3个月,它整合了对商业应用的良好支持,包括更好的虚拟化技术和重中之重的进程调度升级,当然还增加了常见的新设备驱动和缺陷修复。

    Linux掌门人李纳斯•托沃兹(Linus Torvalds)的“代码树”里代码的数量每隔两到三个月就迅速增加,展现了越来越快的内核开发速度。到目前为止它产生的代码仍然是高质量和可靠的。

    但别误以为托沃兹要把开源的开发策略推向新极限。因为随着内核大小和复杂度的日益增长,快速的迭代周期会对社区测试人员和查找缺陷的志愿者带来压力。

    但有两个因素使托沃兹不能让开发团队丢失了士气。首先,Linux在技术上不能落后,否则它会失去那些挑剔的商业用户。例如新内核对英特尔公司 (Intel)和AMD芯片内置虚拟技术的支持。第二个原因是Linux需要为它的开发者社区提供新鲜感。新的功能特性使程序员免于厌倦,以继续新项目的 开发,这样才能吸引新的优秀程序员,否则他们就有可能因失去兴趣而退出。

    尽管Linux新功能路线图(road map)并不正式也难以预测,但在既要维护质量和稳定性,又要添加新功能特性的压力下,它已蓄势待发。这个已经16岁的开源项目是否能以现在的辉煌再继续 维持下一个16年呢?“没有其他任何开源项目能达到这么大的规模和保持这么快的速度,”一直留意内核开发的国际商业机器公司(IBM)副总裁丹•弗莱 (Dan Frye)的结论是,“它具有第一流的开发人员社区。”

    商业用户需要在这一片混乱中提高Linux的各个方面,除了虚拟化以外,还有电源管理和安全等问题。大多数商业客户使用Red Hat和Novell公司发行的Linux版本,这些Linux厂商可能需要两年才会把快速变更的新内核整合到商业版本中来,这使疯狂的内核开发过程获得 了一个缓冲。然而,内核的变化就代表着Linux的未来。

    速度和质量

    尽管托沃兹以限制加进内核的代码数量为目标,尽可能保持内核的高效性,但Linux每天收到的代码数平均为2000行。Linux模块化的内核是该 操作系统的核心,它处理各种常规任务,如内存管理、CPU请求,输入/输出。在内核之外是数百个可实现各种特定功能的额外软件包,如在Linux和 Windows之间进行文件转换,配置Apache Web服务器以显示文件。但内核需要不断发展以实现更多的功能与支持更多的硬件和用户数。这个在1991年只有12,250行代码的业余作品,现在已拥有 超过8百万行代码了。

    有的人认为现在内核以每小时86行的速度增长已超过软件开发的速度极限。主要维护者之一艾伦•克斯(Alan Cox)警告说某些设备驱动程序在加入内核之前应该进行更充分的测试。资深程序员安德鲁•莫顿(Andrew Morton)在被托沃兹指定为内核总管后得到的绰号是“内核的核心”,就公开批评Linux未能及时修复缺陷的问题。“我宁愿大家花更多的时间在修复缺 陷上,而不是忙着加入新的功能,” 莫顿表示。“我个人持这个观点。”

    但最近在英国剑桥召开的Linux 内核开发者峰会上,托沃兹暗示道,他认为自己以前过于谨慎了。

    缓慢的内核发布会引起提交处理过程停滞,要进入内核需要等更长的时间。志愿者会因为没能从内核维护人员和受信任的专项开发人员那获得及时回馈而变得心灰意冷。(托沃兹不愿意接受我们的采访请求。)

     

    回到加快Linux开发速度的话题上来,托沃兹依赖于开源的基本原则,即频繁发布的代码应该通过更多的用户测试而不是通过更结构化的测试流程才能发 现缺陷。无论是在内核里面还是外面,Linux的缺陷都是普遍存在的,内核在某些硬件平台上可能无法工作,甚或导致其它软件崩溃。提交代码的开发者理应修 复与这些代码相关的缺陷,但他们往往无法做到。

    根据Linux基金会(Linux Foundation)公布的资料显示,内核开发人员乔纳森•科贝特(Jonathan Corbet)说在这个会议上,莫顿表示自己想任命一个“刁钻难弄的人”担任内核缺陷管理员,由此人确定缺陷的归属和“督促不修复缺陷的开发人员。”最后 娜塔莉•波塔塞维奇(Natalie Protasevich)被委任为缺陷管理员,莫顿表示尽管她还达不到自己原先期望的那种性格,但她会强化缺陷修复的纪律。在Linux内核的 Bugzilla(缺陷管理软件)数据库里原来有1500条缺陷提交,现在已经减少到1400条。

    Intel主管Linux和开源技术的德克•亨德尔(Dirk Hohndel)表示,“快速开发过程和完整代码审核之间已经变成一门非常复杂的平衡艺术。”然而甚至在快速发展的阶段,也不是开发人员想要的每个新功能或商业需求都能直接进入内核。

    Linux商业客户对这个过程可能会不满意。位于欧洲的旅行社Amadeus的技术和策略制定副总裁弗莱德•贝希斯(Fred Bessis)分析说,Linux使基础架构上的成本降低了10分之1,所以他们放弃了大型机系统而在 “廉价硬件平台”上运行Linux。Amadeus已经拥有10年的Linux使用经验,它非常了解Linux,并期望那些潜在可用的新功能能逐渐被加进 商业版里去。

    Amadeus的高级系统程序员霍尔格•魏斯波特(Holger Weisbrodt)认为新的硬件和驱动通常能很快进入内核,但新的分析和调试工具“却要花很长时间才能加进来。”他期望能看到更多对常规调试工具的倾斜。

    这次的Linux内核版本发布就充分展现了Linux开发过程中的不可预测性,因为它包括两个新功能,即新的进程调度器,同时加强了对虚拟机的支持,这使内核的变动非常大,无疑会引入风险和复杂度。

    需要厚脸皮

    要让一项新功能进入内核的过程可能具有很大随意性并会引起摩擦。这次发布里最重要的一项改进:内核进程调度也验证了这点。内核进程调度程序努力结合 Unix操作系统的均时、时间共享等特点因为这样能处理众多任务和用户;以及实时系统的抢占式快速中断机制,它对调度以外的突发事件能提供迅速的响应。在 商业操作系统里,这些都是突出的卖点。Linux企图两全其美。

    开发人员已经在调度器上进行了多年努力。但今年夏天,澳大利亚医生康恩•科里瓦斯(Con Kolivas)在一篇被广泛讨论的《澳大利亚个人计算机》(Australian Personal Computer)杂志的文章上宣称由于在开源社区里的不愉快,他退出了Linux开发组。

    康恩•克利瓦斯为内核2.6.23编写的代码为编号“-ck”的补丁集,他的代码由Ingo Molnar(不知道怎么译成中文名)进行审核,Ingo Molnar是受雇于Red Hat(红帽)公司的开发人员,因为之前几次对进程调度器的提交,他成为负责调度器的Linux专家。他发现科里瓦斯的代码在实时调度上还有缺陷,但仍然 把它用到自己开发的多用途调度器了。这样借鉴和使用他人的代码是Linux的通用公共许可证(General Public License)所鼓励的,而内核的维护者也会尽量把功劳归于贡献者。但自己提交的代码被拒的科里瓦斯却觉得这个事情令人难以接受。

    科里瓦斯碰到的问题可能是程序员们都会碰到的障碍。他设想为不同的任务安排不同的调度器。但托沃兹和他的同事们所持的理念是,用简单的方式把任务一 次完成并完成得干净利落,而不是再引申出其他的方式来做。那样能使维护更简单,在内核不同子系统之间的交互也更容易预测。托沃兹对Linux架构推行这套 理念,讨论新代码的邮件列表上的参与者也是这样的观点,导致科里瓦斯的代码受到了邮件列表参与者的攻击。“如果在商业公司里发表Linux内核邮件列表上 对其他开发人员代码的评论,你很可能会被解雇,” 一直关注邮件列表的红帽公司产品管理主管乔伊•伯尔曼(Joel Berman)评论说。

    最终加到2.6.23内核里的是Ingo Molnar的完全公平调度器(Completely Fair Scheduler),而不是CK的SD调度器,完全公平调度器的名字有点讽刺意味,因为它需要牺牲其中一个调度器。和Kolivas的郁闷相仿,那些希 望获得更好实时功能的人也不满意。他们希望明年Linux 内核能在前端性能上获得提高。

    虚拟化驶上快车道

    和在调度器上的纷争形成对比的是以色列开发者艾维•吉维提(Avi Kivity)的故事,他提交了一个庞大的1万2千行代码的KVM(基于Linux内核的虚拟机,Kernel-based Virtualization Driver)虚拟化引擎。他再次提交补丁时引起了内核开发者和维护者的注意,“KVM完全是凭空冒出来的,”莫顿回忆说。“我以前从未听说过他和他的公 司Qumranet。”

    Kivity形容自己是Linux内核邮件列表里的“深度潜水员”,他非常热切地阅读列表,熟悉里面的技术专家们和讨论,而自己却没有提交太多的代 码。他根据自己对内核标准的理解设计了KVM,并使内核文件系统专家们对他的代码开发进度保持了解,并对内核维护者的问题和评论给予迅速回复。KVM迎合 了Linux的一个重要需求,即对虚拟化技术日益高涨的兴趣,它为内核提供了支持Intel和AMD 虚拟化芯片的功能。它技巧的利用了内核的调度器和内存管理,却对操作系统的其它部分影响很少。所以结果就是到去年秋季 KVM在发布不足3个月后就进入了内核。

    莫顿表示,把来自这样一个鲜为人知的作者和初出茅庐的公司的代码并入内核无疑是个冒险。因为无论个人和公司都可能消失,导致代码无人维护。不过因为KVM代码的相对独立性,如果它真的失去了生命力,开发人员只要简单地删除它既可。

    即使象KVM这样的代码能加进内核,但要等到最领先的两个商业发行版Red Hat Enterprise Linux和SUSE Linux Enterprise Server把它加进来可能还要1-2年。(“社区发行版”如Red Hat 的Fedora和 Novell的 OpenSUSE的更新倒是很迅速的。)因为这需要广泛的测试和支持。许多商业公司更欢迎稳定性,所以愿意花时间等到最新最好的内核。

    但Linux走在了前面,也许为了名誉、好奇心甚或金钱,开发人员积极地为内核添加新功能。在最近的28个月里共发布了11个版本的新内核,可统计 的独立提交人数从479人跃升到838人。平均来说,任何一个对代码有共享的人,后面可能需要3到4个人为他提供帮助。这意味着在每个内核迭代周期有 3000左右的人参与了。

    即使现在的内核维护人员、主管Linux各子系统的高级开发人员由谷歌(Google)、惠普(Hewlett-Packard)、IBM、Novell和红帽等商业公司支付薪水,但Linux的发展主要还是靠社区志愿者。

    正是由于社区的存在,所以莫顿才认为在开发速度和现实之间,并不存在“直接的冲突”,因为尽快发布功能就是使它们先面世备受考验,然后才可能进入商用。

    然而,和商业产品比起来,Linux仍然具有缺陷。“我不能说无法预期,但你确实没法保证它的发布日期,” Intel的亨德尔认为。“Linux的代码在准备好的时候就发布了。”

    再过2到3个月托沃兹将会发布有诸多新功能加入的2.6.24内核,并经没有参与本次发布的几百名程序员测试,但无人知道将有多少新功能最终可以进入商业测试版。这的确不是一个正式的产品“线路图”。但到目前为止,它也没有把商业引入歧途。(译/朱筱丹)

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://bg4byw.spaces.live.com/blog/cns!DCE5982D19D33DB8!607.trak
    Weblogs that reference this entry
    • None