<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LWN: 5.12 開發(fā)周期的統(tǒng)計數(shù)據(jù)!

          共 6295字,需瀏覽 13分鐘

           ·

          2021-05-09 09:35


          關(guān)注了就能看到更多這么棒的文章哦~

          Some 5.12 development statistics

          By Jonathan Corbet
          April 26, 2021
          DeepL assisted translation
          https://lwn.net/Articles/853039/

          5.12 kernel 最終發(fā)布之時,這個開發(fā)周期中已經(jīng)有 13,015 個 non-merge changeset 被合入 mainline 了。這導(dǎo)致 5.12 是 5.6(2020 年 3 月底發(fā)布)以來最慢的一個開發(fā)周期。在 5.12 中仍然有大量開發(fā)工作得以完成。請繼續(xù)閱讀 LWN 傳統(tǒng)的分析內(nèi)容來了解這些工作都是來自哪里,以及如何進入 kernel。

          5.12 中有 1.873 位開發(fā)者貢獻了 patch,其中 262 位是首次貢獻者。這些數(shù)字都在正常水平,尤其是考慮到這次開發(fā)周期中的內(nèi)容偏少。最活躍的 5.12 開發(fā)者們是:

          Most active 5.12 developers
          By changesets
          Lee Jones2562.0%
          Chris Wilson1671.3%
          Pavel Begunkov1581.2%
          Vladimir Oltean1200.9%
          Christoph Hellwig1170.9%
          Jens Axboe1130.9%
          Arnd Bergmann1090.8%
          Andy Shevchenko940.7%
          Ben Skeggs910.7%
          Paul E. McKenney850.7%
          Zheng Yongjun810.6%
          Ard Biesheuvel770.6%
          Dan Carpenter750.6%
          Hans de Goede700.5%
          Alexandre Belloni690.5%
          Geert Uytterhoeven650.5%
          Sean Christopherson640.5%
          Jiri Olsa610.5%
          Chuck Lever600.5%
          Colin Ian King590.5%
          By changed lines
          Arnd Bergmann652779.4%
          Po-Hao Huang217233.1%
          Viresh Kumar167822.4%
          Maximilian Luz145202.1%
          Andy Shevchenko131601.9%
          Pawel Laszczak106051.5%
          Ard Biesheuvel98371.4%
          Sean Wang93921.4%
          Chris Wilson92551.3%
          Damien Le Moal89491.3%
          Vladimir Oltean79481.1%
          Hannes Reinecke78541.1%
          Srujana Challa77861.1%
          Thomas Zimmermann69831.0%
          Bjorn Andersson69781.0%
          Lorenzo Bianconi62820.9%
          Srinivas Kandagatla61000.9%
          Paul Kocialkowski60500.9%
          Yevgeny Kliteynik59670.9%
          Rob Herring58700.8%

          與 5.11 周期類似,Lee Jones 貢獻了最多的 changeset,因為他仍在繼續(xù)對編譯時以及 docs-build 的 warning 進行 fix。Chris Wilson 在開發(fā)的是 Intel i915 graphics driver。Pavel Begunkov 則主要在 io_uring 子系統(tǒng)里工作,Vladimir Oltean 對 network 子系統(tǒng)進行了許多改進,Christoph Hellwig 主要繼續(xù)在清理 block layer 以及 filesystem 里的代碼。

          Arnd Bergmann 刪除了若干已經(jīng)廢棄的體系架構(gòu),以及它們特有的驅(qū)動程序,因此憑借刪除掉的代碼行數(shù)得以在"lines changed"這一列登頂。Po-Hao Huang 貢獻了 8 個 patch,主要都是在更新一些機器生成的 table。Viresh Kumar 刪除了已經(jīng)不再使用的 "oprofile" 這個 profiling 機制,Maximilian Luz 增加了對 Microsoft Surface 設(shè)備的支持,Andy SHevchenko 刪除了一些不再需要的 Intel 驅(qū)動代碼。

          Report, test, and review credits

          kernel 社區(qū)除了代碼以外,還需要很多其他的貢獻。包括需要人們報出問題,也需要人們進行測試以及 review 代碼。因此內(nèi)核開發(fā)者們也通過在相關(guān)的 patch 上加上 tag 來對這些貢獻者表示認(rèn)可。在 5.12 中修復(fù)的 bug 的報告者之中,最活躍的是:

          Most active 5.12 bug reporters
          kernel test robot18416.1%
          Syzbot1119.7%
          Abaci Robot1079.4%
          Dan Carpenter443.9%
          Hulk Robot413.6%
          Stephen Rothwell282.5%
          Randy Dunlap191.7%
          Kent Overstreet121.1%
          Guenter Roeck111.0%
          TOTE Robot111.0%
          Colin Ian King90.8%
          Andrii Nakryiko80.7%
          Juan Vazquez70.6%
          Arnd Bergmann60.5%

          這里我們看到自動測試系統(tǒng)的貢獻不斷提升,我們也希望這些系統(tǒng)能在有 bug 影響到最終用戶之前就先報告出來。

          這一輪中的最活躍的 tester 和 reviewer 人員是:

          Test and review credits in 5.12
          Tested-by
          Daniel Wheeler677.1%
          Tony Brelinski626.6%
          Matt Merhar333.5%
          Nicolas Chauvet323.4%
          Peter Geis313.3%
          Arnaldo Carvalho de Melo293.1%
          Dmitry Osipenko262.8%
          Wolfram Sang212.2%
          Karthik B S192.0%
          Marek Szyprowski161.7%
          Sean Nyekjaer161.7%
          Boqun Feng151.6%
          Reviewed-by
          Christoph Hellwig2203.6%
          Rob Herring1462.4%
          Laurent Pinchart1322.2%
          David Sterba1212.0%
          Florian Fainelli1091.8%
          Lyude Paul911.5%
          Linus Walleij871.4%
          Josef Bacik821.4%
          Andrew Lunn791.3%
          Hans de Goede701.2%
          Darrick J. Wong691.1%
          Chris Wilson641.1%

          Tested-by 這一列中最上面的幾位,看起來基本上都是在對他們的同僚提供的 patch 進行驗證,這種情況可能更多的時候是不會打上 tag 的。Matt Merhar,Nicolas Chauvet,Peter Geis 驗證的 patch 數(shù)量都差不多,這并不是一個巧合。實際上他們?nèi)唤?jīng)常是在測試來自同一位作者的同一批 patch。而 Reviewed-by 這一列情況則更加分散,其中主要是那些活躍的維護者,以及其他一些經(jīng)常投入時間來 review patch 的開發(fā)者。

          Employer support

          5.12 的開發(fā)工作中我們能識別出來的有 211 個公司和組織,比起上一版本來說略有下降,但是這也跟 5.12 版本中相對偏少的 patch 數(shù)量是吻合的。這一次最活躍的公司是:

          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%

          不出意料,這些數(shù)字跟 5.11 的時候差不多,也跟之前很多時候的差不多。最大的變化是 Linaro 這次大刀闊斧的刪除代碼,因此得以登頂“l(fā)ines changed” 這一列。

          The path into the mainline

          雖然 Linus Torvalds 最終負(fù)責(zé)把這里提到的所有 patch 都合入 mainline,不過他直接處理的 patch 其實很少,目前所有 patch 基本上都是經(jīng)過至少一個子系統(tǒng)的維護者的 git 倉庫的。根據(jù) patch 合入 mainline 的路徑,可以生成一個能反映我們社區(qū)是如何一起工作的示意圖。不知道這張圖跟我們經(jīng)常描述 kernel 社區(qū)的層級結(jié)構(gòu)圖在多大程度上是吻合的?

          每一封電子郵件在發(fā)送者和接收者之間傳遞的時候通常都需要經(jīng)過若干個服務(wù)器,每個服務(wù)器都可能添加一個"Recived" 郵件頭來標(biāo)記一下。而 Git commit 則不會記錄它經(jīng)過了哪些 Git 倉庫。不過,在一批 commit 從一個倉庫合入另一個 git 倉庫的時候,會產(chǎn)生一個 merge commit,至少絕大多數(shù)時候都會生成。有些項目可能會對 merge commit 非常反感,因此要求利用 rebasing 和 fast-foward merge 來避免生成任何 merge commit。而 kernel 并不禁止 merge commit,于是絕大多數(shù) pull 操作都會產(chǎn)生一個 merge commit。

          Git 在創(chuàng)建這個 commit 的時候,會在 changelog 消息的開頭位置記錄一下是從哪個 git tree 合入過來的。假設(shè) maintainer 保留了這個信息的話,這樣就可以利用這個信息來分析這些 commit 都是從哪里來的了。很幸運,幾乎所有 kernel maintainer 都會保留這部分信息。

          這個 merge commit 還包含了用來對這組 commit 中頭部的 commit 的 tag 進行簽名的 GPG key。這也是一個有用的信息。理論上來說,所有的 pull request 都應(yīng)該包含一個簽名的 tag,從而確保相關(guān)的將要合入 mainline 的 commit 都是由可以識別出來的 kernel maintaner 來標(biāo)記的 commit。實際上并不是所有的 maintainer 都會對他們的 commit 進行這樣的簽名操作。Torvalds 也沒有強行要求從 kernel.org 上的各個 git 倉庫中發(fā)起的 pull request 都要帶有簽名,不過對于來自其他地方存放的 git 倉庫的 pull 請求通常都是要求有簽名的。

          treeplot 程序來自 gitdm 這組拼湊起來的數(shù)據(jù)分析工具,它可以搜集這些信息并生成圖示。最終結(jié)果也提供在本文中了。這里的矩形代表了一個個 Git 倉庫,箭頭表示了 commit 的流向。每個箭頭旁邊的數(shù)字表示有多少個 commit 是經(jīng)過這里來合入 5.12 的 kernel 的。黑色表示使用了簽名過的 tag,紅色表示沒有簽名。

          這個圖示的形狀每一年都會發(fā)生一些變化,目前來說仍然有非常多的倉庫直接由 Torvalds 合入 mainline,仍然是非常扁平化的結(jié)構(gòu),不過我們也開始看到經(jīng)過中間層的 maintainer 的 commit 的數(shù)量也在增長。有些較大的子系統(tǒng),比如 networking, graphics, Arm system 等,都是有多層的 maintainer 來提供 patch 的。流入 mainline 的 patch 中最多的一條路還是經(jīng)過 networking 倉庫的,在 5.12 中,這里有超過 2,400 個 commit 進入了 mainline。

          并且 networking 的這些倉庫也產(chǎn)生了數(shù)量最多的未對 tag 進行簽名保護的 commit。這個情況也已經(jīng)保持多年了。不過,在 126 個對 5.12 有貢獻的 Git 倉庫中,只有 15 個沒有使用 signed tag 了,情況比起過去幾年已經(jīng)好了很多。不過,比較有意思的是這些未用簽名驗證技術(shù)的倉庫中,有一個恰恰正是 crypto 倉庫。

          Torvalds 要求來自 GitHub 等其他 site 的 pull 都要提供 signed tag,不過可以看到其他一些 maintainer 并未這么做。因此,有一些來自公共網(wǎng)站的未被簽名的 pull request 仍然合入了 mainline kernel,就是來自這些中間 maintainer。

          不過,從這個最終生成的圖片看來,我們的社區(qū)盡管有許多困難,但是仍然將大量的改動采用了可靠的、可預(yù)期的方式合入進來。其他項目很少有既能保持我們 kernel 社區(qū)類似的規(guī)模,同時還能提供穩(wěn)定可用的產(chǎn)出的。在撰寫本文的時候,已經(jīng)有 13,677 個 changeset 加入了 linux-nest,其中絕大多數(shù)都會進入 5.13,因此這個流程看起來并不會放緩。

          更新:在本文初次公開之后,根據(jù) Leon Romanovsky 的提醒,對公司相關(guān)的貢獻數(shù)量有修改。

          全文完
          LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。

          歡迎分享、轉(zhuǎn)載及基于現(xiàn)有協(xié)議再創(chuàng)作~

          長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~



          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲激情春色 | 日本插逼视频 | 国产一级黄片在线播放 | 欧美精品射精 | 自拍偷拍在线视频 |