目录

BootGraph-AI

融合依赖图建模与智能辅助分析的 openKylin 启动性能优化平台

BootGraph-AI 面向 openKylin x86 PC 或虚拟机环境,围绕 systemd 启动过程完成数据采集、依赖图建模、关键路径识别、优化建议生成、事务化执行、回滚恢复和可视化报告输出。项目目标是在保证图形登录可用、桌面环境正常使用和系统功能完整的前提下,定位启动瓶颈并提升启动效率。


一、作品简介

1. 项目背景

openKylin 桌面系统启动过程涉及 systemd target、service、socket、device、mount 等多类 unit。不同 unit 之间存在 AfterBeforeRequiresWants 等依赖关系,单个服务耗时并不一定代表真实瓶颈,真正影响启动完成时间的是由依赖关系串联形成的关键耗时路径。

BootGraph-AI 将启动过程抽象为有向依赖图,通过图分析方法识别关键路径和阶段瓶颈,并结合可回滚的优化事务机制,对服务裁剪、启动顺序调整、并行初始化优化和无效等待消除等操作进行安全管理。

2. 核心功能

  • 启动数据采集:采集 systemd-analyzesystemctljournalctl 等启动相关数据。
  • 依赖图建模:解析 unit 依赖关系,构建启动依赖有向图。
  • 关键路径识别:计算影响启动完成时间的关键链路和主要耗时节点。
  • 启动阶段分析:按系统初始化、用户登录、桌面就绪等阶段展示耗时占比。
  • 优化建议生成:输出服务裁剪、延迟启动、等待时间优化、并行化调整等建议。
  • 事务化自动优化:对可执行优化动作生成 Transaction,记录执行前状态和回滚步骤。
  • 安全回滚:支持按事务反向恢复服务状态和配置文件。
  • 智能分析报告:支持离线规则分析,也支持配置 API 后生成更完整的分析说明。
  • 可视化平台页面:生成首页、HTML 报告、Markdown 报告和对比报告。

3. 输出产物

运行后会生成以下文件:

  • outputs/index.html:平台首页
  • outputs/report.html:HTML 技术报告
  • outputs/report.md:Markdown 技术报告
  • outputs/analysis.json:关键路径和图分析结果
  • outputs/plan.yaml:优化建议清单
  • outputs/plan.json:优化建议结构化数据
  • outputs/ai_agent_report.md:智能分析报告
  • outputs/ai_agent_trace.json:分析链路记录
  • outputs/transactions/latest.json:优化事务记录
  • outputs/compare.json:优化前后对比数据
  • outputs/compare.md:优化前后对比报告

二、运行环境

1. Windows 开发环境

Windows 主要用于本地开发、样例数据演示和页面报告生成。

建议环境:

  • Windows 10/11
  • Python 3.10 及以上
  • PowerShell

2. openKylin 真实环境

真实采集和系统优化需要在 openKylin x86 PC 或虚拟机中运行。

建议环境:

  • openKylin 桌面系统
  • Python 3.10 及以上
  • systemd
  • bash
  • sudo 权限,用于执行 apply 和 rollback

三、Windows 快速运行

进入项目目录:

cd E:\操作系统开源大赛\bootgraph-ai

运行完整演示流程:

python -m bootgraph_ai.cli demo --output-dir outputs

如果本机 python 命令不可用,请改用实际 Python 路径,例如:

C:\Users1\.cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe -m bootgraph_ai.cli demo --output-dir outputs

运行完成后打开:

start E:\操作系统开源大赛\bootgraph-ai\outputs\index.html

也可以直接打开:

E:\操作系统开源大赛\bootgraph-ai\outputs\index.html

四、Windows 分步运行

1. 校验样例数据

python -m bootgraph_ai.cli validate --input examples/sample_boot.json

2. 分析关键路径

python -m bootgraph_ai.cli analyze --input examples/sample_boot.json --output outputs/analysis.json

3. 生成优化建议

python -m bootgraph_ai.cli suggest --analysis outputs/analysis.json --output outputs/plan.yaml

同时生成 JSON 计划:

python -m bootgraph_ai.cli suggest --analysis outputs/analysis.json --output outputs/plan.json

4. 生成事务记录

Windows 环境默认用于演示,不会修改真实系统服务:

python -m bootgraph_ai.cli apply --plan outputs/plan.json --transaction-dir outputs/transactions --max-risk low --simulate --yes

5. 生成智能分析报告

离线模式:

python -m bootgraph_ai.cli agent --offline --analysis outputs/analysis.json --plan outputs/plan.json --transaction outputs/transactions/latest.json --output outputs/ai_agent_report.md --trace outputs/ai_agent_trace.json

API 模式:

$env:BIGMODEL_API_KEY="你的 API Key"
python -m bootgraph_ai.cli agent --analysis outputs/analysis.json --plan outputs/plan.json --transaction outputs/transactions/latest.json --output outputs/ai_agent_report.md --trace outputs/ai_agent_trace.json

6. 生成 HTML 报告

python -m bootgraph_ai.cli html --analysis outputs/analysis.json --plan outputs/plan.json --transaction outputs/transactions/latest.json --agent-trace outputs/ai_agent_trace.json --output outputs/report.html --with-explain

7. 生成平台首页

python -m bootgraph_ai.cli home --analysis outputs/analysis.json --plan outputs/plan.json --compare outputs/compare.json --transaction outputs/transactions/latest.json --agent-trace outputs/ai_agent_trace.json --output outputs/index.html

五、openKylin 真实采集流程

将项目复制到 openKylin 后进入目录:

cd ~/bootgraph-ai

1. 采集优化前数据

bash scripts/run_openkylin_collect.sh baseline

该命令会采集系统启动数据,生成分析结果、优化建议和报告文件。

2. 查看可执行优化计划

bash scripts/run_openkylin_transaction.sh dry-run

该命令只生成事务预览,不修改系统。

3. 执行优化

sudo bash scripts/run_openkylin_transaction.sh apply

执行前脚本会要求输入确认信息。优化完成后建议重启系统:

sudo reboot

4. 采集优化后数据

bash scripts/run_openkylin_collect.sh optimized

5. 生成优化前后对比

bash scripts/run_openkylin_collect.sh compare

6. 回滚优化

先查看回滚计划:

bash scripts/run_openkylin_transaction.sh rollback-dry-run

执行回滚:

sudo bash scripts/run_openkylin_transaction.sh rollback

六、API 配置说明

项目可以在不配置 API 的情况下运行,默认使用离线分析模式。

如果需要调用外部模型生成分析报告,请在当前终端设置环境变量:

PowerShell:

$env:BIGMODEL_API_KEY="你的 API Key"

bash:

export BIGMODEL_API_KEY="你的 API Key"

也可以使用交互式脚本输入 API Key:

python scripts\run_glm_agent.py

API Key 只建议保存在本机环境变量中,不应写入代码、报告或提交材料。


七、项目结构

bootgraph-ai/
├─ bootgraph_ai/
│  ├─ ai/              # 智能分析、RAG、API 调用
│  ├─ collect/         # 启动数据采集
│  ├─ graph/           # 依赖图建模和关键路径分析
│  ├─ optimizer/       # 优化计划、事务执行和回滚
│  ├─ report/          # Markdown/HTML 报告生成
│  ├─ cli.py           # 命令行入口
│  └─ platform.py      # 平台首页生成
├─ docs/               # 设计文档和运行说明
├─ examples/           # 样例启动数据
├─ knowledge/          # 本地知识库
├─ scripts/            # Windows/openKylin 运行脚本
├─ tests/              # 测试用例
├─ outputs/            # 运行输出目录
├─ pyproject.toml
└─ README.md

八、安全说明

  • 默认演示流程不会修改真实系统。
  • dry-run 只生成计划和事务预览。
  • apply 会修改系统服务状态,必须在 openKylin 中使用 sudo 执行。
  • 每次 apply 都会保存事务记录。
  • rollback 会读取事务记录并按反向步骤恢复。
  • 建议在虚拟机快照或可恢复环境中进行真实优化实验。

九、提交材料建议

比赛提交时可使用以下材料:

  • README.md:作品简介和运行说明
  • docs/design.md:设计文档
  • outputs/report.mdoutputs/report.html:技术报告
  • outputs/index.html:平台演示首页
  • outputs/compare.md:优化前后对比报告
  • 演示 PPT
  • 演示视频
  • 参赛承诺书
关于
113.0 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号