記參加開源操作系統會議

參會OS2ATC2018感想,開始學習吧

記參加開源操作系統會議

   一直想向各路大神學習,寫博客,記錄自己的學習,然而萬事開頭難,總是擔心自己寫太爛,總是被自己的各種藉口耽擱,雖然之前也有在公司內網寫過一點。哈哈,藉着這次的參會感想,我想開始在CSDN上的博客學習之路。
   這次正好有機會參加了這次在杭州舉辦的開源操作系統會議,在各路大神的侃侃而談中,有了頗多的感悟。當然受限於我本身的技術水平,可能有錯,請指正。

一、 先白話一下,個人感想

1)談談規範先行
Linux內核會議室,第二場ARM64服務器Linux的內核生態使能。談到了一些Linux特性,不過我回味的還是規範先行。報告中提到的是設計規範,(報告中提到了軟硬件解耦的方案,這個不復述了,接下來是講講我自己的感受)即使在衆多開源源碼可供參考的今天,我相信仍然有很多人也會一樣遇到從0開始設計一個新的模塊,軟件設計是把需求轉化爲軟件的重要環節,這個部分不能完全依賴於自身的水平,需要藉助已有的方案(比如其他模塊的架構、已知的類似架構規範)、設計方法(領域驅動、面向服務、自頂向下或者面向對象)或者設計工具(比如Devops工具鏈)等來進行規定。這樣才能保證一定程度的軟件質量。從Linux這邊出發,內核源碼無疑是我們的首要參考對象,其次是你開發的平臺代碼,還有一些別的開發指導。代碼的設計總是迭代開發的,需要不斷地參考,以及與你覺得可以討論的夥伴討論,畢竟獨行俠還是少的,一個有準則的團隊力量遠遠大於個人。

2)我們的BUG
Linux內核第一場講述的是雲計算環境下面臨的可靠性挑戰,裏面提到了很多建議,我個人總結是如何有效的控制出錯處理和有效的打印關鍵日誌。我在之前的開發過程中,也遇到過很多各式各樣的BUG,似乎總是做的同樣的事情:出現bug,然後發現不了問題,添加打印,然後繼續復現bug,出現bug,如此循環直到解決。這應該是程序員的苦惱之一吧,

3)我們的系統思考和熱情
整個場聽下來,有很多有意思的討論,但是我更多的是聽到了各路大神的系統性思考,和對技術的熱情。比如Inter首席工程師董耀祖對未來內存技術的發展方向的推進,擴寬了我的視野,從目前的痛點從系統的考慮這個新的技術方向。再例如。死鎖檢測機制Lockdep的改進模型,將問題先建立一個模型,再根據模型來完成這個優化,併爲社區貢獻。等等。

二、具體的說說,技術心得

1)系統中的BUG
在內核場,首先說的是雲計算環境下的面臨的可靠性挑戰,其實是有點像我們的黑匣子功能,記錄不同的運行信息,用於後期分析。但是他們在這個基礎上做了一點系統的思考,比如,如何可視化這些問題,可視化的性能畫像總是要比單純的日誌更易於分析和討論,內存故障隔離,增加了遷移失敗時的retry機制,引入數據庫,隔離出錯頁面,保證系統還能正常運行。或者增加智能解析等,幫助程序員先跳過重複的分析過程。
來自於阿里分享的報告PDF
2)異構系統的SVA
這其實是共享虛擬地址,pagetable如何傳遞給另一個異構系統,報告中提到各種體系結構下的方案,其中ARM的架構下通過ATC。ATS訪問SMMU從而訪問pagetable。
來自華爲分享的PDF
3)死鎖檢測
報告中提到了lockdep的改進,以前只支持自旋鎖的鎖,主要是簡單的迴環檢測。改進後支持讀寫鎖,可遞歸鎖,也就是說這些鎖中,即使是迴環的鎖也可能不是死鎖。
來自華爲分享的PDF
4)容器技術下的資源隔離技術
報告主要是描述了在容器技術下,面臨的資源問題。
CPU:綁定CPU的隔離,讓每個容器自己獨佔不同的CPU,但是這樣一來,就有可能會造成CPU資源的浪費,但是容器間不干擾。共享CPU的情況下,CPU利用率高,但是容器間易相互干擾。報告中給的解決方案是採用 pre_cgroup的方式先做CPU的數據採集,並利用CFS來輔助限制CPU使用。同時,也提到了混合部署。
來自阿里分享的PDF
5)DCPMM
早晨的報告中,提供的Inter推出的未來新技術,DCPMM,大概的意思就是對內存的大小進行擴容,改進,速度比DRAM慢一點,但是大小確可以達到很多,讓我們的程序設計不再受到內存的限制。並且輔助異構內存的控制系統,完成內存的整體方案。
來自Inter分享的圖片
6)AI
我是一名AI愛好者,所以不得不說說,在開源操作系統會議中,有AI系統的專題會場(聽了1~2個專題,目前都在做集成各個算法平臺, 開發出一套快速開發,通用的AI系統),同時,Linux內存會場的討論中也常常提到怎麼藉助AI來解決目前的痛點。比如,智能日誌分析。異構內存中,對熱點使用的AI預測。資源隔離報告中,提供需要一套智能的學習框架,可以對系統進行自動的調參,讓資源利用最大化。
來自微軟分享的PDF

三、保持技術的熱情

未來程序員的技能應該是多樣性的,在現在這個時代,工具的爆發將會讓程序員的效率倍增,而學習和使用這些技能和工具會很快的提升自己的程序質量。
那麼如何提升和學習呢:
1) 多看,看看業內目前的解決方案。
2) 多聽,多聽聽各個大咖對具體技術的報告,投資自己,多參加這些會議
3) 多交流,多在各個開源社區上和不同的程序員討論不同的問題
4) 精做,這裏我沒有寫多做,我覺得我們可以先focus在一個技術方向上,精了以後再擴展,技術的理論都是相同的,這樣我們學習才能更快。
5) 多寫,寫自己的學習,技術總結,當腦子裏這些東西變成要發佈的東西時,才能更加清晰自己的學習。

最後還是說說學習Linux的熱情。我覺得只有到開源社區中,具體的產生貢獻,在社區上進行問題的討論,受到Linux大咖門的批評,才能成長。
先給自己定個小小目標,開始寫學習博文吧。半年內完整的閱讀完一本Linux內核書籍,並轉化爲自己的學習博文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章