编者按:随着Linux内核的不断更新迭代,代码越来越繁重。调度器是内核的核心子系统之一。其结构复杂,与其他子系统耦合紧密,增加了开发和调试的难度。Plugsched是一款Linux内核调度器子系统热升级SDK,可以在不重启系统和应用程序的情况下动态更换调度器子系统,具有毫秒级停机时间。本文整理自龙百合大讲堂第18期。精彩分享视频回放已上传至龙蜥官网(首页-动态-视频),欢迎查看!以下是龙蜥社区KernelSIG核心成员分享的部分精彩内容(完整视频播放及技术PPT获取方法见文末)。Plugsched是一款Linux内核调度器子系统热升级SDK,可以在不重启系统和应用程序的情况下动态更换调度器子系统,具有毫秒级停机时间。Plugsched可以在生产环境中动态增删改内核调度特性,满足不同场景或应用的需求,支持回滚。目前已经在DragonLizard社区开源。开源地址:https://gitee.com/anolis/plug...随着Linux内核的不断更新迭代,代码越来越繁重。调度器是内核的核心子系统之一。其结构复杂,与其他子系统耦合紧密,增加了开发和调试的难度。而且,调度器是嵌入在内核中的,应用新的调度器需要更换内核,这在集群中是昂贵的。此外,目前还没有全子系统的热升级方案。kpatch和livepatch是功能粒度的热升级方案,eBPF目前不支持scheduler。对于调度器来说,由于应用场景的多样性及其特点,使得调度策略的优化更加复杂。尤其是在云场景下,没有“一劳永逸”的策略。因此,允许用户自定义调度程序以满足不同的场景是很重要的。必要的。基于以上背景,Plugsched诞生了,它可以从内核中抽取出调度器子系统,以模块的形式对内核调度器进行热升级。通过调度器模块的修改,可以针对不同的业务定制调度器,使用模块可以更敏捷的开发新的特性和优化点,并且可以在不中断业务的情况下上线。本文从四个方面分享plugsched的背景、优势、应用场景和原理,并通过一个实际案例展示plugsched的价值。最后,它给你一个实际的演示。演示中详细介绍了plugsched的使用方法,每一步是如何执行的,背后的工作是怎样的。接下来是演示过程,可以参考开源仓库Readme中的QuickStart章节。PlugschedSDK提供容器化的开发环境。通过实际操作,可以快速学会使用(演示视频已上传至龙蜥官网,欢迎查看)。最后,讲师与在线听众进行了问答互动。本文主要提炼出以下五个问题:Q:回滚后,内核原有的调度器如何重新生效?A:安装scheduler包后,意味着系统中有两个scheduler,一个是kernel原有的scheduler,一个是新安装的scheduler。安装新的调度器后,内核原来的调度器就相当于被绕过了。当新的调度器包被卸载(回滚)时,内核中原有的调度器就相当于重新启用了,它会自动生效。问:Plugsched和schedeBPF有什么区别?A:目前上游社区不支持调度器的eBPFhookpoint。即使支持,也只能支持本地策略的修改,可修改的能力有限。此外,eBPF无法实现非常复杂的修改。它的检查机制非常严格,无法实现复杂的逻辑,进一步限制了修改能力。问:Google的ghOSt似乎与plugsched做了类似的工作?两者有什么区别?A:ghOSt和plugsched有不同的场景和性能。ghOSt有两种工作模式。本地模式开销较大,每次调度都需要多经过一次上下文切换,即用户态调度软件的进出切换,因此只能用于一些对延迟要求不高的场景。global模式过于依赖IPI,IPI的开销会导致调度不及时,增加时延。此外,ghOSt针对的是没有内核开发经验的用户模式软件开发人员。容错性高,但是性能比较差,只能在部分场景下使用。plugsched依然面向内核开发者,要求开发者具备与传统内核相同的开发经验,但降低了内核开发者的开发、测试、上线、回滚难度。它具有良好的性能,可以在大多数场景中使用。Q:Plugsched在模块化过程中的开销是多少?A:不需要过多关注模块化的开销,因为这个过程是离线的,生成scheduler模块后,可以不断修改生成RPM包。对于它的开销,演示过程中使用的环境是一个64核的CPU,生成调度器模块的时间大约是2-3分钟。应该是因为需要编译一次内核,开销不是很大。Q:重启系统或者换内核有影响吗?A:plugsched支持安装多内核版本的scheduler包,就像可以同时安装多个内核版本一样。系统重启后,plugsched会自动识别并安装当前内核版本的调度器模块。即使没有内核版本对应的scheduler,也不会安装其他内核版本的scheduler模块。因此,系统重新引导或内核更改无效。关于播放及课件获取【视频播放】:视频评测已上传至龙百合官网https://openanolis.cn/video。【PPT课件获取】:关注微信公众号(OpenAnolis)回复“龙百合课件”即可获取。如有任何问题,欢迎随时咨询龙蜥小助手——小龙(微信:openanolis_assis)。Plugsched相关阅读:DragonLizard开源的Plugsched:Linux内核调度器的首次热升级。欢迎更多开发者加入KernelSIG:URL:https://openanolis.cn/sig/Clo...Email:cloud-kernel@listsopenanolis.cn——完——
