龙蜥白皮书精选:敏捷开发场景下的调度器热升级 SDK

简介: 传统技术无法实现整个子系统升级,不支持大型调度特性,停机时间长。而调度器热升级技术解决了该问题。

1 (2).png

文/Cloud Kernel SIG

01 背景概述

不同的应用程序,通常需要不同的调度策略来优化性能。而内核发布周期很长,升级内核的成本通常较高,优化无法快速规模化部署。并且针对特定应用的调度器优化,常常造成其他场景的性能回退,发生问题也难以回滚。通过传统热修复技术,可以在不升级内核的情况下,实现内核局部更新和优化,针对性提升一些应用的性能。但传统技术无法实现整个子系统升级,不支持大型调度特性,停机时间长。而调度器热升级技术解决了以上问题。

02 技术方案

调度器热升级 SDK 通过模块化、数据重建、热替换等技术,实现调度器研发、测试、上线、维护的敏捷化和定制化。其中,模块化技术自动地从内核中解耦出调度器模块代码,面向内核开发者提供敏捷开发的 SDK 。热替换技术使得管理员可在毫秒级 downtime 内部署。数据重建技术将数据状态从升级前的调度器迁移到升级后的调度器。通过这些技术,可以实现定制化调度器,从而解决不同应用和负载需要不同调度器的问题,并实现生产可用。相关论文「Efficient Scheduler Live Update for Linux Kernel with Modularization 」已经发表在体系结构顶会 ASPLOS '23 上。软件架构如下图所示:

17.png

方案兼容多架构、内核版本。已测试通过的包括 AArch64、x86-64 架构,4.19、5.10 系列内核。对 3.10 系列内核提供有限支持。方案同时支持各种调度器特性,经测试验证通过的包括以下:微型调度器、物理核调度器(Core Scheduling)、删除限流功能(CFS bandwidth control)、龙蜥 CPU 混部特性等、上游 Linux 社区的各种 bugfix。

03 应用场景及性能收益

调度器热升级 SDK 适合于下面几种场景,这些场景均已得到验证。


  • 架构上有针对特殊硬件、应用、负载来定制化调度器的需求。

  • 管理员不能切换内核,或周期很长;或由于社区运作停止内核版发布和维护。
  • 内核开发者需要敏捷且可回滚地开发测试上线调度器。

某云 Serverless 服务,通过调度器热升级 SDK,将 Linux 上游物理核调度器特性,以及基于之上自研的算力稳定技术,安装到龙蜥 4.19 内核老系统上。最后通过这一优化,他们的客户实例减少了约 10% 的 P99 延迟并降低了性能的抖动,还大幅降低了启动时间。验证了调度器热升级方便支持大型特性以及扩展研发的能力。

某互联网金融服务公司,利用调度器热升级 SDK,敏捷地将他们自研的调度器优化安装到他们的核心业务中。包括了 Linux CFS 调度器和龙蜥内核的 CPU 资源隔离技术的优化。稳定减少了 5% 的 CPU 资源浪费,同时降低业务 rt。上线过程中,在 40,000 线程的环境中,停机时间小于 12 ms。最终优化效果得到运维人员的认可,调度器热升级 SDK 的易用性也得到研发人员的认可,希望继续使用调度器热升级 SDK 进行系统优化。

Cloud Kernel SIG 主页:

https://openanolis.cn/sig

附:

2022 龙蜥社区全景白皮书(或龙蜥公众号【OpenAnolis 龙蜥】回复关键字“白皮书”获取)

https://openanolis.cn/assets/static/openanoliswhitepaper.pdf

 

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

KERNEL.png

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
7月前
|
JSON Serverless API
Serverless 应用引擎常见问题之通过SDK修改调度器报错如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
|
4月前
|
存储 Java 开发工具
【Azure 存储服务】Azure Blob Storage SDK 升级失败,遇见 Unsatisfied Dependency Exception 和 Unexpected Length Exception
【Azure 存储服务】Azure Blob Storage SDK 升级失败,遇见 Unsatisfied Dependency Exception 和 Unexpected Length Exception
|
7月前
|
开发工具 iOS开发 Perl
mac电脑升级到10.15.7含有支付宝SDK的组件更新报错:AlipaySDK.framework/AlipaySDK for architecture arm64
mac电脑升级到10.15.7含有支付宝SDK的组件更新报错:AlipaySDK.framework/AlipaySDK for architecture arm64
97 0
|
JSON JavaScript 前端开发
3D孪生场景SDK:Viwer 孪生世界
NSDT编辑器简化了WebGL 3D应用的开发,完全兼容Three.JS生态。本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场景,并通过JS API与场景进行交互。
148 0
|
开发框架 Cloud Native 安全
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(1)
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(1)
367 0
|
开发框架 Cloud Native 安全
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(2)
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(2)
363 0
|
Cloud Native Java Apache
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(4)
带你读《云原生机密计算最佳实践白皮书》——Apache_Teaclave_ Java_TEE_SDK 最佳实践(4)
253 0
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
114 0
|
1月前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
78 1
下一篇
DataWorks