cd ~/system
./target/release/oe-agentctl skill list
./target/release/oe-agentctl skill run workload-profiler
./target/release/oe-agentctl skill run scx-policy-router
./target/release/oe-agentctl skill run cgroup-resource-control
6.5 benchmark
cd ~/system
./target/release/oe-agentctl benchmark --duration 10
# 或
./scripts/benchmark_mixed.sh
# openEuler 自适应资源管控 Agent
作品简介
本作品面向 openEuler 24.03-LTS-SP4,设计并实现了一个用户态自适应资源管控 Agent 原型系统。系统以
oe-agentd守护进程为核心,通过 workload 感知、策略路由、sched_ext/scx 调度策略集成、cgroup 资源控制和 eBPF hook 扩展,实现“感知 → 决策 → 执行 → 回退 → 验证”的资源管控闭环。项目针对赛题要求重点实现:
oe-agentd+oe-agentctl+ Unix Domain Socket JSON-RPC 控制面。/proc、cgroup、sched_ext 状态、CPU 利用率、系统 load、延迟探针等指标。baseline、latency、throughput、isolation四类 expert,支持规则决策和滞回控制。scx_layered,提供 latency、throughput、isolation 三类 JSON 策略配置。skill.yaml标准化 sensor、policy、actuator、benchmark 能力。当前代码已在 openEuler 24.03 LTS-SP4 x86_64 VMware 虚拟机上完成编译和安全演示验证。当前验证 VM 的内核未启用
CONFIG_SCHED_CLASS_EXT,因此真实 sched_ext 调度器加载需要切换到启用 sched_ext 的内核;Agent 框架、scx 配置集成、Skills 接口、eBPF 样例编译和 cgroup 资源控制闭环均已实现并验证。运行说明
1. 环境检查
2. 编译项目
3. 推荐演示方式:安全模式
当前验证 VM 未启用 sched_ext,录屏和答辩推荐使用安全模式,临时关闭真实 scx 加载:
查看状态和执行策略切换:
展示 Skills 与 benchmark:
4. 支持 sched_ext 内核下的真实 scx 模式
如果系统内核启用了
CONFIG_SCHED_CLASS_EXT=y且已安装scx_layered,可以使用默认配置真实加载 scx 调度器:1. 项目亮点
oe-agentd守护进程和oe-agentctl控制命令,通过 Unix Domain Socket + JSON-RPC 管理本机资源策略。/proc、cgroup、sched_ext 状态、CPU 利用率、load、runnable 数量和延迟探针结果。baseline、latency、throughput、isolation四类 expert,使用规则 + 滞回避免策略震荡。scx_layered,支持file:config/scx_*.json方式加载 latency、throughput、isolation 调度配置。skill.yaml定义 sensor、policy、actuator、benchmark 能力,支持快速扩展 Agent 能力。2. 总体架构
核心闭环:
oe-agentd周期采集 workload 指标。PolicyEngine判断当前 workload 类型和压力状态。SchedulerManager调用scx_layered切换或回退调度策略。CgroupController动态调整 service/batch cgroup CPU 配额和权重。oe-agentctl对外提供 status、profile、apply、rollback、benchmark、skill 等操作。3. 目录结构
4. 环境要求
推荐环境:
CONFIG_SCHED_CLASS_EXT=y、CONFIG_BPF=y、CONFIG_DEBUG_INFO_BTF=y检查环境:
安装常用依赖:
如系统未提供
scx_layered,可从 sched-ext/scx 构建安装:5. 构建
Rust workspace:
或使用项目脚本:
eBPF 样例:
6. 快速运行
6.1 安全演示模式
该模式不依赖真实 sched_ext 内核,适合当前 openEuler VM 和答辩现场快速展示:
该脚本会启动本地 latency probe 和混部压力,展示 Agent CLI、Skills、benchmark 和 cgroup 控制能力。
6.2 启动 Agent daemon
另开终端查看状态:
6.3 手动切换策略
6.4 Skills 接口
6.5 benchmark
7. 内置策略说明
baselinelatencythroughputisolation策略路由采用滞回机制:只有连续多个窗口满足条件才切换策略;当检测到 BPF/scx 异常、指标采集失败或用户执行 rollback 时,会回退到
baseline。8. Skills/Tools 扩展接口
每个 Skill 使用
skill.yaml描述:当前内置 Skills:
workload-profiler:采集和输出 workload profile。scx-policy-router:执行调度策略路由逻辑。cgroup-resource-control:根据策略调整 cgroup CPU 资源。mixed-workload-benchmark:运行混部场景 benchmark。新增能力时,只需在
skills/下增加目录和skill.yaml,即可通过oe-agentctl skill list/run暴露给 Agent。9. eBPF 扩展
bpf/目录包含:resource_control.bpf.c:资源控制观测样例,用于采集调度和 cgroup 相关事件。network_template.bpf.c:network policy agent 模板,预留 tc/cgroup socket 观测接口。security_audit.bpf.c:security policy agent 模板,默认 audit-only,避免演示时误拦截。编译:
可选加载:
10. 已验证结果
验证环境:
6.6.0-159.4.3.154.oe2403sp4.x86_64rustc 1.96.0、cargo 1.96.0已通过:
cargo build --release --workspacemake -C bpf./scripts/demo_safe.shoe-agentctl status/profile/skill/benchmarkscx_layered --print-and-exit file:config/scx_latency.json示例安全演示结果见:
详细记录见:
docs/vm-validation.mddocs/demo-script.mddocs/submit-checklist.md11. 当前 VM 的已知限制
当前验证 VM 的 openEuler SP4 内核配置显示:
并且:
因此该 VM 不能真实加载 sched_ext 调度器。本项目已经完成 Agent 框架、scx 配置解析、调度器管理接口、cgroup 资源控制和安全演示;若要现场展示真实 sched_ext,需要启动一个启用了以下选项的内核:
切换到支持 sched_ext 的内核后,可执行:
12. 赛题要求对应关系
oe-agentd+oe-agentctl+ JSON-RPC 控制面skills/*/skill.yaml+skill list/run/proc、cgroup、sched_ext 状态、延迟探针、eBPF 模板SchedulerManager集成scx_layered file:config/*.jsonscripts/check_env.sh、demo_safe.sh、benchmark_mixed.sh、docs/vm-validation.mdrollback、baseline expert、cgroup 恢复、scx 进程管理13. 提交物
压缩包:
提交归档文件:
system-final.tar.gz