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日 |
#664 在 Unix API
每月191 次下载
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)等无缝集成的潜力。
因此,可能存在收益大于开销的情况,这证明了在生产环境中使用此调度器的合理性。
演示
本次演示的关键点是展示,尽管在用户空间运行调度器的开销存在,我们仍然可以获取有趣的结果,在这个特定案例中,甚至在后台运行CPU密集型工作负载(并行内核构建)时,在应用响应速度(fps)方面甚至优于默认的Linux调度器(EEVDF)。
依赖关系
~26–38MB
~611K SLoC