轻量 ML Shadow 分类器,用于验证 Fingerprint 特征的可学习性,不参与调度决策;
本地离线 LLM Copilot,用于解释项目文档和实验依据,不参与调度或系统控制;
只读 Web Dashboard,用于展示运行闭环、性能证据和扩展能力。
核心运行闭环
用户目标与配置
|
v
运行状态采集 (/proc,可选 eBPF)
|
v
Workload Fingerprint
|
v
Replay State 兼容性检查与 Profile Select
|
v
M6 Safety Gate
|
+--------------------+
| |
v v
baseline sched_ext / scx
| |
+---------+----------+
|
v
测量、清理与 Run Record
|
v
更新下一兼容轮状态
面向 openEuler 的自适应资源管控 Agent
本项目对应“第三届中国研究生操作系统开源创新大赛暨开放原子大赛操作系统专项赛”社区赛题:面向 openEuler 的自适应资源管控 Agent。
作品简介
本作品是一套运行在 openEuler 用户态的自适应资源管控框架。项目以 CPU 调度为核心,通过
/proc和可选 eBPF 观测获取 workload 的真实运行特征,构建 Workload Fingerprint;随后结合历史兼容状态形成调度选择,并通过安全生命周期管理将 baseline 或 scx profile 作用于 Linuxsched_ext调度路径。任务结束后,系统统一记录前台性能、后台影响、公平性、实际执行状态和清理结果,为下一兼容轮提供反馈。项目没有重新实现 Linux 内核调度框架,也不让 Python 进入高频调度热路径。Python Agent 负责低频感知、策略选择、运行编排和证据组织,真实任务调度由内核
sched_ext/scx执行;C/libbpf 与 BPF 负责近内核观测及隔离式扩展能力。最终稳定参考为 Agent v1。它采用两阶段 Replay:首次遇到某一运行上下文时主动使用 baseline 完成观测并建立状态;下一兼容轮对历史 Fingerprint、环境和 profile 可用性进行检查,再选择 baseline 或适配的 scx profile。所有真实 scx 操作必须经过配置授权、命令行确认、非 dry-run 状态和 M6 Safety Gate,并在任务结束后恢复默认调度状态。
除 CPU 调度主线外,项目还提供:
核心运行闭环
稳定路径只使用运行时可观测信息形成决策,不读取 benchmark 名称、预期类别或性能结果作为策略输入。ML Shadow、eBPF Shadow 和离线 LLM 均作为辅助验证或解释路径,不改变本轮选中的 scheduler profile。
赛题要求完成情况
/proc采样、进程树、Fingerprint、可选 eBPF 调度观测scx_simple、scx_qmap、scx_central、scx_flatcg核心成果
1. 真实行为驱动的跨轮自适应
Agent 将分散的运行时指标聚合为结构化 Fingerprint,并通过 workload signature 隔离不同运行上下文。首次运行负责建立真实观测,下一兼容轮才复用经过检查的历史状态,从而解决“调度策略需要在任务运行前确定,而行为特征需要在运行后获得”的时序问题。
2. 用户态决策与内核态高效执行
策略形成和实验控制位于 Python 用户态,scx 调度器在 Linux 内核调度路径执行。该边界兼顾了策略迭代的灵活性与内核热路径的执行效率。
3. 完整的安全生命周期
真实 scx 启动前必须通过权限、内核能力、环境冲突和双重授权检查。启动后需要确认
active/confirmed,结束时只回收本轮持有的资源;条件不满足时主动保持 baseline,执行异常时安全回退。4. 可扩展的 Policy Agent 框架
Resource、Network 和 Security Policy Agent 复用统一的
observe -> decide -> apply -> verify -> measure -> rollback -> explain生命周期,并在隔离对象上完成真实控制与清理验证。这些能力默认关闭,不与 CPU 性能实验并行运行。5. 证据驱动的结果治理
项目同时保留正向、候选、未决和回归结果。正式结论由预先确定的样本资格、配对统计、安全门槛和执行完整性共同决定,配置、运行记录、二进制哈希、统计结果和报告通过 Evidence Manifest 建立对应关系。
正式性能结果
以下数据来自冻结的正式矩阵或独立 holdout,详细来源由
configs/final-claims.v2.json和experiments/evidence-manifest.json索引。process_burst_parallelconfirmed_improvementconfirmed_foreground_priority_improvement0.916482,95% 单侧下界0.9005770.90资源边界cpu_pythoncandidate_improvementcandidate_adaptive_advantage其中,kernel build 结果对应用户显式选择的
controlled_foreground_priority目标,不能表述为默认 balanced 策略的无条件收益。M8-e3 的回归结果和 M8-e4c 的未决结果同样保留,用于说明策略泛化边界与独立验证机制。功能与能力概览
CPU 调度主线
eBPF 与 Policy Agent
sched_observer:跟踪 PID 或 process tree 的 fork、switch 和 wakeup 事件;学习型 Shadow 感知
M13-a 使用 proc-based Fingerprint 特征训练轻量分类器,并在按 workload group 隔离的 75-run、21-group 测试中取得 Accuracy 与 Macro F1 均为
1.0,Accuracy Wilson 95% CI 为[0.9513, 1.0]。该结果证明当前特征具有良好的行为区分能力,但模型固定为:离线 Copilot 与 Dashboard
Copilot 使用本地
llama.cpp与 Qwen2.5 模型解释白名单项目文档和实验依据;无模型或输出校验失败时使用确定性模板回退。Dashboard 只读取已生成的结构化证据,不启动 workload、scx、eBPF 或 Policy Agent,也不写入 Policy State。项目结构
运行环境
主要验证环境:
CONFIG_SCHED_CLASS_EXT项目 Python 主线仅使用标准库,不要求联网安装 Python 依赖。若需要重新构建 eBPF 组件或外部
tools/sched_ext调度器,请参考 环境搭建说明 和 调度器集成说明。运行说明
以下命令均在项目根目录执行:
1. 验证 Python 与能力注册
预期结果:Python 编译无错误,Capability Registry 显示 64 个 Tool、6 个 Skill,且校验通过。
2. 运行最小安全闭环
示例配置默认使用
dry_run与 mock/baseline backend,只执行配置加载、感知、决策计划和结果记录,不改变系统调度状态。输出写入experiments/runs/。3. 执行最终只读验收
这组命令核对源码、Tools/Skills、冻结 claims、正式证据、M12 rollback、M13 Shadow 结果和交付索引,不重跑大型性能矩阵。
4. 运行安全演示
该入口读取已有证据并展示 CPU 调度、eBPF、性能结论和扩展能力,不启动真实 scx,不挂载 eBPF,也不加载本地模型。
5. 启动只读 Dashboard
浏览器访问:
如需从同一局域网的宿主机访问虚拟机页面,可将监听地址改为
0.0.0.0,并使用虚拟机 IP:Dashboard 是只读展示入口。启用本地 Copilot 的可选方式见 Dashboard 说明 和 离线 LLM Copilot 说明。
6. 构建 eBPF 组件
构建不会自动挂载程序。真实 attach 仍需使用受控验证入口。
7. 检查并验证真实 scx 生命周期
先执行只读 precheck:
确认内核、权限、binary 和当前
sched_ext状态满足要求后,才可显式运行正向验证:正向验证会启动真实 scx,并在 workload 结束后停止受管 scheduler、恢复
sched_ext=disabled。请勿与性能实验、本地 LLM 或其他系统控制任务并行运行。8. 验证 Policy Agent 扩展
静态验证和安全 dry-run:
仅在专用测试环境中执行真实正向验收:
该命令只应作用于配置中定义的临时 cgroup、netns/veth 和测试文件。任一 rollback 不完整时,应先按 journal 执行恢复,不应继续其他真实控制。
9. 验证 ML Shadow 感知
该命令验证数据分组、模型、置信区间、OOD 逻辑和历史报告,不赋予模型 scheduler 决策权限。
安全边界
证据与复现
推荐按以下顺序审查项目:
机器可读入口:
历史实验的正向、候选、未决和回归结果均保留在
docs/与experiments/中。README 只呈现最终稳定主线和冻结结论,不使用 smoke 或 exploration 结果替代正式性能声明。第三方组件与原创边界
项目基于 openEuler/Linux、Linux
tools/sched_ext提供的 scx 调度器、libbpf/BPF 和可选的llama.cpp/Qwen2.5 构建。仓库不把这些第三方组件描述为原创实现。项目自主实现的主要部分包括:Python Agent 主控框架、Workload Fingerprint、两阶段 Replay、策略映射与 profile 选择、M6 安全生命周期、Tools/Skills Registry、实验编排与可信统计、eBPF/Policy Agent 集成、ML Shadow 验证、证据治理和只读 Dashboard。更完整的来源与依赖说明见 项目说明 和各组件文档。
许可证
本项目许可证见 LICENSE。第三方组件继续遵循各自的开源许可证与使用条款。