色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux內核維護者的真相與誤解

Linux愛好者 ? 來源:Linux News搬運工 ? 作者:Linux News搬運工 ? 2021-03-03 15:28 ? 次閱讀

自 2020 年 1 月發布 5.5 內核之后,到現在已經有近 87,000 個 patch,來自于近 4600 名開發者,都被合并到 mainline 倉庫中了。review 所有這些 patch 的工作,對于愿意花時間的內核開發者來說也都是一項艱巨的任務,所以是否要接受合并 patch,這個決定權就被委托給了各個子系統的維護者(maintainer)來代理決定,他們每個人都對內核中這一部分的改動具有部分或者完整的決定權。

這些維護者們就被記錄在一個叫 MAINTAINERS 的文件中(當然是這個名字)。但是,MAINTAINERS 文件也需要維護,它能很好地反映現實情況嗎?MAINTAINERS 文件的存在目的,并不僅僅是為了讓大家給維護者點贊。開發者們需要用它來確定該把 patch 發到哪里。

get_maintainer.pl 腳本通過查看這個 patch 修改了的文件,就可以生成一系列郵件地址來發送 patch,從而讓這一過程變得更加自動化。如果這個文件中有錯誤信息的話,就可能會讓 patch 發送到錯誤的地方去,所以我們需要這個文件能保持更新。

最近,編者收到 Jakub Kicinski 的建議,他認為可以比較 一下 MAINTAINERS 中的各個條目和現實世界中的工作的吻合程度,應該能得到一些線索。于是折騰了一會兒 Python 之后,我們就得到了一個新的分析腳本。

Digging into MAINTAINERS

統計下來,MAINTAINERS 文件中已經列出了 2280 個 "subsystems (子系統)"。每一個子系統都包括一個它所涵蓋的文件和目錄列表。我們可以查看這些文件的 commit 信息來這個子系統中都有誰在進行工作。

撰寫 patch 顯然屬于工作內容之一,但其他活動也得算,比如處理 patch (可以從 Signed-off-by tag 來得到這個信息) 或 review patch (根據 Reviewed-by 或 Acked-by)。

我們犧牲了一些 CPU 挖礦的時間,得到了一個大概統計值,也就是各個子系統中明確列出的維護者最后一次在該子系統中實際做了有效工作的時間是什么時候。

對于那些想看細節的人來說,可以直接看這個完整結果(https://lwn.net/Articles/842419/)。

不過,我們可以縮小數據范圍,在這個文件中挑選出一些我們更感興趣的內容。例如,有 367 個子系統在整個 Git 歷史中都沒有維護者,或維護者從未出現過(沒有包括那些沒有文件的 "子系統"–見下文)。

在這些子系統中,很多已經過了它本身的黃金時期,比如現在 3c59x 網卡維護者根本沒有多少工作可做。網絡開發人員也不會收到很多 ATM 的 patch 了,Palm Treo 也不需要有多少支持工作了,蘋果最近也很少發布基于 M68k 的系統了,Arm 軟驅(floppy drive)也沒有多少人還在使用了,S3 Savage 顯卡也不再是以前人們所必備的設備了。

這幾百項中,很多可能都代表著可以完全刪除的代碼。類似的結論也可以從另一個列表中得到 (https://lwn.net/Articles/842424/),那個列表中都是沒有列出維護者的子系統。當然,其中一些子系統本身也不太對頭,有一個子系統簡單地命名為 "ABI/API",指向了 linux-api 郵件列表。實際上有一個文件是與這個 "子系統 " 相關的,kernel/sys_ni.c,這個文件會對那些未實現的系統調用進行處理。因此,這個條目的存在價值,是為了讓開發者在添加新的系統調用時會抄送 linux-api 郵件列表。

"Arm subarchitectures " 條目也是類似情況。一些無維護者的子系統,比如 framebuffer 層,可能后續會有人愿意接手從而復活。

reiserfs 文件系統缺乏維護者,但似乎仍有一些用戶。其他的子系統,比如 DECnet 或 Matrox framebuffer,可能最好的處理就是不去管它了(或干脆刪除掉)。

MAINTAINERS 文件中列出的一些 "子系統" 沒有任何文件需要修改。

一個有趣的例子是 "embedded Linux",據說由 Paul Gortmaker、Matt Mackall 和 David Woodhouse 維護。鑒于嵌入式 Linux 的成功,我們都認為他們的工作非常出色。"device number registry" 聲稱是有維護的,但這里只包含一個鏈接,指向一個不存在的網頁。

"disk geometry and partition handling" 這一條中的 URL 仍然有效,但這些網頁似乎已經有十多年沒有更新了,可以看出最近 Zip 驅動器的 geometry 并沒有什么進展。

man page 這些手冊頁面倒是有積極維護的,但它們不在內核代碼樹中。

Help needed

從目前的結果可以得出幾個結論。一個是很多內核子系統現在并不是真的需要有人來維護,相反,其中一些可能需要被刪除掉。另一個結論是,也許 MAINTAINERS 文件本身需要清理一下。但還有一個有價值的問題,那就是從這些數據是否可以看出是否有一些子系統從新的維護者中獲益匪淺的呢?

為了回答這個問題,我們又花費了一些本來可以用來挖礦的 CPU 時間,來尋找符合這些標準的子系統。

沒有列出維護者,或者所謂的維護者已經在該子系統中至少 6 個月沒有活動了。

自 2020 年 1 月發布 5.5 內核以來,至少有 50 個提交跟這個子系統有關。

這個搜索的目的是找出那些仍在進行某種活躍開發,但沒有活躍的、明確指定的子系統。

搜索結果可以分為幾類。有些 MAINTAINERS 的條目中包含了大量的文件,使得 commit 數量看起來比真實情況要多了不少。

例如,名為 "ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API "的子系統跟 drivers/dma 下的所有文件都有關,"DMA GENERIC OFFLOAD ENGINE SUBSYSTEM" 也包含這些文件。

該子系統則由 Vinod Koul 積極維護。有兩個子系統屬于這一類,在下面的表格中,"Activity" 列表示維護者最后一次我們看到他的活動時間(如果有的話),而 "Commits" 則顯示了自 5.5 以來影響到這個子系統的 commit 次數。

Subsystem Activity Commits
ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API —— 536
HISILICON NETWORK SUBSYSTEM DRIVER 2019-11-16 258

這些子系統或者不是一個單獨的實體(entity),或者應該減少其覆蓋的文件清單,要以符合現實情況。

還有一些子系統的維護者使用的是公司電子郵件別名。比如 "DIALOG SEMICONDUCTOR DRIVERS" 的維護者是 support.opensource@diasemi.com,這個地址顯然不會出現在任何實際的 patch commit 中。不過在該子系統內看進去的話,可以看到許多來自 diasemi.com 郵件地址的許多 review,所以該子系統不能說是真的沒人維護。

這個類別包含:

Subsystem Activity Commits
DIALOG SEMICONDUCTOR DRIVERS —— 120
QUALCOMM ATHEROS ATH9K WIRELESS DRIVER —— 65
WOLFSON MICROELECTRONICS DRIVERS —— 146

與之相關的是有些子系統的維護者信息是過時的,指定的維護者并不活躍,但往往是來自同一公司的其他人接替了他的工作,并承擔事實上的維護工作。

這些包括:

Subsystem Activity Commits
HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3) 2019-11-16 234
HISILICON SECURITY ENGINE V2 DRIVER (SEC2) 2020-06-18 55
LINUX FOR POWER MACINTOSH 2018-10-19 71
MELLANOX ETHERNET INNOVA DRIVERS —— 93
MELLANOX MLX4 IB driver —— 70
OMAP HWMOD DATA 2016-06-10 102
QCOM AUDIO (ASoC) DRIVERS 2018-05-21 125
TEGRA I2C DRIVER 2018-05-30 56

最后,還有一些子系統似乎真的缺少維護者,它們通常的 commit 是由其他的子系統維護者來合并,或者是通過少數幾個終極維護者來最終合入的。

它們是:

Subsystem Activity Commits
ARM/UNIPHIER ARCHITECTURE —— 73
DRBD DRIVER 2018-12-20 51
FRAMEBUFFER LAYER —— 402
HMM - Heterogeneous Memory Management 2020-05-19 54
I2C SUBSYSTEM HOST DRIVERS —— 434
MARVELL MVNETA ETHERNET DRIVER 2018-11-23 65
MEDIA DRIVERS FOR RENESAS - VIN 2019-10-10 56
MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER 2020-06-24 54
NFC SUBSYSTEM —— 72
PROC FILESYSTEM —— 171
PROC SYSCTL 2020-06-08 51
QLOGIC QLGE 10Gb ETHERNET DRIVER 2019-10-04 77
STAGING - REALTEK RTL8188EU DRIVERS 2020-07-15 121
STMMAC ETHERNET DRIVER 2020-05-01 174
UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER —— 277
USB NETWORKING DRIVERS —— 119
X86 PLATFORM DRIVERS - ARCH —— 119

對于一直關注相關領域的人來說,上面的列表并不出乎預料。frameebuffer 子系統是一個已知有問題的領域,由于缺乏維護,"soft scrollback" 功能最近就被從 framebuffer 驅動中移除了。

不少人仍然需要使用這段代碼,但它越來越難以與內核的圖形驅動集成起來使用,很少有人有興趣去深入研究它。事實上,I2C host driver 確實有一個事實上的維護者,它就是 Wolfram Sang,他也維護著 core I2C 子系統。他一直希望有人能幫助他維護這些驅動程序,但似乎沒有人愿意幫助他,所以他在有時間的時候就也負責維護這些驅動程序。

/proc 是一個有趣的例子,每個人都依賴它,但沒有人負責維護它。HMM 也很有趣,創建者當初花了很多精力來把 HMM 功能合入 mainline,但現在似乎轉向去忙其他事情了。

以上這些地方,看起來都是有抱負的內核開發者可以參與進來提供幫助的地方。那么那些在 MAINTAINERS 文件中沒有記錄的子系統呢?如果我們用快速腳本來查找一下內核樹中所有的未被 MAINTAINERS 文件包含的文件,我們得到的文件列表包含超過 2800 個文件。其中自然包括 MAINTAINERS 文件本身。其余的絕大多數都是 include/下的頭文件,其中大部分可能都有維護者,應該添加到 MAINTAINER 文件中相應的條目下。

不過令人沮喪的是,在 kernel/目錄下有 72 個文件沒有列出維護者。這當然不是現實情況。SYSV IPC 代碼是沒有維護者的,這反映了它普遍不受歡迎。

其余大部分未維護的文件都在 tools/ 或 samples/ 目錄下。比較難找出來的是 MAINTAINERS 中號稱會包含的文件中,其實有一些并不是由指定的人維護的。這種情況經常出現在那些指定包含整個目錄樹的條目中。例如,編者被列為需要處理 Documentation/目錄,但肯定不能說我真的是在 "維護" 這么多文件。類似的情況在內核樹中很多地方都有。

如果有人希望從這些數據中得出一些整體性的結論,那么可能會是這些:MAINTAINERS 文件肯定有一些黑暗的角落,這些角落本身也可能需要一些維護(其中一些已經在做了)。內核中一些缺乏維護者的部分,仍然是可以使用的,而另一些則已經過于古老都不需要維護了。不過,大多數情況下,內核中的子系統都有指定的維護者,而且他們中的大多數人至少都在努力維護他們負責的代碼。The situation could be a lot worse。

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11296

    瀏覽量

    209364
  • 自動化
    +關注

    關注

    29

    文章

    5564

    瀏覽量

    79246
  • python
    +關注

    關注

    56

    文章

    4793

    瀏覽量

    84634

原文標題:Linux 內核維護者的真相與誤解

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之內核簡介

    所以每個模塊都有對應的維護人員。維護人員的工作就是審核人們提交的代碼是否正確,如果沒有問題,就會合并到主分支上。這樣就會使linux內核不斷完善和更新。接下來就是芯片原廠例如恩智浦,開
    發表于 12-16 13:08

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內核移植之內核簡介

    所以每個模塊都有對應的維護人員。維護人員的工作就是審核人們提交的代碼是否正確,如果沒有問題,就會合并到主分支上。這樣就會使linux內核不斷完善和更新。接下來就是芯片原廠例如恩智浦,開
    發表于 12-13 09:03

    deepin社區亮相第19屆中國Linux內核開發大會

    中國 Linux 內核開發大會,作為中國 Linux 內核領域最具影響力的峰會之一,一直以來都備受矚目。
    的頭像 發表于 10-29 16:35 ?501次閱讀

    詳解linux內核的uevent機制

    linux內核中,uevent機制是一種內核和用戶空間通信的機制,用于通知用戶空間應用程序各種硬件更改或其他事件,比如插入或移除硬件設備(如USB驅動器或網絡接口)。uevent表示“用戶空間
    的頭像 發表于 09-29 17:01 ?654次閱讀

    linux驅動程序如何加載進內核

    Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫 驅動程序的編寫是Linux驅動開發的基礎。在編
    的頭像 發表于 08-30 15:02 ?445次閱讀

    Linux內核測試技術

    Linux 內核Linux操作系統的核心部分,負責管理硬件資源和提供系統調用接口。隨著 Linux 內核的不斷發展和更新,其復雜性和代碼規
    的頭像 發表于 08-13 13:42 ?487次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>測試技術

    Linux內核中的頁面分配機制

    Linux內核中是如何分配出頁面的,如果我們站在CPU的角度去看這個問題,CPU能分配出來的頁面是以物理頁面為單位的。也就是我們計算機中常講的分頁機制。本文就看下Linux內核是如何管
    的頭像 發表于 08-07 15:51 ?280次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>中的頁面分配機制

    歡創播報 華為宣布鴻蒙內核已超越Linux內核

    1 華為宣布鴻蒙內核已超越Linux內核 ? 6月21日,在華為開發大會上, HarmonyOS NEXT(鴻蒙NEXT)——真正獨立于安卓和iOS的鴻蒙操作系統,正式登場。這是Ha
    的頭像 發表于 06-27 11:30 ?831次閱讀

    算能全系列RISC-V處理器進入PLCT實驗室6.6內核維護工程

    Linux內核6.6LTS分支的升級并進行長期維護;與此同時,繼續推動算能RISC-V相關補丁進入Linux內核上游(upstream)。
    的頭像 發表于 05-22 08:33 ?1015次閱讀
    算能全系列RISC-V處理器進入PLCT實驗室6.6<b class='flag-5'>內核</b><b class='flag-5'>維護</b>工程

    使用 PREEMPT_RT 在 Ubuntu 中構建實時 Linux 內核

    盟通技術干貨構建實時Linux內核簡介盟通技術干貨Motrotech如果需要在Linux中實現實時計算性能,進而有效地將Linux轉變為RTOS,那么大多數發行版都可以打上名為PREE
    的頭像 發表于 04-12 08:36 ?2431次閱讀
    使用 PREEMPT_RT 在 Ubuntu 中構建實時 <b class='flag-5'>Linux</b> <b class='flag-5'>內核</b>

    C++在Linux內核開發中從爭議到成熟

    Linux 內核郵件列表中一篇已有六年歷史的老帖近日再次引發激烈討論 —— 主題是建議將 Linux 內核的開發語言從 C 轉換為更現代的 C++。
    的頭像 發表于 01-31 14:11 ?624次閱讀
    C++在<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>開發中從爭議到成熟

    Ubuntu 24.04 LTS選用Linux 6.8為默認內核

    關于Ubuntu 24.04 LTS使用何種內核版本,一直備受關注。Canonical工程師Andrea Righi昨日宣布,Ubuntu 24.04將默認搭載Linux 6.8內核
    的頭像 發表于 01-29 11:27 ?1088次閱讀

    linux內核主要由哪幾個部分組成,作用是什么

    Linux內核主要由以下幾個部分組成: 進程管理:Linux內核負責管理和調度系統中的進程。它通過進程調度算法來決定哪個進程在什么時間運行以及如何分配系統資源。 內存管理:
    的頭像 發表于 01-22 14:34 ?2672次閱讀

    rk3399移植Linux內核

    RK3399是一款由中國廠商瑞芯微推出的高性能處理器芯片,被廣泛用于嵌入式系統開發。在進行應用程序開發之前,我們需要將Linux內核移植到RK3399上,以支持硬件的驅動和功能。本文將詳細介紹如何將
    的頭像 發表于 01-08 09:56 ?1132次閱讀

    Linux內核中RCU的用法

    Linux內核中,RCU最常見的用途是替換讀寫鎖。在20世紀90年代初期,Paul在實現通用RCU之前,實現了一種輕量級的讀寫鎖。后來,為這個輕量級讀寫鎖原型所設想的每個用途,最終都使用RCU來實現了。
    的頭像 發表于 12-27 09:56 ?1754次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>中RCU的用法
    主站蜘蛛池模板: 午夜一区二区三区| 日日干夜夜艹| 欧美亚洲日韩自拍高清中文| 欧美白人战黑吊| 三级黄视频| 亚洲精品国产在线观看| 一级毛片两人添下面| 99re8热视频这在线视频| 打开双腿狠狠蹂躏蜜桃臀| 国产精品麻豆高潮刺激A片| 精品国产品国语在线不卡| 老司机无码精品A| 日本理论片和搜子同居的日子2 | 国产精品一库二库三库| 狠狠鲁 我喜欢| 芒果影院网站在线观看| 色中色辩论区| 一本大道手机在线看| jizzzz亚洲丰满xxxx| 国产欧美一本道无码| 麻豆影视在线直播观看免费| 日本特殊精油按摩| 亚洲欧美日韩精品自拍| 99在线观看视频免费| 国产麻豆精品传媒AV国产在线| 久久黄色网| 色老板影视| 中文乱码35页在线观看| 成人免费肉动漫无遮网站| 黄图gif揉胸吸奶| 青娱乐视觉盛宴国产视频| 亚洲精品久久久久一区二区三| 99久久精品国产国产毛片| 国产精品欧美一区二区在线看| 久久婷婷丁香五月色综合啪免费| 如懿传免费观看在线全集| 一级特黄aa大片欧美| 丰满五十老女人性视频| 久久精品影视| 武侠古典久久亚洲精品| 99久久国产综合色|