Update README.md
AgentSched 是一个面向 AI Agent 工作负载的 Linux phase-aware 资源管控原型。它运行在 openEuler 24.03 LTS SP3 / Linux 6.6 / cgroup v2 / eBPF / sched_ext 环境上,通过应用侧运行时 hint、Sensor 证据和 Decider 策略,把 Agent 当前阶段写入 phase_state BPF map,并广播给 CPU、Resource、Network、Security 四类 Agent。 当前仓库包含核心源码、Shim、BPF 探针、评测脚本和 Grafana dashboard。
phase_state
PhaseState
LD_PRELOAD
agentsched/experiment
Runtime hint / Sensor evidence | v agentsched-daemon | +--> agentsched-decider | v /sys/fs/bpf/agentsched/phase_state | +--> CPU Scheduling Agent +--> Resource Control Agent +--> Network Policy Agent +--> Security Policy Agent Application side: shim/libagentsched_shim.so shim/agentsched-shim-cli Kernel side: sched_ext / cgroup v2 / BPF LSM / pinned BPF maps
核心运行链路是:
最核心源码位于 crates/ 和 shim/。
crates/
shim/
crates/agentsched-daemon/ src/main.rs # 主控 daemon 入口 src/skill_manager.rs # dlopen 加载 Skill, 调用 init/on_phase_change/destroy src/bpf_map_writer.rs # 写 phase_state BPF map src/metrics_server.rs # Prometheus metrics endpoint examples/w14-t3-xattr-listener.rs # Shim xattr fallback listener crates/agentsched-skill-sdk/ src/lib.rs # PhaseState v2 68B + SkillVtable v1 40B ABI crates/agentsched-decider/ src/lib.rs # phase/policy 决策逻辑 crates/agentsched-sensor/ src/lib.rs, src/main.rs # Sensor 与 trace replay 支撑 crates/agentsched-skill-cpu-phase/ src/lib.rs # CPU Scheduling Agent 用户态加载入口 src/bpf/scx_agent_phase.bpf.c # phase-aware sched_ext 调度器主线 crates/agentsched-skill-resource-ctl/ src/lib.rs, src/cgroup.rs # Resource Control Agent, cgroup v2 控制 crates/agentsched-skill-net-policy/ src/*.rs # Network Policy Agent, DNS audit, allowlist, tool profile crates/agentsched-skill-sec-policy/ src/*.rs # Security Policy Agent, mode/config/hash/resolver src/bpf/sec_policy_probe.bpf.c # Security Policy BPF LSM 探针 shim/ src/lib.rs # LD_PRELOAD runtime hint path src/bin/cli.rs # CLI/xattr fallback path
如果只看一条主线,建议先读:
crates/agentsched-skill-sdk/src/lib.rs
crates/agentsched-daemon/src/skill_manager.rs
crates/agentsched-daemon/src/main.rs
crates/agentsched-skill-cpu-phase/src/bpf/scx_agent_phase.bpf.c
crates/agentsched-skill-resource-ctl/src/cgroup.rs
crates/agentsched-skill-net-policy/src/lib.rs
crates/agentsched-skill-sec-policy/src/lib.rs
. ├── crates/ # Rust workspace 核心源码 ├── docs/ # 技术文档、策略示例与测评分析报告 ├── examples/ # runtime hint / agent feedback 示例数据 ├── experiment/ # 最终复现实验、结果和可视化材料 ├── shim/ # LD_PRELOAD/CLI hint 注入通路 ├── target/ # Cargo build 输出,不属于源码 ├── Cargo.toml # workspace 定义 ├── Cargo.lock # Rust 依赖锁定 ├── LESSONS.md # 工程经验与 caveat 记录 └── README.md
基础构建:
cargo build --workspace --release
基础测试:
cargo test --workspace --release
构建 Shim:
cd shim cargo build --release
常用产物:
target/release/agentsched-daemon shim/target/release/libagentsched_shim.so shim/target/release/agentsched-shim-cli
当前运行以及开发环境为:
openEuler 24.03 LTS SP4 Linux 6.6.0-agentsched+ cgroup v2 unified hierarchy BPF LSM enabled sched_ext / scx-tools v1.0.4-dirty clang 17, gcc 12, Rust 1.95 bpftool 7.6, libbpf 1.6
部分评测需要 root 权限、BPF pinned map、cgroup v2、QEMU VM 环境中的 PMU fallback。评测脚本会在结束时确认 sec_policy_mode_map[0]=0 回滚。
sec_policy_mode_map[0]=0
本框架的实验复现依赖 Linux 内核能力、Rust 用户态构建环境、BPF 工具链以及若干 workload 工具。推荐使用与本仓库验证一致的环境;如果环境不同,尤其是内核版本、sched_ext 支持和 BPF LSM 配置不同,CPU 调度与安全策略实验可能会存在问题。
已验证环境如下:
操作系统:openEuler 24.03 LTS-SP4,(SP1,SP2,SP3已通过测试验证) 内核:Linux 6.6.0-agentsched+ x86_64 调度扩展:sched_ext / scx 可用 cgroup:cgroup v2 unified hierarchy 安全钩子:BPF LSM enabled BPF 文件系统:/sys/fs/bpf 可挂载并可写 cgroup 根路径:/sys/fs/cgroup/agentsched
可使用以下命令检查:
cat /etc/os-release uname -a mount | grep -E 'bpf|cgroup2' test -d /sys/fs/bpf && echo "bpffs ok" test -f /sys/fs/cgroup/cgroup.controllers && echo "cgroup v2 ok"
部分实验会创建或写入 cgroup、加载 BPF 程序、更新 pinned BPF map,因此需要 sudo 权限。若运行 Resource / Network / Security Agent 实验,需要确保:
sudo
/sys/fs/bpf/agentsched/ 可创建 pinned map/prog /sys/fs/cgroup/agentsched/ 可创建子 cgroup 当前内核支持 BPF struct_ops、cgroup-bpf、BPF LSM 相关能力
当前验证过的工具版本如下:
rustc 1.95.0 cargo 1.95.0 clang 17.0.6 gcc 12.3.1 bpftool 7.6.0 libbpf 1.6 Python 3.11.6 numpy 1.26.4
建议安装或确认以下工具存在:
which cargo rustc clang gcc bpftool python3 python3 -c "import numpy; print(numpy.__version__)"
openEuler 上常用依赖可参考:
sudo dnf install -y \ clang llvm gcc make bpftool libbpf libbpf-devel \ openssl-devel protobuf protobuf-compiler \ python3 python3-pip
如果系统使用 yum,可将 dnf 替换为 yum。
yum
dnf
不同实验需要的外部命令不同。推荐提前确认:
which ab nginx iperf3 dig curl jq tar sha256sum
各实验大致依赖如下:
experiment/Critical_path_tail_latency_test/
cargo
python3
experiment/DeepSeek_coding_plan_test/
experiment/Resource_agent_test/
numpy
bpftool
experiment/Network_agent_test/
iperf3
dig
curl
experiment/Security_agent_test/
Nginx / ApacheBench 主要用于历史 no-harm HTTP workload 评估。如果需要复查该类实验,可安装:
sudo dnf install -y nginx httpd-tools
在项目根目录执行:
cd /home/Dev_CJJ/CJJ/OpenEuler/agentsched cargo build --workspace --release cargo test --workspace --release
当前清理后的 workspace 包含 9 个主线 crate:
agentsched-daemon agentsched-decider agentsched-proto agentsched-sensor agentsched-skill-cpu-phase agentsched-skill-resource-ctl agentsched-skill-net-policy agentsched-skill-sec-policy agentsched-skill-sdk
如果上述构建和测试通过,说明用户态主控、阶段决策、Skill ABI、Resource / Network / Security crate 以及 CPU phase 调度器 skeleton 构建链路均处于可用状态。
推荐按以下顺序复现,先跑无需外部 API 的本地实验,再跑 DeepSeek 场景:
cd /home/Dev_CJJ/CJJ/OpenEuler/agentsched # 1. 前台关键路径尾延迟实验 sudo bash experiment/Critical_path_tail_latency_test/critical-path-tail-latency.sh # 2. Resource Control Agent 实验 sudo bash experiment/Resource_agent_test/scripts/w15-t4-resource-ctl-agentcgroup.sh # 3. Network Policy Agent 实验 sudo bash experiment/Network_agent_test/scripts/w15-t2-net-policy-4-metrics.sh # 4. Security Policy Agent 实验 sudo bash experiment/Security_agent_test/scripts/w15-t3-sec-policy-5-metrics.sh # 5. DeepSeek coding-agent 计划重放实验 bash experiment/DeepSeek_coding_plan_test/run-deepseek-coding-agent-critical-path.sh
DeepSeek 实验需要重新调用 API,应在本机环境中配置对应 API Key;如果不配置,也可以使用实验目录中已经冻结的plan和结果进行说明书复核。
实验结论说明:
bpftool prog show
详细报告见:
docs/agentsched-evaluation-analysis.md
核心结果位于:
experiment/Critical_path_tail_latency_test/ experiment/DeepSeek_coding_plan_test/ experiment/Resource_agent_test/ experiment/Network_agent_test/ experiment/Security_agent_test/
摘要:
最终可复现实验在目录 experiment/ 下,每个测试目录包含脚本、结果、可视化和 README:
experiment/
AgentSched 使用 openEuler、Linux sched_ext、eBPF、cgroup v2、libbpf-rs 等系统能力构建。AgentCgroup论文相关讨论用于公开描述数字对齐和对比。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
AgentSched
AgentSched 是一个面向 AI Agent 工作负载的 Linux phase-aware 资源管控原型。它运行在 openEuler 24.03 LTS SP3 / Linux 6.6 / cgroup v2 / eBPF / sched_ext 环境上,通过应用侧运行时 hint、Sensor 证据和 Decider 策略,把 Agent 当前阶段写入
phase_stateBPF map,并广播给 CPU、Resource、Network、Security 四类 Agent。 当前仓库包含核心源码、Shim、BPF 探针、评测脚本和 Grafana dashboard。功能点
PhaseState。LD_PRELOAD与 CLI/xattr 两条应用侧 hint 路径。agentsched/experiment下。架构
核心运行链路是:
PhaseState。核心源码
最核心源码位于
crates/和shim/。如果只看一条主线,建议先读:
crates/agentsched-skill-sdk/src/lib.rscrates/agentsched-daemon/src/skill_manager.rscrates/agentsched-daemon/src/main.rscrates/agentsched-skill-cpu-phase/src/bpf/scx_agent_phase.bpf.ccrates/agentsched-skill-resource-ctl/src/cgroup.rscrates/agentsched-skill-net-policy/src/lib.rscrates/agentsched-skill-sec-policy/src/lib.rs目录结构
构建
基础构建:
基础测试:
构建 Shim:
常用产物:
运行环境要求
当前运行以及开发环境为:
部分评测需要 root 权限、BPF pinned map、cgroup v2、QEMU VM 环境中的 PMU fallback。评测脚本会在结束时确认
sec_policy_mode_map[0]=0回滚。完整可复现实验环境
本框架的实验复现依赖 Linux 内核能力、Rust 用户态构建环境、BPF 工具链以及若干 workload 工具。推荐使用与本仓库验证一致的环境;如果环境不同,尤其是内核版本、sched_ext 支持和 BPF LSM 配置不同,CPU 调度与安全策略实验可能会存在问题。
1. 操作系统与内核
已验证环境如下:
可使用以下命令检查:
部分实验会创建或写入 cgroup、加载 BPF 程序、更新 pinned BPF map,因此需要
sudo权限。若运行 Resource / Network / Security Agent 实验,需要确保:2. 基础工具链
当前验证过的工具版本如下:
建议安装或确认以下工具存在:
openEuler 上常用依赖可参考:
如果系统使用
yum,可将dnf替换为yum。3. workload 与评测工具
不同实验需要的外部命令不同。推荐提前确认:
各实验大致依赖如下:
experiment/Critical_path_tail_latency_test/cargo,sudo,python3, sched_extexperiment/DeepSeek_coding_plan_test/python3,cargo,sudo, 可选 DeepSeek APIexperiment/Resource_agent_test/python3,numpy,bpftool, cgroup v2experiment/Network_agent_test/iperf3,dig,curl,bpftoolexperiment/Security_agent_test/bpftool, BPF LSM,python3Nginx / ApacheBench 主要用于历史 no-harm HTTP workload 评估。如果需要复查该类实验,可安装:
4. 构建与基础自检
在项目根目录执行:
当前清理后的 workspace 包含 9 个主线 crate:
如果上述构建和测试通过,说明用户态主控、阶段决策、Skill ABI、Resource / Network / Security crate 以及 CPU phase 调度器 skeleton 构建链路均处于可用状态。
5. 实验复现顺序
推荐按以下顺序复现,先跑无需外部 API 的本地实验,再跑 DeepSeek 场景:
DeepSeek 实验需要重新调用 API,应在本机环境中配置对应 API Key;如果不配置,也可以使用实验目录中已经冻结的plan和结果进行说明书复核。
6. 复现边界说明
实验结论说明:
bpftool prog show、系统采样和静态证据作为 fallback。快速理解评测结果
详细报告见:
核心结果位于:
摘要:
实验复现入口
最终可复现实验在目录
experiment/下,每个测试目录包含脚本、结果、可视化和 README:License / 致谢
AgentSched 使用 openEuler、Linux sched_ext、eBPF、cgroup v2、libbpf-rs 等系统能力构建。AgentCgroup论文相关讨论用于公开描述数字对齐和对比。