关注了就能看到更多这么棒的文章哦~
A look at some 5.17 development statistics
By Jonathan Corbet
March 21, 2022
DeepL assisted translation
https://lwn.net/Articles/887559/
在 5.17 开发周期结束时,13038 个 non-merging changeset 已经进入 mainline。这比 5.16 版本(14190 个 changeset)的数量要少,但远远高于 5.15 版本(12337 个)。换句话说,这是一个相当典型的内核版本。从组成这个版本的工作的来源来看也是如此。
5.17 版本的修改是由 1900 名开发者贡献的,比 5.16 版本的 1988 名要少。在这些开发者中,有 268 人在这个周期中首次贡献了他们的内核。这次最活跃的开发者是:
Most active 5.17 developers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Christoph Hellwig 继续做了大量的重构工作,主要是在 block 和 filesystem layer;这项工作再次使他成为改动最多的贡献者。Eric Dumazet 一如既往地忙着改进 network stack;他还在这个周期内增加了 reference-count tracking 的基础设施。Mauro Carvalho Chehab 在 media 子系统中做了大部分工作,Hans de Goede 主要在 graphics layer(包括这次增加了对隐私屏幕的通用支持),Andy Shevchenko 在整个驱动子系统中做了大量清理工作。
David Howells 通过重写和替换网络文件系统使用的 caching 层,从而在 "lines changed" 一栏中名列前茅。Thierry Reding 贡献了大量的 Tegra SoC 硬件支持代码,Luiz Augusto von Dentz 在蓝牙 host-controller 接口代码上做了大量的工作。
这次最活跃的 tester 和 reviewer 是:
Test and review credits in 5.17 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
这些名字中的许多人已经多次在这些表格中出现了。最大的变动可能是 Andy Shevchenko 的出现,他的 Reviewed-by tag 在整个驱动子系统的许多 patch 上都有。
5.17 的工作得到了 245 个雇主(我们能确定的部分)的支持;这也是近期内核的一个典型数字。最活跃的雇主是:
Most active 5.17 employers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
再一次,这里没有什么惊喜。
Old bugs
虽然像 5.17 这样的发布版本带来了一长串的新功能,但它也包括对旧有 bug 的 fix。有各种方法来计算这些 bug 到底存在了多长时间,但有一个指标更加容易计算:5.17 中有多少 patch 被 backport 到以前内核的 stable update 中了?例如,4.19 内核是在 2018 年 10 月发布的,所以任何 backport 到 4.19 stable update 中的 patch 都可以认为所 fix 的问题至少已经存在了那么久了。
查看 stable 系列中每个 commit 的 mainline commit ID,看看它是否是 5.17 的提交,这是一个非常容易的任务。事实上,同样的计算也可以对较早期的内核来进行,结果是这样的:
对于每一对 mainline/stable-update ,这个表格中的那一条都显示了有多少 patch 是从该 mainline 版本 backport 到 stable 系列的,以及该 stable 系列的所有 patch 中来自该 mainline 版本的百分比。因此,比如说我们可以看到基本上所有 backport 到 5.16 的 patch 都来自 5.17 —— 这是一个不会让大家感到惊讶的结论。(这并不是百分之百准确的,因为总有一些 patch 没有被直接 backport,或者也许只是 version tag)。
仔细阅读这些数字可以发现,随着时间的推移,需要在较早的 stable update 中 fix 的 bug 数量确实在减少,这一点大家可以很容易地理解。但是它绝对没有下降到零;仍然有 patch 从 5.17 版本 backport 到 4.4 版本的内核(是六年前发布的),直到该内核停止支持为止。纵观这些数字,5.17 并没有什么特别之处;每个 mainline 版本都在 fix 多年来一直存在的一些错误。
当然,这里有许多重要的注意事项。例如,backport 的 patch 可能是在 fix 其他 backport patch 中的错误,在这种情况下,这些 bug 其实是更加新的版本里面才有的,而不是当初那个版本就有的。正如过去记录的那样,stable 内核的 regression rate 从 3% 到 12% 不等,取决于人们的计算方法。还有一个事实,并非所有的 backport patch 都是 bug fix,例如有些 patch 增加了 device ID 或提高了性能。
也有一些是对硬件 bug 的修复。例如,大约有 30 个刚刚 backport 的 5.17 patch 是针对 Spectre 漏洞里的 branch history injection 的。把这些归结为对旧内核中的 bug fix 的话是有些不公平的,但无论如何,它们是需要 fix 的问题。
这些因素都表明,上述数字不是那么准确,但不会影响根本结论。
总的来说,5.17 是另一个典型的、相对平平无奇的内核开发周期。内核开发事业继续按照可预测的时间表在发布新版本。截至目前,linux-next 包含了超过 12,800 个 changeset,等待着被转入 5.18 的 mainline,所以看起来这个过程不会很快停止。
A postscript
因为内核开发过程相对很稳定了,我们这种总结报告随着时间的推移变得越来越无趣,这里没有太多的新闻可供发现了。因此编者再一次对于为每个内核版本制作这些报告的价值感到怀疑。更多时候,它们看起来就像一堆模板,加上一些侧面的调查,试图让它们更有趣。是不是应该停止,改为在每个 long-term-stable release 中发表全年报告,是否会更有用?如果你对这个问题有什么看法,请随时通过评论或发邮件给 lwn@lwn.net 来让我们知道。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~