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

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

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

3天內不再提示

一文詳解Linux內核測試現狀

Linux閱碼場 ? 來源:陳翠 ? 2019-01-01 09:06 ? 次閱讀

內核測試的現狀

新的內核總是會定期發布出來,但是其實大家并不是十分了解內核是如何被深入測試的。那么這里可以提前告訴大家,內核主干有可能并沒有做過充分的測試,而穩定內核可能會更少。。。 So what is going on there? Is stable kernel really stable? 剛好今年9月在洛杉磯舉辦的《Linux Plumbers Conference》有一個BOF(birds of a feather)會議,Dhaval Ginal和Sasha Levin組織了一個關于內核測試的相關討論,讓我們一起去看看。

由于大部分BoF的參會人員來自各個主要的Linux發行商,所以Giani開場的時候提了一個問題:“大家對于穩定內核(stable kernels)都做過了多少測試呢?大家是不是都是僅僅測試自己發行的內核然后再從穩定內核中backport一些安全以及其他相關的修復呢?對于穩定內核的測試從來都是置之不理呢?“ 對于這個問題的答案么,他自己半開玩笑的建議:可以將測試留給了用戶。除了上面這個半開玩笑的建議以外,大多數人都一致認為:目前對于穩定內核,除了簡單的構建-啟動測試以外,幾乎很少有其他方面的測試。那么這個現象是如何造成的呢?

內核測試的困境

第一點:開發者很難知道該去選擇什么樣的上游內核(upstream kernel)來測試。linux-next tree和穩定內核以及內核主線(mainline)都是在不斷地變化著,要想做到穩定測試是一件很難的事情。但是大家又都一致同意,能在代碼發布出來之前,發現其中的BUG還是很有價值的,所以一些發行版的研發人員就嘗試測試-rc1的內核。這樣做的話,如果bug被發現,它們將在發布前就被修正,這樣看起來是不錯的,但是這樣需要非常多的時間和機器去做好這件事。另外,測試時使用的哪個版本的內核配置,也會使這個問題的復雜度翻倍。

第二點:內核測試消耗大量的人力物力。有人舉了一個生動的例子,紅帽(RedHat)需要花費一年的時間去穩定RHEL選定的內核版本。而粗略估計有300個工程師去做這個事情,這也就是意味著一個公司需要花費了300個人年去測試和穩固一個內核(譯者在此處還是要感謝一下REDHAT)。此外,在驅動程序中,通常驅動的自檢程序是應該由內核開發人員編寫,但將個人的測試變成可以更廣泛使用的東西需要很多時間和精力,而驅動的作者根本沒有時間去添加一個自檢程序,所以驅動大多數是沒有自檢程序的。在許多情況下,正是由于這個原因,導致代碼質量很差。因此,現有的大部分自檢程序可能都是在子系統中并已經做了很好測試,這些測試用例還能發現的大部分的錯誤主要發生在與開發者自己運行的硬件架構不同有關,比如ARM相關的錯誤就是這樣被發現的。

第三點:啟動測試(boot testing)占了上游內核測試的大頭,占據了開發者更多的精力,所以最新發布的內核肯定可以啟動起來的。擁有特殊硬件的人會測試他們的驅動,所以通過這一測試也可以發現大部分驅動的bug。像Ftrace、調度器和內存管理由于使用的很廣泛,所以他們的測試也比較充分。除了以上這些組件以外,內核中其他的一些非核心或者不是被普遍使用的功能就可能沒有那么多的功能測試了。

第四點:內核測試門檻較高,如環境設備和知識儲備。對于一些想要測試驅動程序的人來說,他可能沒法獲得相應的硬件,即使有硬件,他還需要深入了解設備是如何工作的。理想情況下,驅動程序的作者應該測試這些設備,而大部分情況下也確實是這樣。不過這個解決方案仍然不是完美的。

第五點:測試覆蓋不全面,測試方面單一。因為雖然驅動作者試圖確保在他的測試用例下驅動程序是正確工作的,但是他們有著不同的動機,如果他被雇傭做這個事情那么可能測試會比較全面,而如果他僅僅是為了讓他自己的硬件可以正常工作,那么可能測試不會太全面,同時相應的文檔也基本沒有。

第六點:需要制定測試指南和幫助文檔。例如,在內核測試中我們還需要發現一些可能引入的性能退化(performance regressions),但是如果僅僅是做一些”隨機性能測試“(random performance testing),這是很難發現性能退化的,因此我們需要制定一些性能測試指南,以便可以進行一些蘋果對蘋果(apples-to-apples,譯為同類型的比較)的對比測試。再如,就像Mel Gorman的MMTests作為“kbench”這一性能測試套件的基礎,貌似有些與會者對這個測試套件不熟悉,所以MMTests需要有更好的文檔來幫助使用者去了解它。

第七點:進行內核測試的另一個困難是要內核配置的數量非常龐大。當穩定的內核被發布的時候,它可能有100個補丁,但任何測試套件都不可能執行許多次去測試這些補丁,那么測試穩定版本的意義到底是什么呢?

總結一下,在所有的這些測試工作中,最大問題就是資源,我們需要更多的人和更多的機器,從而可以更早地發現和修復錯誤。

企業是如何做的

我們再把話題切回到穩定內核。如果我們可以阻止所有可能的bug引入到內核,那么主線內核(mainline)無疑是完美的,我們也就不需要什么穩定分支了(stable trees)。當然現實是殘酷的,完美也是不可能的,所以我們仍然需要穩定分支,但是發行版真的會使用穩定分支么?讓我們一個一個看過去。

企業例子之一(紅帽)

紅帽有一個大型測試實驗室,有6000多臺各種各樣的機器分布在世界各地。實驗室使用Beaker并測試了大量不同的內核配置,目前內核測試主要集中在三個RHEL內核和兩個Fedora內核上,未來他們會計劃添加一些主線版本的內核。在紅帽內部,不同的團隊專注于他們感興趣的驅動,比如存儲團隊在測試各種存儲設備,而RDMA團隊在測試RDMA類型的硬件。所以,對于紅帽而言,他們只從穩定的樹上去挑選(cherry-pick)一些修復的補丁。 RHEL的每個小版本內核都有8-10萬個補丁,但是所有的這些補丁都來自上游而不是穩定分支。RHEL內核團隊會查看穩定的分支和最新的主線內核,然后尋找有必要使用的補丁。至于對應的測試則取決于這些補丁是應用于哪一個子系統; 一些子系統在補丁追溯方面做得很好,而其他子系統則較差。對于穩定內核的使用,一般Red Hat只是編譯了一下并用它來和RHEL內核做對比測試,以確定這些錯誤是來自上游還是在RHEL中引入的。

企業例子之二(SUSE和Ubuntu)

再看看SUSE,他們確實在構建穩定內核,但他們僅僅是為了挑選(cherry-pick)補丁。他們有考慮將穩定的內核測試添加到SUSE的測試網格(testing grid)中,但大家還不清楚它會對公司帶來什么樣的價值。Ubuntu面對的情況也是類似的:他們除了建立穩定的內核以外,并沒有對它們進行正式的測試。

企業例子之三(Linaro)

Linaro目前正在為谷歌開發一個使用內核自檢(kernel self-tests,縮寫kselftest)和Linux測試項目(Linux Test Project,縮寫LTP)來測試穩定的內核項目,這些測試會針對每個穩定的發布版本來進行。自檢測試的確能發現bug,但編寫這些自檢測試的人可能并不是引入大多數錯誤的人。所以自檢測試還只是一個開始,顯然Linaro還需要增加更多的測試。

所以綜合來看,版本發布者一般都只是關心,合并到穩定版本里的修復(fix)是否是正確的,但是他們只是從穩定版本中摘出修復(fix)然后放到自己的內核中做測試,對穩定內核本身的測試是非常有限的。于是有人建議可以由Linux基金會與Canonical,SUSE,Red Hat等公司一起組建一個合作項目,大家一起貢獻一部分機器同時形成一套測試套件來進行穩定內核的測試。

測試的不斷改善

例一:0天內核測試服務(0-Day kernel test service)。這個服務也不僅僅是構建和引導測試(build-and-boot tests),還包括一些性能測試。 kernelci.org項目也正在對許多不同的硬件進行構建和引導測試(build-and-boot tests),這些都是非常有價值的,但他們沒有做任何真正的功能性的測試。當然事情肯定會變得越來越好,大家不都是說“有比沒有好么”。

例二:LTP(Linux Test Project)。它可以測試很多東西,但也有很多地方它并不會去測試。它會被一些發行版使用,然后也肯定能在里面發現一些bug,但很明顯我們需要更多更好的測試套件。

例三:性能測試(benchmark)和模糊測試(fuzzing)。會上還討論了穩定內核的模糊測試。模糊測試上游內核是一種最好的選擇,因為所有問題的修補都在那里,但它仍然可以在發行版的內核中發現問題。目前syzkaller fuzzer已經可以針對它發現的問題自動生成小的測試用例,大家也覺得這些應該被加入自檢測試集。雖然有人提到一些BUG只在Kernel Address Sanitizer(縮寫KASAN)下才會出現,但這些測試在那些沒有被配置KASAN的內核上運行的時候是可以簡單地被跳過的。除了找BUG的測試之外,內核還需要更多的性能測試來發現性能退化(performance regressions),有人提到可以用Mel Gorman的MMTests作為“kbench”這一性能測試套件的基礎,只是這個套件對應的文檔很少了,所以我們需要在內核文檔目錄中建立一個測試套件目錄作為一個開始,但任何復雜的性能測試顯然需要更加深入的文檔。

例四:基準數字(single number)。有人提議說,如果我們有一個性能測試然后給出一個基準數字,而我們可以基于這個數字來判斷性能是否有退化就完美了(比如BogoMips背后的想法),當然有另外一些人會質疑是否真的存在這樣的測試系統。

例五:自我測試(self-tests)。越來越多的自我測試,正在被添加到內核主線中,但是穩定的內核卻不會從中受益。有些人正在使用較老的內核進行最新的自我檢測,于是有人提議也許自我測試本身應該被移植到穩定的內核樹中。

例六:神經網絡訓練。隨著BoF的結束,Levin要求發行版的維護者將他們正在使用的補丁推向穩定的分支中去。一般發行版中的問題在穩定內核中也一定存在。他最近一直在努力訓練一個神經網絡來識別適用于穩定內核的補丁,這引起了一些笑聲,但他說結果是“出人意料的好”。

內核測試的一些其他聲音

Greg Kroah-Hartman是穩定內核的維護者,他沒有參加BoF但是其實對BoF的討論內容也有興趣。于是第二天當Levin在一個小型會議中概括總結BoF的討論結果的時候,Greg給出了他的一些意見。

首先正如Levin所說,在BoF中大家提出了很多的觀點,但是并沒有什么相應的解決措施。有人建議應該向kernelci.org項目提供更多的硬件,Kroah-Hartman同時希望能看到更多的功能測試。另外還有一些人提議應該讓Linaro和kernelci.org一起努力合作這樣更好。

關于移植自我檢測(self-tests),Kroah-Hartman并不反對這個想法,只要它們能在出問題的內核上運行就可以。他也同意如果發行版能將它們的修補補丁打在穩定的分支(tree)上,那將是一件很好的事情,而且他提到Fedora和Debian已經在該領域做得很好。另一位與會者表示,發行版經常會盡快為用戶快速解決問題,然后才會做好上游內核的工作。 Kroah-Hartman表示,如果有BUG在上游內核中沒有被修復的話,他也不會在穩定內核中修復,這樣一方面上游內核和穩定內核做到了“bug兼容”,另一方面也給了那些廠商一些壓力來修復它。

結語

我們需要進行更多的內核測試,這是毋庸置疑的,但是它究竟應該采用什么樣的形式以及由誰來做仍然不清晰。如果幸運的話,在不久的將來這塊會有一些進展,同時也意味著我們有可能會更早地發現BUG。當然,完美是不可能的,但是我們大家都希望能夠減少內核里的錯誤,對么?另外一點,大家對于上游內核(upstream)的熱情是遠遠高于穩定內核(stable)的,所以對于穩定內核的測試肯定仍然會比較少,所以穩定內核的“穩定性”是大打折扣的。

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

    關注

    87

    文章

    11292

    瀏覽量

    209333
  • LINUX內核
    +關注

    關注

    1

    文章

    316

    瀏覽量

    21644

原文標題:Linux內核測試現狀揭秘

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    詳解Linux內核源碼組織結構

    概要:本文內容包含Linux源碼樹結構分析、Linux Makefile分析、Kconfig文件分析、Linux內核配置選項分析。這些知識是為了理解
    的頭像 發表于 05-10 19:28 ?5758次閱讀

    搞懂Linux內核鏈表

    hello 大家好,今天給大家介紹linux 內核鏈表的分析,在寫這篇文章前,筆者自己以前也只是停留在應用層面,沒有深究其中的細節,很多也是理解的不是很透徹。寫完此文后,發現對鏈表的理解更加深刻了。很多現代計算機的思想在
    發表于 11-14 09:17 ?1066次閱讀

    Linux內核地址映射模型與Linux內核高端內存詳解

    Linux 操作系統和驅動程序運行在內核空間,應用程序運行在用戶空間,兩者不能簡單地使用指針傳遞數據,因為Linux使用的虛擬內存機制,用戶空間的數據可能被換出,當內核空間使用用戶空間
    發表于 05-08 10:33 ?3453次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b>地址映射模型與<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>高端內存<b class='flag-5'>詳解</b>

    【NetRouter申請】測試移植的linux內核

    申請理由:原來有塊板子,自己根據linux驅動開發書籍《宋寶華 linux設備驅動開發詳解第四版》做的移植內核,但是無奈上次板子無法刷入(串口連不上去),不知道什么原因。書也看到結尾了
    發表于 02-01 15:32

    詳解Linux內核搶占實現機制

    本文詳解Linux內核搶占實現機制。首先介紹了內核搶占和用戶搶占的概念和區別,接著分析了不可搶占內核的特點及實時系統中實現
    發表于 08-06 06:16

    Linux設備驅動開發詳解:基于最新的Linux 4.0內核

    Linux設備驅動開發詳解:基于最新的Linux 4.0內核
    發表于 08-31 12:29

    linux2.6內核設備驅動模型精華

    linux 內核驅動部分詳解
    發表于 04-27 10:43 ?20次下載

    Linux設備驅動開發詳解》第4章、Linux內核模塊

    Linux設備驅動開發詳解》第4章、Linux內核模塊
    發表于 10-27 14:15 ?0次下載
    《<b class='flag-5'>Linux</b>設備驅動開發<b class='flag-5'>詳解</b>》第4章、<b class='flag-5'>Linux</b><b class='flag-5'>內核</b>模塊

    Linux內核配置系統詳解

    隨著 Linux 操作系統的廣泛應用,特別是 Linux 在嵌入式領域的發展,越來越多的人開始投身到 Linux 內核級的開發中。面對日益龐大的 L
    發表于 11-01 15:45 ?4次下載

    linux內核rcu機制詳解

    Linux內核源碼當中,關于RCU的文檔比較齊全,你可以在 /Documentation/RCU/ 目錄下找到這些文件。Paul E. McKenney 是內核中RCU源碼的主要實現者,他也寫了很多RCU方面的文章。今天我們而主
    發表于 11-13 16:47 ?8771次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>內核</b>rcu機制<b class='flag-5'>詳解</b>

    Linux內核GPIO操作函數的詳解分析

    本文檔的主要內容詳細介紹的是Linux內核GPIO操作函數的詳解分析免費下載。
    發表于 01-22 16:58 ?28次下載

    學習linux內核些建議

    學習linux內核,這個可不像學門語言,c或者java個月或者3月你就能精通掌握。學習linux內核
    發表于 05-07 15:20 ?618次閱讀
    學習<b class='flag-5'>linux</b><b class='flag-5'>內核</b>的<b class='flag-5'>一</b>些建議

    搞懂Linux系統內核的重要性

    今天我要跟大家分享Linux內核的重要性。內核就像Linux系統運行的大心臟,對系統的運行起到了至關重要的作用。那么
    的頭像 發表于 03-24 15:16 ?915次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>搞懂<b class='flag-5'>Linux</b>系統<b class='flag-5'>內核</b>的重要性

    linux內核源代碼詳解

     在安裝好的Linux系統中,內核的源代碼位于/ust/src/linux.如果是從GNU網站下載的Linux內核的tar文件,則展開以后在
    發表于 09-06 17:01 ?4次下載

    Linux內核測試技術

    內核測試技術是實現這目標的關鍵手段。本文將詳細介紹 Linux 內核測試的各種技術,包括單元
    的頭像 發表于 08-13 13:42 ?484次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內核</b><b class='flag-5'>測試</b>技術
    主站蜘蛛池模板: 国产色综合色产在线视频| 在线观看亚洲免费人成网址| 特级aa 毛片免费观看| 亚洲国产精品久久精品成人网站| 一区一区三区产品| 大咪咪dvd| 麻豆国产96在线日韩麻豆| 双腿打开揉弄高潮H苏安安秦慕深 双腿被绑成M型调教PLAY照片 | 免费毛片视频网站| 色综合久久久久久| 在线视频a| 果冻传媒在线完整免费播放| 牛牛在线视频| 一个人看www| 国产精品日韩欧美一区二区三区| 美女脱三角裤| 亚洲精品中文字幕在线| 成人性生交大片免费看中文| 老司机亚洲精品影院| 亚洲欧洲免费三级网站| https黄视| 美国69xxxx59| 97人人爽人人爽人人人片AV| 精彩国产萝视频在线| 亚洲 视频 在线 国产 精品| 自拍黄色片| 国产人A片在线乱码视频| 日本欧美午夜三级| 97精品免费视频| 浪潮AV色综合久久天堂| 99国内精品| 亚洲日本香蕉视频观看视频| 欧美性爱 成人| 内射一区二区精品视频在线观看 | 国产成人精品永久免费视频 | 亚洲精品久久久午夜麻豆| 国产AV99激情久久无码天堂| 思思99精品国产自在现线| 国产精彩视频在线| 亚久久伊人精品青青草原2020| 国产在线观看网址你懂得|