LWN:6.0开发周期数据!

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

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
By changesets
Sean Christopherson3262.1%
Krzysztof Kozlowski3142.0%
Johannes Berg1751.1%
Charles Keepax1701.1%
Dmitry Baryshkov1671.1%
Christoph Hellwig1601.0%
Jonathan Cameron1460.9%
Laurent Pinchart1270.8%
Andy Shevchenko1260.8%
Pavel Begunkov1250.8%
Uwe Kleine-König1180.8%
Matthew Wilcox1080.7%
Jani Nikula940.6%
Pierre-Louis Bossart920.6%
Bart Van Assche880.6%
Mark Brown860.6%
Dan Carpenter850.6%
Amit Cohen840.5%
Christophe JAILLET820.5%
Hans de Goede810.5%
By changed lines
Aurabindo Pillai33951921.4%
Roman Li1555859.8%
Oded Gabbay1488309.4%
Zhengjun Xing1405148.9%
Dmitry Baryshkov674154.3%
Ian Rogers451142.8%
Jakub Kicinski288011.8%
Jiaxin Yu150080.9%
Johannes Berg134640.8%
Jens Axboe122940.8%
Ben Skeggs114900.7%
Arnd Bergmann104810.7%
Huang Rui99620.6%
Edward Cree97420.6%
Sean Christopherson94610.6%
Rodrigo Siqueira80160.5%
Christoph Hellwig74540.5%
Krzysztof Kozlowski71910.5%
Cheng Xu64850.4%
Thomas Bogendoerfer63090.4%

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
Tested-by
Daniel Wheeler27317.6%
Alexander Stein563.6%
Arnaldo Carvalho de Melo382.5%
Philipp Hortmann362.3%
Bjorn Andersson312.0%
Nícolas F. R. A. Prado261.7%
Chen-Yu Tsai261.7%
Gurucharan261.7%
Conor Dooley241.6%
Dmitry Osipenko231.5%
Manivannan Sadhasivam211.4%
Nicolas Saenz Julienne201.3%
Ionela Voinescu191.2%
Pierre-Louis Bossart181.2%
Jocelyn Falempe171.1%
Reviewed-by
Christoph Hellwig2032.6%
Rob Herring1992.5%
Andy Shevchenko1772.2%
Krzysztof Kozlowski1552.0%
AngeloGioacchino Del Regno1431.8%
Bard Liao1181.5%
Ranjani Sridharan1151.5%
Hans de Goede1031.3%
Péter Ujfalusi1031.3%
Darrick J. Wong931.2%
Stephen Boyd901.1%
Guenter Roeck861.1%
David Sterba841.1%
Dmitry Baryshkov781.0%
Harry Wentland761.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
By changesets
Intel172411.2%
Google11917.7%
(Unknown)10196.6%
Linaro9996.5%
AMD9346.1%
Red Hat8355.4%
Huawei Technologies5483.6%
(None)4833.1%
Meta4803.1%
NVIDIA4563.0%
(Consultant)3982.6%
SUSE3942.6%
Oracle3282.1%
IBM2891.9%
Arm2791.8%
MediaTek2451.6%
Microchip Technology Inc.2211.4%
NXP Semiconductors2131.4%
Cirrus Logic2111.4%
Alibaba2091.4%
By lines changed
AMD54207734.2%
Intel36406823.0%
Linaro1110847.0%
Google858865.4%
Meta556573.5%
Red Hat428932.7%
NVIDIA326392.1%
(Unknown)309552.0%
MediaTek244341.5%
(None)187151.2%
(Consultant)174731.1%
NXP Semiconductors136910.9%
IBM133900.8%
SUSE129830.8%
Arm121820.8%
Habana Labs109620.7%
Huawei Technologies107090.7%
Xilinx103670.7%
Alibaba102550.6%
Renesas Electronics100480.6%

跟往常一样,这里很难有什么惊喜,不过有趣的是,在这个周期中,有两家公司所贡献的代码行数就远远超过了总数的一半。

Fixes in 6.0

在为 6.0 合并的 commit 中,有 2781 个带有 "Fixes" tag,用来指明这里 fix 的 bug 是在哪个 commit 中首次出现的。我们可以利用脚本来绘制出这个开发周期中 fix 了的 bug 的时间分布图。结果看起来像这样。

81e11635b4bae29843ec1c9e0ee07650.png

请注意,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 深度文章以及开源社区的各种新近言论~

format,png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值