LWN:5.18 开发周期数据分析!

共 2979字,需浏览 6分钟

 ·

2022-06-07 22:29

关注了就能看到更多这么棒的文章哦~

Statistics from the 5.18 development cycle

By Jonathan Corbet
May 23, 2022
DeepL assisted translation
https://lwn.net/Articles/895800/

5.18 版内核在经历了 9 周的开发周期后于 5 月 22 日发布。这说明又到了该看看这次 release 背后的一些统计数据的时候了,这是近期最繁忙的一次 release。请继续阅读来了解 5.18 内核中的代码都来自哪里,以及是如何进入 mainline 的。

在 5.18 开发周期中,有 2024 名开发者提交了 14954 个 non-merge changeset,其中 289 人是首次给内核提供代码贡献。这些数字都不是历史最高值,尽管开发者的数量已经很接近迄今为止的最高值了(5.13 版本时的 2062)。这个版本中内核增加了 756,00 行代码。

对 5.18 贡献最大的人是:

Most active 5.18 developers
By changesets
Krzysztof Kozlowski2141.4%
Matthew Wilcox1641.1%
Christoph Hellwig1541.0%
Geert Uytterhoeven1400.9%
Ville Syrjälä1350.9%
Jonathan Cameron1190.8%
Andy Shevchenko1180.8%
Lorenzo Bianconi1170.8%
Vladimir Oltean1110.7%
Hans de Goede1100.7%
Martin Kaiser1100.7%
Colin Ian King1040.7%
Sean Christopherson1000.7%
Jakub Kicinski1000.7%
Christophe JAILLET890.6%
Michael Straube870.6%
Jani Nikula860.6%
Trond Myklebust810.5%
Eric Dumazet800.5%
Christophe Leroy800.5%
By changed lines
Leo Li22767619.4%
Qingqing Zhuo19775716.9%
Ian Rogers720086.1%
Alan Kao158141.3%
Ming Qian121761.0%
Linus Walleij88810.8%
Krzysztof Kozlowski88440.8%
Dimitris Michailidis87910.7%
Christoph Hellwig71650.6%
Matt Roper71140.6%
Jakub Kicinski70400.6%
Jacob Keller68770.6%
Geert Uytterhoeven60390.5%
Ranjani Sridharan57680.5%
Evan Quan52320.4%
Guodong Liu49440.4%
Mauro Carvalho Chehab48160.4%
Vladimir Oltean47760.4%
Brett Creeley46600.4%
Adrian Hunter46510.4%

Krzysztof Kozlowski 是为 5.18 贡献最多 patch 的开发者。他的工作主要是对 device-tree 的更新。Matthew Wilcox 成功地合并了另一组 folio patch。Christoph Hellwig 继续对 block 和文件系统层进行大规模重构。Geert Uytterhoeven 为 Renesas 的 pin-control 代码进行了大量的改进,Ville Syrjälä 在英特尔 i915 图形驱动上做了大量工作。

在 "changed lines" 这一列中,Leo Li 仅用 5 个 patch 就为 AMD 图形驱动增加了超过 20 万行的寄存器定义,然后 Qingqing Zhuo 又添加了近 20 万行。Ian Rogers 对 perf 工具进行了一些改进,Alan Kao 贡献了一个删除 nds32 架构的 patch,Ming Qian 贡献了若干 Amphion media driver。

给所有 patch 进行过最多的 test 和 review 的人员是:

Test and review credits in 5.18
Tested-by
Daniel Wheeler15511.7%
Damien Le Moal775.8%
Konrad Jankowski544.1%
David Howells534.0%
Mike Marshall534.0%
Gurucharan382.9%
Marc Zyngier322.4%
Vladimir Murzin322.4%
Randy Dunlap211.6%
Jiri Olsa171.3%
Julian Grahsl161.2%
Yihang Li151.1%
Reviewed-by
Rob Herring2172.7%
Christoph Hellwig2042.6%
Andy Shevchenko1431.1%
AngeloGioacchino Del Regno1101.4%
Stephen Boyd1031.3%
Pierre-Louis Bossart1031.3%
Alex Deucher981.2%
Krzysztof Kozlowski961.2%
Hans de Goede911.1%
Péter Ujfalusi881.1%
Jani Nikula861.1%
Himanshu Madhani851.1%

Daniel Wheeler 继续提供了最多的 test 工作,他在许多 AMD 图形驱动 patch 中都加上了自己的 Tested-by tag。值得注意的是,Wheeler 不定期地发布对已经完成的测试的总结。Damien Le Moal 测试了许多 folio patch。Konrad Jankowski 在定期测试英特尔的网络驱动 patch。

关于 review 这一列,Rob Herring 在经常 review 那些 device-tree 的 patch。Christoph Hellwig 则 review 了许多 block 和文件系统子系统中的 patch–也 review 了一些 folio patch。Andy Shevchenko 则 review 了许多 driver patch,主要是在 I2C、GPIO 和 pin-control 子系统中。

过去我们这些数字经常持怀疑态度,因为它们并没有完全捕捉到到社区中发生的所有 test 和 review 工作,而且很容易被人利用。肯定还有很多工作没有反映出来,但是毫无疑问这些名单上的 test 人员和 review 人员肯定是不会错的。也许这反映了开发人员和他们的雇主(尤为重要)对这些活动的价值有了更多的了解。

对于 bug report 方面的情况就留给读者来判断了:

Top bug-report credits for 5.18
kernel test robot23219.3%
Zeal Robot766.3%
Syzbot726.0%
Abaci625.2%
Dan Carpenter292.4%
Hulk Robot272.2%
Stephen Rothwell262.2%
Igor Zhbanov191.6%
Randy Dunlap121.0%
Rob Herring90.7%

如今,bug report 显然是 robot 的工作了。但请注意,虽然有 2249 个(这是到目前为止的数字) 5.18 patch 被 backport 到 5.17 稳定版的更新中了,但只有 1075 个 patch 包含 Reported-by tag。这表明,有一半以上的 fix 并没有使用这些 tag。也就是说可能有不少 bug report 都没有记录好该感谢谁报出了这个问题。

在这个开发周期中贡献最积极的雇主是:

Most active 5.18 employers
By changesets
Intel170811.4%
(Unknown)11557.7%
Red Hat9586.4%
Google8865.9%
(None)8185.5%
AMD7815.2%
Linaro5603.7%
Huawei Technologies4713.1%
Facebook4463.0%
NVIDIA3962.6%
(Consultant)3632.4%
SUSE3442.3%
IBM3342.2%
Oracle3252.2%
Arm2942.0%
Renesas Electronics2621.8%
MediaTek2491.7%
NXP Semiconductors2361.6%
Canonical2271.5%
Microchip Technology2011.3%
By lines changed
AMD46764239.9%
Intel1070819.1%
Google1038018.8%
(Unknown)496694.2%
Linaro296312.5%
Red Hat288072.5%
(None)279892.4%
NXP Semiconductors214181.8%
NVIDIA192031.6%
MediaTek189801.6%
Facebook160361.4%
Andes Technology158141.3%
(Consultant)143141.2%
Huawei Technologies134831.1%
IBM119601.0%
Microchip Technology118531.0%
Renesas Electronics114271.0%
SUSE101280.9%
Canonical89840.8%
Fungible87910.7%

像往常一样,这里没有什么特别的意外惊喜。

Patch flow and signed tags


【图太大,读者自己去LWN 上看吧 https://lwn.net/Articles/895911/】

上边这个难以辨认的图表展示了 patch 进入 mainline 内核的路径。每个矩形框代表一个 Git 仓库,箭头则展示了 patch 从一个仓库到另一个仓库的移动过程。这张图是由 gitdm 这一组 git 分析工具(可从 git://git.lwn.net/gitdm.git 获得)中的 treeplot 来生成的,它可以展示代码在维护者社区中移动的总体情况。

这张图仍然相对比较平坦;大多数维护者直接向 Linus Torvalds 推送他们的修改。然而,中间途径的仓库所的作用在稳步增长,其中最大的那几个中间库分别是负责处理 networking、graphics、system-on-chip 和字符驱动子系统的。该图展示了我们当前的系统是如何使内核开发进程扩展到目前的规模的,而且很可能还会继续超越当前的规模。

每个箭头的颜色表示了这个仓库是否在被推送到下一级仓库的 patch 上使用了 signed tag;红线就表示没有这种 tag。在 tag 上使用 GPG 签名的话就可以让收到请求的维护者来验证这个 pull request 是真的由它代表的人来创建的。如果所有的 pull request 都包含 signed tag,那么攻击者就很难欺骗维护者去从恶意的分支拉取数据了。

正如多年来在 LWN 记录的那样,普遍使用 signed tag 的进展一直在缓慢推进。但最近,Torvalds 变得更加坚持了,明确要求那些顽固不化的维护者要加入到这个计划中来。最终结果是在 5.18 版本中,只有 714 个 patch 不是来自 signed tag 的,其中 565 个是由 Torvalds 直接合入的,根本没有通过别的 Git 仓库来到达。因此,在这个树状结构的最顶层,转换来使用 signed tag 的工作几乎已经完成了,仅仅是在开始采用这种做法 11 年后。不过,一些中层的维护者显然仍未要求在 pull request 上使用 signed tag,所以这个过程中仍有一些漏洞。

Older bugs

许多应用于 5.18 的 patch 都是用来修复 bug 的,这些 bug 有多老?对这个问题有一个近似回答的方法,就是看看有多少出现在 stable update 中的 fix 是在 5.18 中才首次出现的。一个 bug fix 肯定是不会 backport 到最早出现该 bug 的版本的。5.18 的情况如下:

ReleaseBackports
5.17 (Mar 2022)2,249
5.15 (Oct 2021)1,762
5.10 (Dec 2020)1,185
5.4 (Nov 2019)756
4.19 (Oct 2018)532
4.14 (Nov 2017)422
4.9 (Dec 2016)331

从上面可以看出,有 331 个 fix(到目前为止)已经从 5.18 一路移植到了 5 年多前发布的 4.9 内核。换句话说,经过五年多的密集 fix(4.9 的 stable update 已经添加了将近 22000 个 fix),我们仍然平均每天还在对 4.9 要修复差不多 5 个 bug。我们也需要到内核的生命终止之前才会修完所有 bug 吧。

总而言之,内核开发仍然犹如一个高速运转的机器。其中有很多 bug 正在被修复,毫无疑问,更多的 bug 正在被引入。最终我们得到的成果就是当前咱们在使用的 kernel 了。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~



浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报