LWN:5.7内核数据分析!

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

Development statistics for the 5.7 kernel

By Jonathan Corbet
June 2, 2020

原文来自:https://lwn.net/Articles/821813/

5.7 kernel于5月31日正式发布了。无论从什么角度来看,这都是一个很普通的开发周期,并没有受到当今世界上的纷扰所影响。我们继续来看看能从这次的代码改动中了解到什么信息,欢迎阅读LWN的传统栏目,来看看5.7里面有哪些patch作者、有谁在支持他们、以及这些patch是经过什么途径合入mainline的。

5.7版本中有13,901个patch(不算merge point),分别来自1,878位开发者。这两个指标已经比5.6开发周期要高了,说明这个周期更加繁忙。值得注意的是有281位出现在5.7开发者列表中的patch作者是首次为kernel贡献patch,这个数值是从5.0版本以来的最高的一次,尤其是跟5.6比起来对比很明显,因为5.6里面的首次贡献者人数是2013年以来的最低点。也许是因为被迫待在家中,反而鼓励了人们来整理、发出他们人生中的第一个正式kernel patch。在5.7开发周期中最活跃的开发者是:

Most active 5.7 developers
By changesets
Gustavo A. R. Silva2351.7%
Chris Wilson2311.7%
Geert Uytterhoeven1611.2%
Christoph Hellwig1381.0%
Sean Christopherson1371.0%
Takashi Iwai1320.9%
Mauro Carvalho Chehab1290.9%
Anson Huang1090.8%
Al Viro1080.8%
Andy Shevchenko1010.7%
Ville Syrjälä980.7%
Kuninori Morimoto960.7%
Jani Nikula950.7%
Thomas Gleixner910.7%
Colin Ian King910.7%
Masahiro Yamada900.6%
Lorenzo Bianconi900.6%
Jakub Kicinski860.6%
Ard Biesheuvel850.6%
Josef Bacik830.6%
By changed lines
Greg Kroah-Hartman410356.4%
Alex Elder144052.3%
Chris Packham108861.7%
Mauro Carvalho Chehab103551.6%
Chris Wilson79311.2%
Jani Nikula77191.2%
Marc Zyngier76591.2%
Srujana Challa75371.2%
Namjae Jeon72691.1%
Manivannan Sadhasivam68361.1%
Jyri Sarha56220.9%
Linus Walleij50560.8%
Christoph Hellwig49570.8%
Laurent Pinchart47810.7%
Taniya Das47140.7%
Paul Blakey43670.7%
Dmitry Bogdanov43280.7%
Vladimir Oltean42100.7%
Jerome Brunet39730.6%
Maxime Jourdan39210.6%

Gustavo A. R. Silva在按changeset数量排序中排名第一,主要是来自他在持续进行的一个改动(把kernel中各处structure中长度为0的数组替换成变长数组),这里有个典型例子(https://git.kernel.org/linus/8695e0b1b964  )。Chris Wilson则是专注于Intel i915显卡驱动。Geert Uytterhoeven则在许多驱动程序subsystem里面做贡献,Christoph Hellwig则对XFS, SCSI和block subsystem进行了许多改动,Sean Christopherson则在KVM hypervisor部分贡献了许多工作。

Greg Kroah-Hartman在“line changed”这一列登顶的时候,一般都是因为他删除了许多代码,这次也不例外。他把exFAT文件系统(后来加到了filesystem tree里)和wireless USB、UWB驱动从staging tree里面删除了。Alex Elder提供了高通公司的"IP accelerator"网卡驱动,Chris Packham则重新把Octeon USB和Ethernet driver加到了staging tree里,Mauro Carvalho Chehab则把无数的文档改成了RST格式。

5.7中的工作可以认出来的公司数量有215家。其中最活跃的是:

Most active 5.7 employers
By changesets
Intel168212.1%
(Unknown)12028.6%
Red Hat9867.1%
(None)7885.7%
SUSE5483.9%
Google5143.7%
Huawei Technologies5083.7%
Mellanox4923.5%
AMD4913.5%
Linaro4123.0%
(Consultant)3862.8%
NXP Semiconductors3742.7%
IBM3712.7%
Renesas Electronics3152.3%
Linux Foundation3102.2%
Arm2782.0%
Facebook1921.4%
Code Aurora Forum1811.3%
Oracle1761.3%
Texas Instruments1751.3%
By lines changed
Intel6958410.9%
Linux Foundation451537.1%
Linaro446497.0%
(Unknown)406316.4%
Red Hat330225.2%
(None)206623.2%
Google199403.1%
(Consultant)194253.0%
Mellanox193173.0%
SUSE191273.0%
Huawei Technologies183012.9%
Code Aurora Forum178612.8%
Marvell178332.8%
Texas Instruments173142.7%
IBM149732.3%
NXP Semiconductors142232.2%
AMD127872.0%
BayLibre114451.8%
Samsung112381.8%
Allied Telesis110291.7%

这次的公司名单依然跟往常差不多。

How those changes get into the kernel

以前开发者是会直接发patch给Linus Torvalds来合入的,不过这已经是很久以前的事情了。目前几乎所有的patch都是经过一位或者几位subsystem maintainer之手的。所有的maintainer对于最终合入他管理的subsystem repository(仓库)的patch都会加上一个Signed-off-by tag。我们可以利用这个信息来分析patch进入mainline的路径了。同时还可以利用这个信息来分析哪些人在管理这些patch。patch中附带的Signed-off-by tag如果不是patch作者的话,那基本上就意味着这位就是subsystem maintainer了,所以看看这些tag就能看出maintainer是哪位。

5.7版本中最繁忙的maintainer(根据那些不是patch作者的Signed-off-by tag来看)和贡献最多maintainer工作的公司分别是:

Non-author signoffs in 5.7
Developers
David S. Miller153111.6%
Greg Kroah-Hartman8116.1%
Mark Brown5384.1%
Alex Deucher4293.2%
Andrew Morton4013.0%
Martin K. Petersen2782.1%
Jens Axboe2501.9%
Mauro Carvalho Chehab2361.8%
Paolo Bonzini2351.8%
Shawn Guo2131.6%
David Sterba1961.5%
Herbert Xu1701.3%
Michael Ellerman1691.3%
Alexei Starovoitov1681.3%
Saeed Mahameed1581.2%
Vinod Koul1581.2%
Hans Verkuil1571.2%
Ingo Molnar1461.1%
Jason Gunthorpe1451.1%
Thomas Gleixner1431.1%
Employers
Red Hat256019.3%
Linaro137710.4%
Intel9867.4%
Linux Foundation8786.6%
Google7875.9%
Huawei Technologies4883.7%
Mellanox4863.7%
SUSE4863.7%
Facebook4653.5%
AMD4633.5%
(None)4403.3%
Oracle4113.1%
IBM3472.6%
Texas Instruments2311.7%
Arm2311.7%
Code Aurora Forum2131.6%
(Unknown)2001.5%
Qualcomm1591.2%
(Consultant)1581.2%
Cisco1581.2%

看到有超过200个公司在支持Linux kernel,不过合入kernel的patch中超过半数的都是经过分属于5个公司的maintainer之手来合入的。

在patch合入subsystem git仓库之后,Signed-off-by tag就不会再增加了。不过仔细分析一下的话,我们还是能看到它是如何随着一个git中的某个branch合入到另一个git或branch上去的。这样我们就可以生成一个路径图了,来展示patch最终进入mainline的路径。最终结果是一个很复杂的graph,下图仅展示了其中一小部分:

完整图片在此:https://static.lwn.net/images/2020/5.7-treeplot.svg,查看的时候请带着仰慕的眼光。

图中给人的其中一个印象是这个graph本身层级并不深,还是很扁平化的。有一些较大的subsystem会有几层maintainer,而许多git tree是直接合入mainline的。

开发者虽然不再直接发patch给Torvalds了,但是subsystem maintainer仍然还是这样的工作流程。

图中还可以看到:maintainer需要对自己的tag进行数字加密签名,之后才推送到upstream,这样收件人就能知道这个合入请求确实来自正确的发送方。最近Torvalds要求一位maintainer开始使用signed tags,他说:“包括kernel.org也一样,我一直在鼓励人们做这个签名动作,近来越来越多的人可以遵循这个规范了”。既然这样,我们就想知道到底有多少比例的人做到了。

对于那些没有使用signed tag的git tree,我们在图中用红色标记出来了。可以看到还是有不少的。在5.7开发周期中Torvalds会直接pull的121个git tree中,有101个使用了signed tags,20个没有用,也就是覆盖率是83%。不过这仅仅是查看了Torvalds直接会pull的git tree。如果完整地看的话,总共有214个subsystem tree,其中167个使用了signed tags,占总数的78%。所以覆盖率还是可以说是“fairly high”的,不过还不能算是大家统一采用的方式。

不过,跟kernel代码本身一样,kernel development process一直在演进,永远不会有“开发流程已经完美了”的那一天。在演进的同时,这个流程也还在不断地合并大量patch以及发布全世界都在等待的新kernel版本。大多数时候我们并不需要追求完美。

全文完

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值