#linux-kernel #调度器 #BPF #调度 #线程 #用户空间 #策略

应用 scx_rustland

一个实现底层sched-ext功能以及用户空间对应程序(调度器)的BPF组件,后者用Rust编写,实现了实际的调度策略。这在sched_ext中用到,sched_ext是一个Linux内核特性,它允许在BPF中实现内核线程调度器,并动态加载它们。https://github.com/sched-ext/scx/tree/main

9个版本 (3个稳定版)

1.0.3 2024年8月21日
1.0.2 2024年8月9日
1.0.1 2024年7月15日
0.0.7 2024年6月3日
0.0.1 2023年12月22日

#664Unix API

Download history 31/week @ 2024-05-03 7/week @ 2024-05-17 17/week @ 2024-05-24 170/week @ 2024-05-31 26/week @ 2024-06-07 5/week @ 2024-06-14 123/week @ 2024-07-12 14/week @ 2024-07-19 97/week @ 2024-08-09 94/week @ 2024-08-16

每月191 次下载

GPL-2.0-only

32KB
457

scx_rustland

这是在sched_ext中使用的单个用户定义调度器,sched_ext是一个Linux内核特性,它允许在BPF中实现内核线程调度器,并动态加载它们。了解更多关于sched_ext

概述

scx_rustland由一个实现底层sched-ext功能的BPF组件(scx_rustland_core)和一个用Rust编写的用户空间对应程序(调度器)组成,后者实现了实际的调度策略。

如何安装

作为Rust包可用: cargo add scx_rustland

典型用例

scx_rustland旨在优先处理交互式工作负载,而不是后台CPU密集型工作负载。因此,此调度器的典型用例涉及低延迟的交互式应用程序,如游戏、视频会议和实时直播。

scx_rustland还设计为“易于阅读”的模板,供任何开发人员使用,以便快速实验更复杂的完全用Rust实现的调度策略。

是否适用于生产环境?

尚不适用。对于生产场景,其他调度器可能表现出更好的性能,因为将所有调度决策卸载到用户空间会带来一定的成本。

然而,完全在用户空间实现的调度器具有与复杂的库、跟踪工具、外部服务(例如AI)等无缝集成的潜力。

因此,可能存在收益大于开销的情况,这证明了在生产环境中使用此调度器的合理性。

演示

scx_rustland-terraria

本次演示的关键点是展示,尽管在用户空间运行调度器的开销存在,我们仍然可以获取有趣的结果,在这个特定案例中,甚至在后台运行CPU密集型工作负载(并行内核构建)时,在应用响应速度(fps)方面甚至优于默认的Linux调度器(EEVDF)。

依赖关系

~26–38MB
~611K SLoC