《郭锦辉、李喆-面向云服务的内核热升级探索.pdf》由会员分享,可在线阅读,更多相关《郭锦辉、李喆-面向云服务的内核热升级探索.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、面向云服务的内核热升级探索字节跳动基础架构部内核团队李喆 郭锦辉2023-3-26目录页 内核热升级-背景 数据持久化-基石 设备运行状态-保活 内核光速启动-穿越 结语为何需要进行内核更新内核发展迅速,但存量内核升级较慢,导致存量版本多,通常3.10、4.4、4.9、4.19、5.10等多个版本共存业务场景的不断丰富,导致内核部署形态多,互联网大厂的数据中心物理机+不同规格的虚拟机通常有几十万、百万+实例的量级数量多问题多需求多近年软硬件架构的高速发展对内核不断提出运行性能、资源利用率、成本优化、运维效率、隐私安全等维度的特性或架构方面的需求Linux内核社区保持每年5、6个stable版本
2、、1个LTS版本的高速发展Linux LTS仅bugfix,每月保持6个版本、300500个commit的高速更新Linux kernel的安全cve每年在100+以上据统计,除了软件bug,硬件缺陷导致的宕机也占掉30%以上,需要增强内核进行可靠性规避场景多处理器(如性能、安全、异构)、高性能网络(如RDMA)、高性能多级存储(APE、NVMe等)等硬件架构的高速发展软件架构和上层业务形态以及软件栈的不断丰富(IaaS、PaaS、CaaS、FaaS、在线、离线、混部等)内核更新是数据中心、云平台持续和长期的需求内核更新的困难目录页热迁移约束多对计算资源和设备硬件有一定约束,同时存在一定的迁移
3、失败概率,VM腾挪时间周期长热升级影响大业界技术方案不成熟,探索中。但是如果聚焦在特定场景下进行,或许会有技术突破的可能性。冷升级耗时长大规模数据中心内核实例多,需要停止或迁移业务,业务影响大,内核升级实施周期长热补丁有局限通过热补丁的机制只能做到少量内核代码的更新,并且当前没有既安全、又高效的更新方案场景:以云虚拟机为单位的IaaS/PaaS(安全容器)场景,业务封装在拥有独立内核的虚拟机VM内,Host管理进程少,恢复流程相对简单。提升了内核热升级的可行性。核心诉求:内核热升级过程中,业务downtime至少满足亚秒级别,时延敏感业务需 61ms 内核热升级-背景 数据持久化-基石 设备运
4、行状态-保活 内核光速启动-穿越 结语目录页内核启动速度现状内核热升级的一个挑战:新内核的启动速度需要足够快一些常规加速手段:kexec快速重启、去掉内核打印(内核启动依然耗时数秒)右图是整个内核启动各个耗时点的大致分布左下方图是内核initcall的耗时分布initcall time加速方案一览第一阶段:Kexec优化:kernel uncompress kexec avoid memory copy kexec pre sha256 checksum verification Avoid device shutdown第二阶段:Kernel init优化:replace hugetlbfs
5、 by PAFS smp boot parallel avoid calibration loops_per_jiffy initcall parallel execution mechanism acpi init optimization pci scan and config optimization trim unused kernel functions第三阶段:User space优化:replace systemd by binit important KO buildin qemu use PAFS to save/restore mem during host reboot
6、kexec加速first kernelphysical memorynew kernel pagescompressedfirst kernelload new kernelnew kernelfirst kernelrelocatenew kernelkexec-lkexec-edecompressed kernelboot and decompresscompressednew kernelsha256 checksummemory copymemory copynew kernelfirst kernelprase kernel elf and h