Cargo 的调度能做得更好吗?b-level 启发式调度的实测
来源: spirali.github.io — 2026-08-31
概述
作者(长期研究调度器的 HyperQueue 维护者)用系统调用追踪重建 17 个 Rust 项目的编译依赖图,对比 Cargo 自带的调度与各种启发式算法。结论鲜明:b-level(自底向上取任务剩余最长链)启发式稳定胜出,在 4 核受限环境下中位省时约 8%、最多 16%,且更接近伪最优。更有趣的是,即便任务时长估计误差高达 60%、甚至只知道「快/慢」一个比特,b-level 依旧优于 Cargo 基线,说明一个简单的贪心启发式就已逼近昂贵搜索所能找到的调度质量。
核心要点
- b-level 启发式(取任务剩余最长依赖链)稳定优于 Cargo 自带调度
- 4 核下中位省时约 8%、最多 16%
- 仅需每任务一个比特(快/慢)即可击败 Cargo 基线
- 时长估计误差高达 60% 也几乎不影响中位收益
- rustc 的编译被拆成 frontend(产 .rmeta)与 rest 两节点
- 作者认为简单的 b-level 已逼近昂贵搜索能取得的效果
金句
一个简单的贪心启发式——只选剩余依赖链最长的任务——就已接近昂贵搜索所能找到的最优解。
👍 0
👎 0
返回 Lobsters 首页