关注了就能看到更多这么棒的文章哦~
Some 5.15 development statistics
By Jonathan Corbet
November 1, 2021
https://lwn.net/Articles/874283/
5.15 内核在 10 月 31 日正式发布了,code name 也就顺利成章地起名为 "Trick or Treat" 了。当时,已经有 12,377 个 non-merge changesets 合入了 mainline,净增了 322,000 行代码。请继续阅读来了解 5.15 kernel 中的贡献都来自哪些力量。
LWN 一直在阅读这类总结文章的读者应该会注意到 5.15 中的总 patch 数量相对偏少。确实,我们应该跟 kernel 之前的情况比较一下,就从 2019 年早期发布的 5.0 版本来开始吧:
Release | Changesets | Developers |
---|---|---|
5.0 | 12,808 | 1,712 |
5.1 | 13,034 | 1,707 |
5.2 | 14,024 | 1,716 |
5.3 | 14,605 | 1,846 |
5.4 | 14,619 | 1,802 |
5.5 | 14,350 | 1,885 |
5.6 | 12,665 | 1,712 |
5.7 | 13,901 | 1,878 |
5.8 | 16,306 | 1,991 |
5.9 | 14,858 | 1,914 |
5.10 | 16,308 | 1,971 |
5.11 | 14,340 | 1,912 |
5.12 | 13,015 | 1,873 |
5.13 | 16,030 | 2,062 |
5.14 | 14,735 | 1,912 |
5.15 | 12,377 | 1,797 |
可以看到,从合入的 changeset 数量来看,5.15 是在 5.x 时代里面最安静的开发周期了。要想找到一个比它的改动更少的版本,要回到 2016 年 8 月份的 4.7 版本了,当时有来自 1.582 位开发者的 12,283 个 changeset。这个周期的改动这么少,确实很意外,因为 5.15 基本上已经确定会是下一个 long-term support release 了。kernel 开发者经常会担心各个厂商把还没有准备好的代码急着塞到 LTS release 里面,不过这次看来没有这种问题。
也许这里的事实情况是开发社区正在疫情中期进行了一个短暂的休息。
Individual contributors
与此同时,参与到这次 release 的开发者的数量虽然比之前几个 cycle 要少,但是还是比 5.x 时代的某些 release 要多的。在 5.15 的这 1797 位开发者中,有 251 位是首次贡献者。这个数字偏低,不过跟之前几次 release 还是差不多同一个水平。本轮中最活跃的开发者是:
Most active 5.15 developers
By changesets Christoph Hellwig 252 2.0% Namjae Jeon 171 1.4% Takashi Iwai 161 1.3% Vladimir Oltean 138 1.1% Colin Ian King 131 1.1% Arnd Bergmann 119 1.0% Andy Shevchenko 109 0.9% Thomas Zimmermann 108 0.9% Geert Uytterhoeven 100 0.8% Michael Straube 92 0.7% Linus Walleij 91 0.7% Krzysztof Kozlowski 91 0.7% Pavel Begunkov 83 0.7% Sean Christopherson 82 0.7% Thomas Gleixner 82 0.7% Dan Carpenter 80 0.6% Phillip Potter 79 0.6% Bart Van Assche 76 0.6% Randy Dunlap 73 0.6% Christophe JAILLET 73 0.6%
By changed lines Phillip Potter 137584 17.0% Namjae Jeon 42483 5.2% Konstantin Komarov 32228 4.0% Christoph Hellwig 22177 2.7% Jin Yao 16772 2.1% Hu Haowen 13102 1.6% Trevor Wu 12407 1.5% Linus Walleij 11863 1.5% Zack Rusin 11163 1.4% Lukas Bulwahn 9211 1.1% Konrad Dybcio 8728 1.1% Takashi Iwai 7994 1.0% Vladimir Oltean 7024 0.9% Arnd Bergmann 6965 0.9% Fabio Aiuto 6864 0.8% Kumar Kartikeya Dwivedi 5493 0.7% Quinn Tran 5319 0.7% James Smart 5287 0.7% Matthew Brost 5219 0.6% Iskren Chernev 5176 0.6%
Christoph Hellwig 这轮是贡献最多 changeset 的人,他仍在对 block 和 SCSI 子系统进行深入地重构,偶尔也会涵盖一些其他工作,比如移除了 m68k 架构中的 set_fs()。Namjae Jeon 是在对新增的 ksmbd 文件系统实现进行贡献,Tkashi Iwai 继续作为 sound 子系统的 maintainer 进行贡献,Vladimir Oltean 对网络驱动进行了很多改进,Colin Ian King 在 kernel 代码中进行了许多小清理。
这一轮里修改了最多行代码的人是 Phillip Potter,他增加了 rt8818eu wireless network driver。Konstantin Komarov 在做 ntfs3 filesystem driver,Jin Yao 对 Intel 许多 subarchitecture 添加了 perf event 支持。
内核项目非常依赖 tester 和 reviewer,他们的贡献不亚于开发者们。在 5.15 cycle 里面,进行了最多的 test 和 review 工作的人是:
Test and review credits in 5.15 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
很多对 kernel test 进行了贡献的朋友一般在我们社区里面没有怎么看到。我们只是从一些公司的内部 review 流程里面打上的 tag 来看到的。很多公司都有这个流程,不过他们并没有都通过 patch tag 方式来记录这些工作。review tag 也有类似的情况,不过这次不是这么回事。review 最多的参与者在 kernel 项目中都有一些不同的职责。比如这次 review 最多的人(Christoph Hellwig) 就是这次贡献最多 changeset 的人。
Employers
5.15 的开发工作中可以看到有来自 213 个公司的身影。其中最活跃的公司是:
Most active 5.15 employers
By changesets Intel 1216 9.8% (Unknown) 958 7.7% 718 5.8% (None) 687 5.6% Red Hat 633 5.1% Linaro 577 4.7% SUSE 553 4.5% AMD 504 4.1% Huawei Technologies 465 3.8% NVIDIA 368 3.0% IBM 349 2.8% (Consultant) 306 2.5% 305 2.5% Canonical 275 2.2% NXP Semiconductors 264 2.1% Oracle 255 2.1% Renesas Electronics 236 1.9% Samsung 214 1.7% Arm 193 1.6% Linutronix 147 1.2%
By lines changed (None) 166216 20.5% Intel 79492 9.8% (Unknown) 50642 6.2% Samsung 46431 5.7% Linaro 35003 4.3% Paragon Software 32228 4.0% Red Hat 24395 3.0% (Consultant) 23610 2.9% AMD 22864 2.8% NVIDIA 21705 2.7% 20215 2.5% MediaTek 19706 2.4% SUSE 19547 2.4% 13960 1.7% VMWare 13518 1.7% SoMainline 11581 1.4% Huawei Technologies 11070 1.4% Renesas Electronics 10557 1.3% NXP Semiconductors 10443 1.3% Broadcom 10202 1.3%
跟往常一样,这次也没有多少意外。Paragon Software 以前没有出现在这个榜单中,这次是因为对 ntfs3 的贡献。还有一个值得注意的是华为为 5.15 贡献了 465 个 changeset,虽然仍是很大数量的贡献了,但是比起在 5.14 中的 1,731 个 changeset 来说大大减少了。如果华为能保持 5.14 阶段的活跃度的话,这个开发周期比起之前几个的 changeset 数量来说就没有多少差异了。不过看起来列表中的几乎所有公司在 5.15 中的贡献数量比起 5.14 来说都要少。
Code longevity
最后,来看看这个有意思的数据,就是每个 release 里面有多少代码还在当前 kernel 里面存活着。这个数据是通过用 git blame 对 kernel 代码中每个文件进行暴力搜索,然后把每一行都对应到它第一次出现的 commit 上来获取的。对当前的 Git 历史进行这样的统计的话,看到的结果就是这样:
[plot]
绝大多数 release 中添加的代码在 5.15 kernel 中占据的代码比例都不超过 2%,5.15 本身新增代码占了总数的 2.1%。在 Git 刚开始应用进来的时候,也就是 2005 年的 2.6.12 release,kernel 就有了大约 1080 万行代码。大约 16 年过去了,那些代码中仍然有 230 万行(略少于四分之一)保留在 5.15 中,占现有代码的 7.2%。如果仔细看进去的话,会看到这些代码很多都是用单独的一行 "/*" 之类的内容,不过当然不是全部都是这样。比如说 kernel 中到现在还有 72 个文件自从 2005 年的第一个 commit 加入进来之后就从来就没有被改动过。
关于上图中其他比较显眼的那些 release,也能有一个比较直观的解释。比如 4.12,就包含了那些巨大的 amdgpu register 定义头文件之一,这些头文件估计会永远存在,并且也不会有任何人去读它们。5.3 和 5.9 的情况也类似。其他一些 release 的情况就没那么直观了,比如 5.6 里面加入了 ath11k 网卡驱动以及 WireGuard VPN ,不过光这两项没法解释为什么这么多代码还保留着。
5.15 开发周期中的新代码会在今后存活多久,现在还说不清。不过从上图来看,内核代码还是挺长寿的。许多代码会一直存在着,也许直到今后某天用 Rust 完全重写了。大家继续期待开发社区不断快速地添加和改动代码吧。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~