【鯤鵬經典直播征文】+openEuler內核熱升級,業務不停機
一、openEuler21.03簡介
從狹義OS到廣義OS
OpenStack ls Ready
聯通貢獻的?OpenStack Victoria 進入openEuler正式版本中,標志著 openEuler 第一次完整的支持 OpenStack 基礎設施。
全新內核,全新開始
從21.03之后完整支持 兆芯 和?RISC V,詳見下圖。
計算,存儲,網絡等支持與優化
1. 計算:內存擴展;處理器增強隔離;MPAM ARM NMI支持。
2. 存儲:io_uring支持;SCM文件系統。
3. 網絡:XDP支持;更多網絡設備支持;1822智能網卡支持。
內核熱升級
華為內部已可以在封閉場景中使用,現開放出來使得能夠在開放場景中和合作伙伴共同協作。
內存新介質技術探索(etmem framework)
共享資源利器-MPAM
HA高可用軟件
漂亮的圖形界面
二、openEuler社區發展綜述
社區SIG組發展的新趨勢
SIG組數量已經超過80個,開始從純技術引導轉變為業務引導。其中一個典型例子為 BIO(生化計算),它體現了openEuler應用范圍到了專業的領域,同時發現有人通過社區來構建相關的生態,同時能提出了新的應用模型以及對于芯片的需求是什么。
合規性SIG
Aarch32 SIG組
三、openEuler21.03社區技術展望
新的處理器廠商加入社區
openEuler for Embedded 加入
用云原生的思路重新定義OS,打造━整套“開箱即用”的云原生基礎設施
secGear機密計算
stratoVirt虛擬化
四、內核熱升級技術簡介
背景
Linux kernel有許多代碼且代碼還在增加,os代碼質量良莠不齊,因此會出現許多cve漏洞之類的問題,針對這種問題大體有兩種解決辦法:熱補丁和熱遷移。
熱補丁無法處理Kapi改變或者內聯函數,邏輯等改變比較大的情況,熱補丁多的話還會引起維護困難。熱遷移主要用于虛擬機的遷移上,會有比較大的遷移成本,引入比較大的遷移拷貝。為更好地解決這些問題,內核熱升級應運而生,就是為了做到內核升級而無感知。
熱升級流程
大體流程如下圖所示。
1. Keep Memory
Dump出來的snapshot文件巨大,導致時間增長,無法忍受故引入了keep memory這么個概念。
2. Pin application memory
pin 優化原理:讓應用數據保持在內存中,待內核熱升級后,將帶有應用數據的內存重新映射到升級內核后的應用進程當中。
用戶態pin流程圖:
內核態pin流程圖:
3. Kernel Fast Reboot
CPU Park
Preload and decompress kexec images
Memory defer and parallelize initialization
Deferring device driver probe/ initialization
4. Keep Device State
從軟件層面重新加載內核,不涉及硬件的改動,但是內核加載后還是會把硬件重新加載,這就導致一些問題。比如:切換內核加載時間長,連接狀態發生改變等。故從PCI設備狀態保持和驅動狀態保持分析。
Keep PCI Device
1) Skip PCl Enumeration
1. Not PowerManager suspend/restore
2. Restore PCl tree from old kernel
3. Don’t read/write HW registers
4. Skip HW reset and device init
2) Keep device alive
1. Reload irq and DMA config from old kernel
2. Reload memory and io mapping
Keep Driver State
1. part 1
1) Add driver suspend/restore API
1. Not PowerManager suspend/restore
2. Save driver state info into pined memory at suspend
3. Restore driver state info from old kernel at restore
4. Do some prepare and post work
2) Keep global and static variable in memory
1. ko in new kernel uses data and bss sections from ko of old kernel
2. supply of adapting for new ko with old data
2. part 2
1) Keep call back functions effective in new kernel
1. lntroduce virtual Callback table
2) Freeze and Restore workqeue
1. Freeze specified workqueue
2. Restore specified workqueue
5. Future Attempt
Enhance Criu
1) Preserve process PIDs during dumped tasks
2) Keep unix stream socket connection like tcp repair
3) Improve device fds dumping/restoring
4) Support device fds mmaping
5) Support file locks dumping/restoring
6) And some bug fix...
Defect
1) Limitations of CRIU
2) Not universal keep state method for devices and drivers
3) Reliability and Robustness
4) Reduce end-to-end time of Seamless Kernel Update
5) Universality
lmagination
1) A new and easy-to-use tool to checkpoint/restore apps
2) Standard and universal method for drivers save/restore
3) Try to push our patch to the linux mainline
4) Support for VM host update natively
5) Full user space state checkpoint/restore
6) Gradually become the standard for kernel living upgrade
7) More Reliability and Applicability
五、總結
1)對openEuler21.03有一個簡單的了解
2)對openEuler社區及其技術展望有一定的了解
3)了解openEuler內核熱升級所涉及的技術點
【參考】
【1】鯤鵬首頁:鯤鵬社區-官網丨凝心聚力 共創行業新價值 (hikunpeng.com)
【2】openEuler開發資源:openEuler 開發資源-鯤鵬社區 (hikunpeng.com)
【3】openEuler源碼倉:src-openEuler
【4】直播連接:openEuler內核熱升級,業務不停機-鯤鵬社區 (hikunpeng.com)
視頻直播 鯤鵬
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。