12个版本 (4个稳定版)
新 1.0.3 | 2024年8月21日 |
---|---|
1.0.2 | 2024年8月9日 |
1.0.1 | 2024年7月15日 |
0.5.7 | 2024年6月3日 |
0.5.0 | 2023年11月30日 |
#448 in Unix API
每月243次下载
135KB
3K SLoC
scx_rusty
这是一个用于sched_ext的单个用户定义调度器,sched_ext是一种Linux内核特性,它允许在BPF中实现内核线程调度器并动态加载它们。[了解更多关于sched_ext](https://github.com/sched-ext/scx/tree/main)。
概述
一个多域、BPF / 用户空间混合调度器。调度器的BPF部分在每个域中执行简单的轮询,而用户空间部分(用Rust编写)计算每个域的负载因子,并通知BPF如何相应地进行任务负载均衡。
如何安装
作为Rust crate提供: cargo add scx_rusty
典型用例
Rusty设计得灵活,可以适应不同的架构和工作负载。可以通过调整各种负载均衡阈值(例如贪婪、频繁等),以及Rusty应该如何将系统划分为调度域,来实现任何特定系统或工作负载的最佳配置。
是否已准备好投入生产?
是的。如果调整得当,Rusty在各种CPU架构和工作负载中都应该具有高性能。Rusty默认为每个LLC创建一个单独的调度域,因此其默认配置可能也很有性能。请注意,然而scx_rusty尚未在不同NUMA节点之间区分LLC,因此在所有LLC共享相同套接字的多CCX机器上可能表现更好,而不是在多套接字机器上。
请注意,您可能会遇到不可行权重的难题,其中一个非常高的权重可能导致调度器错误地闲置核心,因为它认为这些核心对于处理单个任务的计算是必要的。这种情况也可能在CFS中出现,并且scx_rusty应该很快就会解决这个问题。
依赖项
~26–40MB
~673K SLoC