|
|
Subscribe / Log in / New account

Some 5.12 development statistics

By Jonathan Corbet
April 26, 2021
By the time the 5.12 kernel was finally released, some 13,015 non-merge changesets had been pulled into the mainline repository for this development cycle. That makes 5.12 the slowest development cycle since 5.6, which was released at the end of March 2020. Still, there was plenty of work done for 5.12. Read on for our traditional look at where that work came from and how it got into the kernel.

Patches were contributed to 5.12 by 1,873 developers, 262 of whom were first-time contributors; those are typical numbers, especially given the (relatively) small size of this cycle. The most active 5.12 developers were:

Most active 5.12 developers
By changesets
Lee Jones 2562.0%
Chris Wilson 1671.3%
Pavel Begunkov 1581.2%
Vladimir Oltean 1200.9%
Christoph Hellwig 1170.9%
Jens Axboe 1130.9%
Arnd Bergmann 1090.8%
Andy Shevchenko 940.7%
Ben Skeggs 910.7%
Paul E. McKenney 850.7%
Zheng Yongjun 810.6%
Ard Biesheuvel 770.6%
Dan Carpenter 750.6%
Hans de Goede 700.5%
Alexandre Belloni 690.5%
Geert Uytterhoeven 650.5%
Sean Christopherson 640.5%
Jiri Olsa 610.5%
Chuck Lever 600.5%
Colin Ian King 590.5%
By changed lines
Arnd Bergmann 652779.4%
Po-Hao Huang 217233.1%
Viresh Kumar 167822.4%
Maximilian Luz 145202.1%
Andy Shevchenko 131601.9%
Pawel Laszczak 106051.5%
Ard Biesheuvel 98371.4%
Sean Wang 93921.4%
Chris Wilson 92551.3%
Damien Le Moal 89491.3%
Vladimir Oltean 79481.1%
Hannes Reinecke 78541.1%
Srujana Challa 77861.1%
Thomas Zimmermann 69831.0%
Bjorn Andersson 69781.0%
Lorenzo Bianconi 62820.9%
Srinivas Kandagatla 61000.9%
Paul Kocialkowski 60500.9%
Yevgeny Kliteynik 59670.9%
Rob Herring 58700.8%

As with 5.11, Lee Jones was the most active changeset contributor this time around; he continues to work to fix compiler and docs-build warnings throughout the tree. Chris Wilson worked on the Intel i915 graphics driver. Pavel Begunkov worked mostly within the io_uring subsystem, Vladimir Oltean made a lot of improvements within the networking subsystem, and Christoph Hellwig continues to clean up the code in (mostly) the block layer and filesystems.

Arnd Bergmann deleted support for a number of obsolete architectures and their associated drivers, reaching the top of the "lines changed" column by virtue of the amount of code removed. Po-Hao Huang contributed eight patches, mostly updating some machine-generated tables. Viresh Kumar removed support for the old, unused "oprofile" profiling mechanism, Maximilian Luz added support for Microsoft Surface devices, and Andy Shevchenko removed some unneeded Intel driver code.

Report, test, and review credits

The kernel community depends heavily on contributions beyond just code; that includes those who report problems, and those who test and review code. Kernel developers try to credit these contributions through the addition of tags to the relevant patches. The most active credited reporters of bugs fixed in 5.12 were:

Most active 5.12 bug reporters
kernel test robot 18416.1%
Syzbot1119.7%
Abaci Robot 1079.4%
Dan Carpenter 443.9%
Hulk Robot 413.6%
Stephen Rothwell 282.5%
Randy Dunlap 191.7%
Kent Overstreet 121.1%
Guenter Roeck 111.0%
TOTE Robot 111.0%
Colin Ian King 90.8%
Andrii Nakryiko 80.7%
Juan Vazquez 70.6%
Arnd Bergmann 60.5%

Here we see the increasing presence of automated testing systems, which are finding bugs before (one hopes) they affect users.

The most active testers and reviewers this time around were:

Test and review credits in 5.12
Tested-by
Daniel Wheeler 677.1%
Tony Brelinski 626.6%
Matt Merhar 333.5%
Nicolas Chauvet 323.4%
Peter Geis 313.3%
Arnaldo Carvalho de Melo 293.1%
Dmitry Osipenko 262.8%
Wolfram Sang 212.2%
Karthik B S 192.0%
Marek Szyprowski 161.7%
Sean Nyekjaer 161.7%
Boqun Feng 151.6%
Reviewed-by
Christoph Hellwig 2203.6%
Rob Herring 1462.4%
Laurent Pinchart 1322.2%
David Sterba 1212.0%
Florian Fainelli 1091.8%
Lyude Paul 911.5%
Linus Walleij 871.4%
Josef Bacik 821.4%
Andrew Lunn 791.3%
Hans de Goede 701.2%
Darrick J. Wong 691.1%
Chris Wilson 641.1%

The top folks in the Tested-by column appear to be routinely testing patches from their work colleagues — something that is probably much more widely done without applying tags to that effect. Matt Merhar, Nicolas Chauvet, and Peter Geis have almost the same number of credits, which is not a coincidence: all three tend to show as having tested the same patches, almost all from a single author (example). The Reviewed-by column is more diverse, with a mix of active maintainers and others who clearly put a lot of time into the review task.

Employer support

Work on 5.12 was supported by 211 employers that we were able to identify; that is a small decrease from previous releases but is in line with the lower patch volume in general. The most active companies this time were:

Most active 5.12 employers
By changesets
Intel142510.9%
(Unknown)10127.8%
Red Hat8726.7%
Linaro8686.7%
Google7525.8%
Huawei Technologies5254.0%
Facebook4773.7%
(None)4753.6%
AMD4033.1%
NVIDIA4023.1%
IBM3722.9%
SUSE3582.8%
(Consultant)3332.6%
Oracle3062.4%
Renesas Electronics2521.9%
Arm2481.9%
NXP Semiconductors2371.8%
Pengutronix1911.5%
MediaTek1731.3%
Alibaba1701.3%
By lines changed
Linaro12069417.4%
Intel8005611.5%
Red Hat382495.5%
Google291084.2%
(Unknown)289764.2%
NVIDIA287664.1%
(None)262983.8%
Realtek225723.3%
SUSE203882.9%
MediaTek198722.9%
Arm160632.3%
Marvell154002.2%
AMD147532.1%
Pengutronix137442.0%
Western Digital128271.8%
Facebook118851.7%
Code Aurora Forum117681.7%
NXP Semiconductors116691.7%
IBM107991.6%
Texas Instruments107441.5%

Unsurprisingly, these numbers look a lot like what we saw for 5.11 — and numerous kernels before that. The biggest change is the result of the flurry of code-removal patches coming from Linaro, which ended up at the top of the "lines changed" column as a result.

The path into the mainline

[Patch-flow graph] While Linus Torvalds is ultimately responsible for pulling all of the patches discussed here into the mainline, he handles few of them directly; by far the bulk of all patches going into the kernel go through at least one subsystem maintainer's repository. The path taken by patches can draw an interesting picture of how our community actually works; how closely does it match the hierarchical model that is often used to describe the kernel community?

An email message typically passes through a number of servers between sender and recipient; each server normally adds a "Received" header marking that passage. Git commits, instead, are immutable and accumulate no such markings from the repositories through which they pass. What does happen, though, is the addition of merge commits when a set of commits from one repository is pulled into another. At least, that happens most of the time. Some projects suffer from a sort of merge phobia; they require rebasing and fast-forward merges that do not leave any signs in the history. The kernel does not suffer from this particular syndrome, though, so most pulls do result in the creation of a merge commit.

Git will, when creating this commit, put the beginnings of a message in the changelog that includes the tree from which the commits are being merged. Assuming the maintainer leaves that information in place, this message makes it possible to recreate the path taken by those commits; happily, almost all kernel maintainers leave that information in place.

The merge commit also contains information about the GPG key (if any) that was used to sign the tag at the head of the set of commits to pull. This, too, is useful information. In theory, all pull requests should include signed tags as a way of ensuring that the associated commits were actually marked, by a recognized kernel maintainer, for merging into the mainline. In practice, not all maintainers have bothered to sign their commits in this way. Torvalds does not insist on signatures for pulls from trees hosted on kernel.org, but does generally require them for repositories stored anywhere else.

The treeplot program, part of the gitdm suite of ugly data-mining hacks, can collect all of this information and turn it into a graph. The result of this work for the 5.12 kernel can be seen on the right; clicking on that image and displaying the result in a large window should yield something that is actually legible. Rectangles indicate repositories, and arrows show the flow of commits between them; the number next to each arrow indicates how many commits took that path during the 5.12 cycle. Black indicates the use of signed tags, red shows their absence.

The shape of this graph has changed slowly over the years; it is still quite flat with a large number of repositories being pulled directly into the mainline by Torvalds, but we are seeing more going through mid-level maintainers as well. A number of the larger subsystems — networking, graphics, and Arm systems, for example — feed patches through multiple layers of maintainers. The largest stream of commits into the mainline continues to pass through the networking repositories, which were the source of over 2,400 commits going into 5.12.

The networking repositories are also the largest source of commits that are not protected with a signed tag; this situation has persisted for some years. All told, though, of the 126 repositories that fed commits into 5.12, all but 15 were using signed tags, a significant increase from past years. It is somewhat ironic that one of the remaining trees eschewing cryptographic signatures is the crypto tree.

While Torvalds requires signed tags for pulls from sites like GitHub, it can be seen that some other maintainers do not. There are, as a result, a few unsigned pulls from public hosting sites that are making it into the mainline kernel by way of an intermediate maintainer.

In the end, though, the picture that emerges from all of the above is a community that, for all of its difficulties, still manages to incorporate large numbers of changes in a reliable and predictable way. There are few projects out there that can sustain the scale of the kernel community and produce a stable and usable result. As of this writing, there are 13,677 changesets queued in linux-next, most of which will be destined for 5.13, so the process seems unlikely to slow down anytime soon.

Update: the employer numbers have been adjusted slightly since the initial publication of this article in response to a report from Leon Romanovsky.

Index entries for this article
KernelReleases/5.12


to post comments


Copyright © 2021, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds