初秋西安,終南山Linux核心問道之旅

2021-08-19 13:06:28 字數 4693 閱讀 8553

初秋西安,最美終南山,一眾linux大咖齊聚西安郵電大學,問道linux,共話核心技術的產學研用。

linux核心一路走來,從91年發布第乙個版本到現在26年來,核心的版本可能達到近千個,迭代速度非常快。面對外界日新月異的技術變化,隨著智慧型計算開始從雲端向嵌入式端遷移,linux 毫無爭議的成為從端到雲的人工智慧基石,如何深入**linux核心技術,創新驅動業務發展,9月18日,西安郵電大學計算機學院教授陳莉君、linux核心專家宋寶華、中興電信級嵌入式作業系統總工謝寶友、阿里巴巴核心團隊負責人秦承剛等在西安郵電大學(長安校區東區)計算機學院分別分享了自己多年的心得體會。

下午,會議在張國強的主持下開始。

西安郵電大學是一所以工為主、以資訊科學技術為特色、工、管、理、經等多學科發展的高校,是我國特別是西北地區資訊產業高階人才的重要培養基地。計算機學院成立於2023年,前身是成立於2023年的計算機系,在20多年的發展歷程中,為我國郵電通訊和資訊產業發展培養了眾多的人才。」

學校的linux研究是於2023年由陳教授帶領學生分析linux核心開始,目前發展勢頭良好,秉承自由、開放、分享的文化理念,為眾多學生提供了系統交流、知識共享、注重實踐、校企接軌的平台,消除產學研瓶頸。他最後希望以此次研討會為契機,繼續深化合作,擴大交流,繼續保持親密的朋友關係.

同時,他代表計算機學院對校內各部門的積極參與配合表示衷心的感謝,預祝本次研討會圓滿成功。最後,他祝各位專家、老師、企業界的朋友們西安之旅愉悅快樂。

西安郵電大學計算機學院教授陳莉君分享的主題是《linux核心之旅》,主要聚集linux核心從**出發、到**去的問題。

linux核心一路走來,從91年發布第乙個版本到現在26年來,核心的版本達到了800多個,現在可能有近千個版本,迭代的非常快。我們從幾個方面、幾個指標來分析下:一是系統呼叫數、二是配置選項、三是**規律、四是函式平均複雜度。

係數呼叫數這個數量在不斷的增加,作業系統給我們提供的服務越來越強了,這個就像平台一樣。通過系統呼叫給我們提供服務功能,現在大概有400個系統呼叫,讓我們使用它的時候功能就變得強大了。

**量的變化,現在最新**有上千萬行了,這樣龐大的軟體如何管理起來?而且是全球的工程師參與,大家知道分布式的管理工具把全世界的開發者管理起來了。如果你對這樣乙個大的工程搞明白了,以後你出去任何乙個工程都是它的子工程。

函式個數的變化,由幾萬個函式一起形成乙個非常龐大的呼叫關係,linux核心是單模組的結構,互相之間完全是呼叫關係。它的內在規律sloc,linux核心的源**行數呈現增長的趨勢,平均每個主要版本增加4萬多行源**。

因為linux核心是乙個龐大的軟體,修訂一點可能都要重新編譯。怎麼解決呢?提供模組機制可以單獨編譯,程式設計師對自己開發的東西就有了掌控權,可以在編譯的時候發現問題。當你增加新的功能、啟動程式、檔案系統的時候,可以去單獨的除錯、單獨的編譯。

談及虛擬檔案系統機制,他表示這個機制隱藏了差異性,並且擁有巨大包容性。該檔案系統,linux從70年代誕生以來提出這個框架以後,這種機制三四十年來保持不變,但支援了無數個新的檔案系統。為什麼呢?它對外的介面是保持不變的,任何乙個新的成員想加入的時候,按照它的機制,就像乙個很有個性的人,想加入這個團體的時候,先把你的個性放下,按照團體的要求加入進來,大家之間的合作就非常的協調。所以虛擬檔案系統,到現在linux已經支援了三四十種檔案系統,看底下這線完全是開放的,你只要按照它的框架去做,都可以加入這個大家庭。這就是機制設計的非常巧妙和厲害之處,它的軟體框架可以做到幾十年不變。現在最大的檔案系統,大資料從ceph檔案系統同樣支援,同樣可以掛到它的下面。

linux核心專家宋寶華演講的主題為《linux效能剖析的視覺化》,議題主要是給大家分享linux效能的視覺化以及他們為什麼要做linux這樣乙個工具。

他認為關於linux方面的很多問題,對於linux的玩家來講是非常簡單的事情,但對於不太懂linux的使用者來說,卻是乙個非常複雜的事情,隔行如隔山,linux現在被很多的企業使用,問題是很多的人在linux的時候是完全找不到感覺的,並不是每個人都像陳老師這樣研究linux的,linux對他們來講只是乙個平台,而工具的作用是什麼?工具就是打通複雜事物與簡單大腦的連線,我不懂這個是什麼,但是有乙個工具可以把這個複雜的事情以簡單的形式呈現給我,這樣它就可以提高生產力。

他總結道,目前國內的linux玩家有三類。第一類是linux專家,第二類是熟悉linux的人,第三類是不熟悉linux,但是用linux的人。這其中,第三類大於第二類,第二類大於第一類。所以他們在碰到問題的時候是不一樣,乙個比較熟悉linux的人需要乙個圖形幫幫我,純粹只是玩linux的人,你可能幫他都沒有用,他要的是你救救我吧,這個linux真是玩死我了。這是lep的出發點,所以我們的出發點是直觀、可視、可互、易於使用,把最終的結果呈現給你。按照第二類和第三類使用者也可以找到方向。當然第一類也可能覺得很好用。

具體來看,lep從電路板上或者linux的電腦上,採集到了一些比較原生態的原始資料,再通過網路的形式發到上面,然後把資料解析好以後,瀏覽器在視覺化的形式上呈現出來,視覺化的結果就是你可以直接在上看記憶體負載均衡不均衡,可以直接在上看到效能的記憶體消耗和記憶體的變遷。

中興電信級嵌入式作業系統總工謝寶友的演講聚焦「linux故障分析方法」。主要講一些比較典型的查故障的方法,以及在分析故障的時候,我們如何利用核心裡面已有的功能。還有效能問題。

他總結了做linux故障分析時需要注意的幾點:

查故障的一些技術性問題,對於假死場景,他表示查詢假死故障的時候,要把中斷這一點利用好。核心也給我們提供了很好的除錯工具sysrg,它能夠看到什麼東西,哪些東西來查什麼樣的故障,這是非常有用的。大家要把sysrg的原理搞明白,它是怎麼樣做的,怎麼樣把資訊取出來,能不能把裡面的故障找出來,乙個月時間應該夠了。

海森堡bug分析。這是所有搞核心人最頭疼的問題,這種問題一般是靜態問題,和程式執行的時序緊密相關,稍微在那裡面加一點點東西故障不復現了,以前乙個月,現在可能兩個月三個月。其實這樣也可以查,首先看在哪一行**裡面加了什麼東西,你把前後的**亂序的問題或者記憶體快取的問題,走查**你找不到的時候,增加延遲,在那個地方稍微加一些函式,有可能故障更好的復現。如果增加延遲以後故障能夠復現,基本上就是和你相應的靜態問題有關了,這時候查走查**就可以查準。

阿里巴巴核心團隊負責人秦承剛的分享主題聚焦「阿里巴巴的資源隔離技術」。首先他談了下做作業系統研發的兩點體會,第一是感覺自己很牛,因為自己做的事情基本上就是這家公司最有技術含量的,硬體我們今天不具備自主的研發能力,而核心驅動以及再往上到作業系統級別,公司內部所有的疑難雜症都會落到我們的團隊來,我們做的一點創新工作,可能直接影響到這家公司所有的業務線。大家知道阿里巴巴作為一家比較知名的網際網路公司,有幾萬個伺服器,涵蓋了整個網際網路行業內所有的形態,這樣讓我們有機會發現更多的問題,並且去做更多的事情,這是第乙個體會,我們感覺自己很自豪。

第二個體會,我們總感覺是像是乙個背鍋的人,好多問題並不是核心的問題,但最終都要我們來尋求解決方法。是因為大家知道在阿里巴巴這家公司裡面,技術上最牛的人基本上集中在了我們基礎軟體和操作軟體,他們遇到問題也非常願意找我們一起做排查。因此我們要花大量的時間幫助業務解決各種各樣的疑難雜症。不久之前跟華為的作業系統團隊做過一次交流,他們團隊很搞笑,他們給自己設計了乙個標誌是背後背了乙個大鍋,因為不管你在什麼公司都有這樣的體會。

我們隸屬於阿里巴巴的技術團隊,系統軟體研發單獨成立了乙個事業部,事業部包括作業系統研發,作業系統研發主要是核心、包括資源排程等等所有最頂層的軟體。我們在核心領域目前已經持續做了四五年左右的時間,從2023年做到現在七年左右的時間,在這七年裡面積累了很多任務作,也形成了自己的核心版本alikernel。

我們可以在第一時間拿到世界上最牛的硬體,包括cpu、儲存和網絡卡類的硬體,今天公司業務發展特別的快,在國際市場,跟第一梯隊的巨頭競爭,就要求我們的技術發展要特別快,核心對他們來講就需要提供很快速、很穩定的支援。能夠讓業務開發部門基於核心去開發自己更新的業務。假如說我們還是在3.10.0上進行,就必須要做大量的工作,這些工作對我們來講是沒有任何價值的。所以我們下定決心要向矽谷的公司看齊,用最新版本來做。

當前,最新的版本是4.9,我們把工作重心從以前的3.10.0上轉到4.9上面,目的是為了縮短跟世界最先進水平之間的差距。阿里在核心上做了這麼多年的工作,到今天來講依然不過時的工作重點,比如對於容器的支援。

阿里的作業系統稱之為alios,一方面是生產線上操作生產映象,另外一方面提供基礎的映象,維持了三方軟體的支援與優化工作,還為各種不同的業務線提供了不同的工具鏈條。

我們在os上面有兩個創新的專案,這些都是面對容器環境而生的一種優化版本的作業系統。我們內部也是一樣,幾乎所有的業務都已經容器化了,與此同時,他們對於作業系統提出了不同的需求,所以我們目前在逐步的迭代os中。我們還在做乙個系統盤雲化的專案,因為今天在阿里內部做一件很大的事情,映象儲存分離,由我們資源管理系統對它進行資源調配,所有的儲存資料跑到另外乙個集群上面,中間通過高速網路進行連線,所有網狀每乙個應用都有自己的雲盤。因此對於作業系統而言,本身在伺服器上需要乙個雲盤來做作業系統的系統盤,映象分離以後希望把這個系統雲端化,這樣可以給我們專案帶來很大的提公升,並且可以節約成本。因為阿里巴巴每年要買很多臺的伺服器。

在容器支援上,我們內部前些年採用了內部虛擬化的技術,後來發現如果加入以後會使我們的資源有很大的浪費,於是後面做了乙個專案,並把這個做了乙個改造。現在基本上把所有的應用都跑在了上面。就像剛才講的,我們在內部的層面做了很多任務作,能夠把容器看成就是自己的vm一樣,比如在核心當中增加了很多namespoce隔離,其次還做了很多qos保證。在內部由於沒有安全的問題,在雲上面有一些業務,不僅要部署在內部,還要部署在公有雲上面,為外部使用者提供一些服務。我們希望內部的這套容器系統可以同時相容vm,另外,對kvm也做了很大的優化工作。希望速度可以跟容器相媲美,可以在毫秒級別拉起乙個kvm的映象,並且vm還可以相容容器的映象,這樣我們的業務只要發布乙個映象,可以在內部跑,也可以在公有雲上跑。