关注了就能看到更多这么棒的文章哦~
Some 6.0 development statistics
By Jonathan Corbet
October 3, 2022
DeepL assisted translation
https://lwn.net/Articles/909625/
Linus Torvalds 在 10 月 2 日发布了内核 6.0 版本。在这个版本中,有 15402 个 non-merge changeset 被合入 mainline,内核增加了 110 多万行代码。像往常一样,这个内核版本中包含了很多内容;请继续阅读来了解其中一些工作是如何产出的。
总共有 2034 名开发者为 6.0 版做出了贡献;其中 236 人是在这个周期内第一次对 kernel 做出贡献。开发者总数略低于 5.19 版本的人数记录(2086 人),但首次贡献者的数量是 2020 年 5.6 版本(216 人)以来的最低水平。这次最活跃的贡献者是:
Most active 6.0 developers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Sean Christopherson 是这次贡献最多 commit 的开发者;他的每一个 commit 都是对 KVM 子系统的改进。Krzysztof Kozlowski 做了大量的 devicetree 改动。Johannes Berg 在 WiFi 支持方面做了大量工作,Charles Keepax 在 sound 子系统方面做了大量工作,Dmitry Baryshkov 在一些底层设备驱动(主要是高通)方面做出很多贡献。
如果有个人的人生目标是能在"changed lines" 这里称为第一名(一定是出于什么奇怪的原因),那么就应该选择来进行 AMD 图形驱动开发;Aurabindo Pillai 和 Roman Li 都为 amdgpu 驱动增加了更多头文件。Oded Gabbay 对 Habanalabs accelerator 驱动程序做了类似的工作,而 Zhengjun Xing 则为 perf 工具更新了英特尔 event 列表。
6.0 版所有 patch 中 tester 和 reviewer 的前几名分别是:
Test and review credits in 6.0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Daniel Wheeler 继续保持繁忙,在 6.0 开发周期中,他每天都要测试近四个 patch。top reviewer 也几乎是同样活跃。总共有 1367 个进入 6.0 的 commit(占总数的 9.0%)包含了 Tested-by tag,而 5975 个 commit(39.1%)包含 Reviewed-by tag。
共有 226 个公司支持了 6.0 的工作,比 5.19 有所下降。最活跃的公司或组织是:
Most active 6.0 employers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
跟往常一样,这里很难有什么惊喜,不过有趣的是,在这个周期中,有两家公司所贡献的代码行数就远远超过了总数的一半。
Fixes in 6.0
在为 6.0 合并的 commit 中,有 2781 个带有 "Fixes" tag,用来指明这里 fix 的 bug 是在哪个 commit 中首次出现的。我们可以利用脚本来绘制出这个开发周期中 fix 了的 bug 的时间分布图。结果看起来像这样。
请注意,6.0 还包含了 719 个带有 Fixes tag 的 commit,它们的 tag 都指向了其他 6.0 的 commit;也就是说这些 bug 从未出现在 mainline 发布版本中,所以这一行被排除了。跟 5.19 的情况一样,图中显示了 6.0 中修复的 bug 分布在整个 Git 的发布历史各个时代;只有 3.4、2.6.24、2.6.18 和 2.6.15 版本没有出现过在这个周期所 fix 的 bug。感兴趣的朋友可以浏览一下 6.0 中的全部修复列表 https://lwn.net/Articles/909882/。
看了这幅图之后,有人可能会对 2.6.35 比较感兴趣,为何在 6.0 中进行了 17 个 fix。答案似乎是好多 terminal-driver 的 fix,都是针对 2010 年合并的 n_gsm line discipline code 所带来的问题的。那个 commit 是整个内核历史上引出最多 fix 的 commit 之一,有超过 70 个 patch 来解决那里的问题。人们可能会得出结论,terminal driver 是如此困难,甚至 Alan Cox 都没法写正确。
在 6.0 的开发周期结束时,人们预期中希望那些声称 fix 了 6.0 bug 的 commit 都被合并了,成为 6.0 的一部分。事实上它们中的大多数都是合并进来了。但有趣的是,5.19 版本的内核包含了四个修复了 6.0 bug 的 commit:
0326195f523a (bpf: Make sure mac_header was set before using it) fixing f9aefd6b2aa3 (net: warn if mac header was not set)
07313a2b29ed (mm: kfence: apply kmemleak_ignore_phys on early allocated pool) fixing 0c24e061196c (mm: kmemleak: add rbtree and store physical address for objects allocated
with PA)90f4b5499cdd (rtw88: 8821c: fix access const table of channel parameters) fixing
89d8f53ff6e7 (wifi: rtw88: Fix Sparse warning for rtw8821c_hw_spec)84499c5d220a (drm/aperture: Run fbdev removal before internal helpers) fixing
f9aefd6b2aa3 (fbdev: Disable sysfb device registration when removing conflicting FBs)
好的内核开发者会尝试预测和避免问题;而那些真正伟大的、有先见之明的开发者,会在一个 bug 本身被 merge 之前就写好了 fix 并提交到 mainline。
不过,做伟大的事情,正是内核社区工作需求的一部分。在写这篇文章的时候,6.1 的开发周期即将开始;目前在 linux-next 里有超过 10000 个 non-merge changeset。这表明 6.1 可能不是有史以来最繁忙的开发周期,但该内核将会是一个长期支持的版本,仍将包含许多有趣的工作,包括预计会合并 Rust-for-Linux 和 multi-generational LRU 这些 patch set。该版本可望在 12 月中旬发布;当然,LWN 将在整个开发周期内对其中所发生的事情保持关注。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
欢迎分享、转载及基于现有协议再创作~
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~