鲲鹏经典直播征文】+openEuler内核热升级,业务不停机

网友投稿 1128 2022-05-30

一、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

【鲲鹏经典直播征文】+openEuler内核热升级,业务不停机

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小时内删除侵权内容。

上一篇:13万张表,数亿行代码,华为云UGO助力异构数据库迁移只需小时级完成!
下一篇:《C++ Primer》第二章要素太多?带你快速回顾里面少见的生僻点
相关文章