Linux 内核开发报告 2017 版

2017-11-01 18:50


正如文中所说,Linux 内核无论从那个角度来看都是值得研究的对象,社会、人文、协作、工程、管理、技术本身等等。如此看来,这是人类非常了不起的创造!值得上帝为之惊叹!令所人赞扬、尊敬的工程。

摘要

全球公有云上运行的负载有 90% 是 Linux 操作系统,在嵌入式市场的占有率是 62%,而在超算的市场占有率更是达到了 99%,还有,它运行在世界上超过 82% 的智能手机中,也是所有公有云厂商的主要支撑服务器(90%)。

这一组百分比的数据能够激发你什么样的想象?这么形容,你觉得是否合理:“几乎整个(移动)互联网以及支撑它的云计算和大数据,都是由 Linux 来负责掌控的。” 这样一个神奇的系统的开发方式是什么样的?已经经过了 26 年的发展,它是如何保持活力的?庞大的社区又是如何协作的?我们不妨来解读一下Linux基金会刚刚发布的Linux内核开发报告2017PDF 在此下载)。

我很荣幸能够在 Linux 社区和一些具有高水准的人打交道。 –Julia Lawall(来自 Inria 的高级研究员如是说)

Linux 项目的现状

本次的报告,所统计的数据是从内核的 4.7 算起,到 4.13 止,先看看Linux都增加了那些新的特性吧:

  • 透明 Huge 页现在可以支持基于文件的页,以及可编程的数据的页,可以更加高效的利用内存。
  • 内核的文档系统切换到了新的工具链,即 Sphinx:为了更好的组织和加强内核的文档。
  • 内核的核心计时机制,被替代为新的更加高效。
  • 网络栈中的“易捷版数据路径”机制的实现,可以处理用户 BPF 程序负载的高速网络包。
  • BBR 拥塞控制算法改善了多种设置中的网络性能。
  • ……

以及更多的驱动、更安全、更多的测试。

当你的代码是运行在数十亿台设备上的时候,感觉真的不一般。 ——Jens Axboe(Software Engineer, Facebook)

都有谁为 Linux 做的改变?

自从进入 Git 时代(即 2005 年 2.6.11 发布之后),共有 15,637 名开发者为 Linux 内核的开发做了贡献,这些开发者至少是来自 1,513 家公司。

尽管那些独立的开发者看起来是很多,但其实是少部分人做了大量的工作,在几乎所有的开发周期中,大约有 1/3 的开发者,每人仅贡献一个补丁。自 2.6.11 版本之后,贡献最多的前十位工程师,他们加起来的贡献有 45,338 次改变,大概占了总数的 7.1%,前 30 名加起来的贡献是 16%。他们的名字是:

Linux 仍然是存在这个人英雄主义色彩的,是的如此庞大的系统,必须是群体智慧的产物。但是精英们、英雄们付出了他们智慧与努力,理应得到荣耀。

我一直以来都喜欢底层的软件打交道,因为他们靠近硬件的边界。 ——Kees Cook(Software Engineer, 来自Google)

都有那些公司为 Linux 做了赞助?

没错,你能想到的 IT 公司基本都是 Linux 的贡献者,他们雇佣开发者专门来对内核进行开发,有芯片厂商如 Intel、AMD、ARM、TI 等,也有互联网巨头 Google、Facebook,是谁并不重要。

正如有的评论家称,无论哪家公司,若是去说开源对于他们的发展相比于他们的贡献都是不成比例的,无论怎么反馈都是他们有利。商业公司考虑的因素更多,但是不能失去内核,内核的开发无论其处于何种目的。都是应该的。拿 Intel 来说吧,即使 Intel 在过去的一年贡献率达到 13%,但相比于它的营收,这点都是微不足道的。

开源固然感激商业公司的赞助,但是反过来,商业公司更应该感激开源能够让他们有机会赞助,并赚取利润。

新的开发者

像很多的社区一样,或者更大范围的道理,很多人是浅尝辄止,从 kernel 的历史来看,在每个版本都会有新人提交那么一个或几个 patch,然后绝大多数人都离开了,只有少部分人留下来。目前社区的贡献者人数是:4,319,而其中过去一年中的新人有:1,670 位。另外,新人们所提交的 patch 均是设备驱动,按照数量排名依次是:网络驱动、文档、显卡驱动、USB 驱动、和声音子系统。

这样我们可以有一个直观的推论,那就是能上手内核开发的,并没有传说中的那么难,更难的在于坚持下来一直去做。当然,这一点,有商业公司的支撑会好很多。

谁在做着 Review 代码的工作?

到现在你是不是还没有看到 Linus Torvalds 的名字?

Linux 作为最大的开源项目之一,不是随便的无章法的,每一个补丁并非是直接就能进入主干的,而是要经过很多个子系统的。而每个子系统都是有对应的维护人员的,这些维护人员要审核人们的提交。每个补丁经过这些维护者审核之后,都会加上 “Signed-off-by”,这意味着这个补丁可以进入内核。分析内核代码时,关注 “Signed-off-by”,你就能明白都有谁是内核的守护者。

没错,Linus Torvalds 现在就是其中之一,由他本人 “Signed-off-by” 的补丁在过去的一年中有 207,占总共的 0.3%。

Linux 在 26 年以来所学到的

很少有开发项目能够拥有这么久的历史,大多数的项目在经历了如此长的历史之后,都会有“稳定状态”这样感觉,会有日薄西山的感觉。但是 Linux 内核没有这样,26 年了,它依然保持活力和旺盛的生命力。是的,有很多的学术研究 Linux 社区的成功之处,但是在我们彻底的将它搞明白之前,我们先总结下我们的教训:

  1. 短的开发周期真的很重要。
  2. 流程的可扩展性需要一个分布式的、层级的开发模式
  3. 工具很关键
  4. 强烈的共识导向模式非常重要。要作为一般规则。
  5. 内核还有一个相关的因素是“无回归”规则。
  6. 企业的参与在过程中蛮重要。
  7. 项目内部不应有边界。

以上这 7 点,对于任何的大型开源都有重要的参考价值。26 年,内核用实际行动告诉我们,持续、合作的努力能带来巨大的共享资源,这本身没有任何一家单独的公司可以做得到。

开源之道点评

Linux 迎来了巨大的成功,所有人都直接或间接的受益于它。Linux 现在成了几乎整个IT领域的基石,当下发展的多数技术如云计算、大数据、IoT、机器学习,默认都是以 Linux 为基础,向上构建。然而就是这样的技术,其背后 26 年尤其是前 13 年,走过的曲折道路,艰辛道路。让我们重温下 1998 年的开源人物合影:

但是从技术和工程、协作、治理的角度讲,Linux 内核是人类史上的奇迹。其背后蕴含的哲学、方法都是我们值得挖掘的宝库。

Linux 基金会所做的报告,看起来都是非常成功的数据。但是要知道,微观上是那些开发者殚尽竭虑、夜以继日的工作、调试、试验、沟通的结果,4319 人共同打造的艺术品。难道这本身不应该被铭记和尊敬?感谢你们!