更新README.md文件
第三届中国研究生操作系统开源创新大赛 — 系统创新赛道 — openKylin 启动性能分析与优化
本项目针对 openKylin 2.0 SP2 客户端操作系统冷启动过程进行系统性分析、瓶颈定位与多层次优化。通过服务裁剪、关键路径重构、内核参数调优、NetworkManager 配置优化等手段,在完整保留桌面功能的前提下,将:
方案提供完整的 analyze → optimize → verify → compare 一键式自动化工具链,支持分阶段调试、全量回滚,并具备向其他 Linux 发行版迁移的泛化能力。
analyze → optimize → verify → compare
data/ 目录下的 baseline/ 和 optimized/ 为脚本运行时生成的分析输出,初始仓库中为空。
data/
baseline/
optimized/
okczxtqdxnfxyyh/ ├── README.md # 本文件 — 作品简介与运行说明 ├── design_and_report.md # 设计文档与技术报告 ├── scripts/ │ ├── analyze.sh # 11 步系统化启动分析(基线/优化后数据采集) │ ├── optimize.sh # 6 阶段自动化优化(支持单阶段调试) │ ├── restore.sh # 一键回滚(恢复所有优化操作) │ ├── verify.sh # 9 类 40+ 项功能验证 │ └── compare.sh # 量化对比报告生成 └── data/ ├── baseline/ # 基线数据分析输出 │ ├── analysis_report_*.txt # 完整分析报告 │ ├── blame_*.txt # 服务耗时排行 │ ├── critical_chain_*.txt # 关键依赖链 │ ├── dependency_graph_*.txt # 依赖关系图 │ ├── bootchart_*.svg # 启动时序 SVG │ └── services_status_*.txt # 服务状态统计 └── optimized/ # 优化后数据分析输出(结构同上)
其他发行版适配:脚本内置发行版自动检测(detect_distro()),openKylin 特有优化通过 IS_OPENKYLIN 条件分支隔离,阶段 B/D/E/F 的通用逻辑可直接在 Ubuntu/Debian 等 systemd 系统上运行。
detect_distro()
openKylin
IS_OPENKYLIN
scripts/
~/scripts/
restore.sh
# 步骤 1 ─ 采集基线数据(普通用户) ~/scripts/analyze.sh ./data/baseline # 步骤 2 ─ 执行优化(需要 sudo) sudo bash ~/scripts/optimize.sh # 步骤 3 ─ 重启生效 sudo reboot # 步骤 4 ─ 采集优化后数据 + 功能验证 ~/scripts/analyze.sh ./data/optimized ~/scripts/verify.sh # 步骤 5 ─ 生成量化对比报告 ~/scripts/compare.sh ./data/baseline ./data/optimized
如需单独调试某一优化阶段(定位问题或测试效果),支持传入阶段标识:
sudo bash ~/scripts/optimize.sh A # 仅执行阶段 A(服务裁剪) sudo bash ~/scripts/optimize.sh C # 仅执行阶段 C(关键路径优化) sudo bash ~/scripts/optimize.sh E # 仅执行阶段 E(内核参数) # 支持: A | B | C | D | E | F
sudo bash ~/scripts/restore.sh sudo reboot
回滚项包括:52 个服务状态、8 个定时器状态、GRUB 内核参数、systemd 配置文件、NetworkManager 配置文件、旧延迟启动基础设施、override 配置。所有原始状态在优化时自动备份至 /opt/boot-optimize-backup/。
/opt/boot-optimize-backup/
[1] 系统基本信息(发行版/内核/CPU/磁盘/OSTree/桌面环境) [2] 启动总耗时(systemd-analyze) [3] 服务耗时排行(systemd-analyze blame) [4] 关键依赖链(systemd-analyze critical-chain,含 multi-user/graphical 双链) [5] 依赖图建模(systemd-analyze dot → graphviz) [6] 启动时序可视化(systemd-analyze plot → SVG) [7] 阶段耗时分解(内核启动 / 用户空间 / graphical.target) [8] 图形界面关键时间点(lightdm / X Server / Plymouth) [9] 桌面会话就绪时间(UKUI 面板/会话/窗口管理器/文件管理器/输入法/声音) [10] 服务状态统计(enabled/disabled/static/masked/running/failed) [11] 自动优化建议生成(AI 辅助识别高耗时服务 + 关键路径瓶颈)
优化前(串行阻塞,@8.402s):
graphical.target └─multi-user.target └─strongswan-starter.service ← IPsec VPN,非 VPN 场景不需要 └─network-online.target ← 强制等待网络完全就绪 └─NetworkManager-wait-online.service ← 无效等待 +914ms └─NetworkManager.service
优化后(并行无阻塞,@3.581s):
graphical.target └─accounts-daemon.service └─basic.target (multi-user.target ──→ NetworkManager.service ──→ dbus.service 并行路径,不阻塞 graphical)
verify.sh 覆盖 9 类 40+ 检查点,对标赛题”到达登录界面”和”进入可用桌面”全部要求:
verify.sh
8 条警告均为预期行为:UDisks2/UPower 被有意禁用、PipeWire 未使用(使用 PulseAudio)、VM 无虚拟声卡、greeter 进程名未匹配、通知守护进程已禁用、systemd 服务状态变更日志。无任何功能受损。
graphical.target
multi-user.target
resume=
accounts-daemon
polkit
dbus
lightdm
NetworkManager
systemd-resolved
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
openKylin 操作系统启动性能分析与优化
作品简介
本项目针对 openKylin 2.0 SP2 客户端操作系统冷启动过程进行系统性分析、瓶颈定位与多层次优化。通过服务裁剪、关键路径重构、内核参数调优、NetworkManager 配置优化等手段,在完整保留桌面功能的前提下,将:
方案提供完整的
analyze → optimize → verify → compare一键式自动化工具链,支持分阶段调试、全量回滚,并具备向其他 Linux 发行版迁移的泛化能力。目录结构
运行环境
快速开始
前置条件
scripts/目录下的文件复制到用户目录(~/scripts/)restore.sh回滚)完整流程(5 步,约 15 分钟)
分阶段调试
如需单独调试某一优化阶段(定位问题或测试效果),支持传入阶段标识:
一键回滚
回滚项包括:52 个服务状态、8 个定时器状态、GRUB 内核参数、systemd 配置文件、NetworkManager 配置文件、旧延迟启动基础设施、override 配置。所有原始状态在优化时自动备份至
/opt/boot-optimize-backup/。方法论
分析流程(analyze.sh — 11 步)
关键路径分析
优化前(串行阻塞,@8.402s):
优化后(并行无阻塞,@3.581s):
优化策略
6 阶段自动化优化(optimize.sh)
赛题要求 4 种优化手段映射
优化成果
核心指标
服务数量变化
Top 服务耗时变化
功能验证结果
verify.sh覆盖 9 类 40+ 检查点,对标赛题”到达登录界面”和”进入可用桌面”全部要求:创新点
方法论创新
graphical.target和multi-user.target两条链,避免单一视角遗漏隐藏瓶颈工程创新
泛化能力
IS_OPENKYLIN条件分支隔离发行版特定服务,其他发行版自动跳过赛题评分覆盖
注意事项
restore.sh已提供软件回滚)14s),后续启动恢复正常(19s)。基线数据应以第二次正常启动为准resume=内核参数残留会导致内核阶段时间翻倍,阶段 E 已自动移除accounts-daemon、polkit、dbus、lightdm、NetworkManager、systemd-resolved等 7 个核心服务已设为绝不优化,保障系统基础功能data/中的主机名、用户名等已脱敏处理