目录

BootOpt-Agent

面向 openKylin 桌面操作系统的启动性能分析、安全优化、回滚与自动验证工具链。

BootOpt-Agent 将“测量、分析、推荐、模拟、优化、回滚、验证、报告”组织成可解释、可复现的闭环。项目以 graphical.target 到达时间作为主要用户感知指标,同时保留 kerneluserspacetotal 数据辅助归因;所有优化均支持执行前模拟、状态备份和执行后功能回归。

当前版本已完成 openKylin 2.0 SP2 正式 15+15 次冷启动实验、四阶段消融、两种资源配置验证,以及 Ubuntu Desktop 24.04.4 LTS 的 3+3 次跨发行版实验。

项目亮点

  • 证据驱动:联合分析多次启动样本、systemd-analyze blamecritical-chain、失败单元、日志和环境指纹。
  • 感知优先:重点衡量图形桌面可用时间,不把单个慢服务直接等同于启动瓶颈。
  • 安全优化:核心服务进入 keep 类;候选操作必须先 simulatedry-run,并保存回滚状态。
  • 可解释推荐:根据服务耗时、关键路径、服务语义和规则库生成风险评分与处理理由。
  • 本地 Agent:不依赖在线大模型,读取结构化证据后自动生成收益归因、安全解释和验证结论。
  • 自动验收:检查数据、统计结果、失败单元、网络、桌面、声音、输入法及常用应用。
  • 跨发行版适配:根据发行版和桌面角色适配 openKylin/UKUI 与 Ubuntu/GNOME。
  • 可复现交付:实验结果可导出为 Markdown、JSON、SVG、HTML 和一页式 PDF 海报。

技术路线

BootOpt-Agent 技术路线图

系统架构

BootOpt-Agent 系统架构图

核心功能

功能 命令 说明
环境检查 bootopt doctor 检查依赖命令、项目路径和运行条件
状态查看 bootopt status 查看启动时间、优化单元、失败单元和桌面进程
数据采集 bootopt collect [LABEL] 保存阶段耗时、慢服务、关键链、日志和失败单元
瓶颈查看 bootopt top 15bootopt chain 查看慢服务和 graphical.target 关键链
对比报告 bootopt report 生成优化前后 Markdown 对比结果
可视化报告 bootopt graphbootopt report-html 生成启动图谱 JSON 和 HTML 报告
推荐解释 bootopt recommendbootopt explain <UNIT> 输出服务风险、建议动作及理由
配置模拟 bootopt simulate [PROFILE] 在不修改系统的情况下预演优化动作
安全优化 bootopt optimize [PROFILE] 备份服务状态后应用指定配置
状态回滚 bootopt rollback 根据回滚文件恢复服务状态
自动验证 bootopt validate 验证证据、性能、服务和桌面功能
自动诊断 bootopt agent 生成基于本地规则和证据的诊断报告
统计分析 bootopt stats 计算均值、标准差、配对胜率和 Bootstrap 区间
消融分析 bootopt ablation-report 分析四个累计优化阶段的独立贡献
成果摘要 bootopt summary 生成面向评委的项目摘要

支持环境

主要验证环境

  • openKylin 2.0 SP2 x86_64
  • UKUI 桌面与 LightDM
  • VirtualBox 4 vCPU / 8 GB 主实验
  • VirtualBox 2 vCPU / 4 GB 资源兼容验证

跨发行版验证环境

  • Ubuntu Desktop 24.04.4 LTS x86_64
  • GNOME、GDM、IBus、Nautilus 和 GNOME Text Editor
  • VirtualBox 2 vCPU / 4 GB

基础依赖

  • Bash
  • Python 3
  • systemd:systemd-analyzesystemctljournalctl
  • GNU coreutils 和常见 Linux 命令行工具
  • 可选:VirtualBox VBoxManage,用于宿主机自动冷启动实验

安装

cd openkylin-bootopt
chmod +x bin/bootopt scripts/*.sh
./scripts/install_bootopt_user.sh
export PATH="$HOME/.local/bin:$PATH"

检查安装结果:

bootopt doctor
bootopt status

卸载用户级命令:

./scripts/uninstall_bootopt_user.sh

快速演示

以下命令不会直接修改系统:

bootopt doctor
bootopt status
bootopt top 15
bootopt chain
bootopt report
bootopt recommend
bootopt simulate conservative
bootopt agent
bootopt report-html
bootopt summary

HTML 报告生成位置:

results/report/boot_report.html

标准优化流程

1. 采集优化前证据

每次完整冷启动后执行一次:

bootopt collect before

正式实验建议从同一虚拟机快照恢复,固定 CPU、内存和等待时间,正常关机后重复采集。

2. 分析并模拟

bootopt report
bootopt graph
bootopt recommend
bootopt explain NetworkManager-wait-online.service
bootopt simulate conservative

3. 应用保守优化

bootopt optimize conservative

该操作需要 sudo。执行前会记录目标服务的 enabled/active 状态并生成回滚文件。

4. 重启并采集优化后证据

bootopt collect after

5. 自动验证与生成报告

bootopt stats
bootopt validate --competition
bootopt agent
bootopt report-html
bootopt summary

实时桌面功能验证应在已经登录的图形会话中执行,确保 DISPLAY、Wayland/X11 和 D-Bus 会话可用。

6. 必要时回滚

bootopt rollback

保守优化配置

openKylin 的 conservative 配置包含以下可逆操作:

服务 风险 处理依据
NetworkManager-wait-online.service 不再阻塞桌面等待 network-online,但保留 NetworkManager
biometric-authentication.service 虚拟机无生物识别设备,密码登录不受影响
avahi-daemon.service 基准虚拟机不依赖 mDNS/ZeroConf 发现
avahi-daemon.socket 与 Avahi 服务同步处理,避免套接字再次拉起服务

Ubuntu 配置另外包含 ModemManager.service,仅适用于确认不存在蜂窝调制解调器的虚拟机环境。

NetworkManager、显示管理器、D-Bus、账户、存储及桌面核心服务不会被保守配置禁用。实际设备使用前必须先运行 bootopt simulate 并确认硬件需求。

正式实验结果

openKylin 2.0 SP2,4C/8G,15+15 次

指标 优化前均值 优化后均值 改善
Kernel 5.069 s 5.005 s 1.27%
Userspace 10.686 s 10.241 s 4.16%
Total 15.755 s 15.246 s 3.23%
Graphical 7.592 s 6.542 s 13.83%

统计解释:

  • Graphical 指标在 15 次配对中有 14 次改善,配对胜率为 **93.33%**。
  • Graphical 改善量的 Bootstrap 95% 置信区间为 **[0.765 s, 1.343 s]**,结论为 supported
  • Userspace 和 Total 改善按实测结果报告,但其统计证据弱于 Graphical 指标。
  • Kernel 波动视为虚拟化噪声参考,不归因于用户空间服务优化。
  • 正式统计保留全部样本,没有删除慢样本或离群值。

Ubuntu 24.04.4 LTS,2C/4G,3+3 次

指标 优化前均值 优化后均值 改善
Total 34.615 s 30.693 s 11.33%
Graphical 28.741 s 25.291 s 12.00%

Ubuntu 实验已真实运行 collectreport-htmlrecommendsimulatevalidate,用于证明工具链的跨发行版可迁移性。由于样本量仅为 3+3,该结果不作为普遍性能结论。

消融与环境验证

实验 环境 样本 用途
正式前后对比 openKylin 4C/8G 15+15 主要性能与统计结论
四阶段消融 openKylin,同一快照 5×4 分析优化项的累计贡献
资源兼容 openKylin 2C/4G 3 验证低资源配置可执行性
跨发行版 Ubuntu 2C/4G 3+3 验证 GNOME/IBus 等角色适配

四阶段消融包含 baselinewait-onlinewait+biometric 和完整保守配置。详细结果见:

自动验证结果

  • 正式存储证据验证:12 pass / 0 warn / 0 fail
  • openKylin 已登录桌面实时验证:30 pass / 0 warn / 0 fail
  • 实时验证覆盖网络、显示管理器、桌面 Shell、声音默认输出、fcitx5、Peony、Pluma 和 Firefox。
  • Python 回归测试:9 项通过
  • 优化前后的已知失败单元均为 kylin-core-dump-monitor.service,没有新增失败单元。

运行项目回归测试:

python3 -m unittest discover -s tests -v

Agent 工作方式

BootOpt-Agent 的 Agent 是本地规则和证据驱动的自动诊断模块,不依赖在线大模型。它读取:

  • results/report/boot_graph.json
  • results/recommendations.json
  • results/validation.json
  • results/statistical_analysis.json

并生成:

  • 主要收益阶段与瓶颈归因
  • 已应用优化和安全依据
  • 需要继续调查的服务
  • 验证结论与剩余风险
  • 面向评委的 Markdown/JSON 摘要

项目目录

openkylin-bootopt/
├── bin/                    # 统一命令入口 bootopt
├── docs/                   # 方法、架构、兼容性和复现文档
├── materials/              # 项目说明书、海报、演示脚本和截图
│   ├── figures/            # 技术路线图与系统架构图
│   └── screenshots/        # 功能运行截图
├── profiles/               # openKylin、Ubuntu 和消融配置
├── results/                # 原始证据、统计、验证和可视化成果
├── rules/                  # 服务规则库
├── scripts/                # 采集、分析、优化、回滚与报告脚本
└── tests/                  # Python 回归测试

关键成果文件

文件 内容
materials/操作系统开源创新大赛项目说明书_BootOpt-Agent.docx 完整项目说明书
results/report/boot_report.html 启动性能可视化报告
results/submission_summary.md 评委摘要
results/statistical_analysis.md 正式统计分析
results/ablation_analysis.md 四阶段消融分析
results/live_desktop_smoke_validation.md openKylin 实时桌面验证
results/recommendations.md 服务推荐与风险解释
results/agent_analysis.md Agent 自动诊断结果
results/bootopt_agent_poster.pdf 一页式成果海报

一键复现已有成果

bash scripts/reproduce_clean_env.sh

该脚本会重新安装用户级 CLI,并基于已有证据重新生成对比报告、HTML 报告、推荐、Agent 分析、模拟结果、验证报告和提交摘要。日志保存至:

results/reproduce/clean_env_reproduce.log

实验边界

  • 当前主要性能数据来自 VirtualBox,不能直接等同于所有物理硬件。
  • openKylin Total 指标改善为 3.23%,其置信区间仍跨零,应作为方向性结果。
  • Ubuntu 仅完成 3+3 次跨发行版实验,主要用于验证工具可迁移性。
  • 未知服务不会由 Agent 自动禁用,而是进入 investigateexperimental 类等待人工确认。
  • 实际部署时应结合机器硬件、网络发现、蜂窝网络和生物识别需求选择配置。

进一步阅读

关于
438.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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