【鲲鹏经典直播征文】+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
- 点赞
- 收藏
- 关注作者
评论(0)