目录

# openkylin-boot-optimizer

openkylin-boot-optimizer 是面向 openKylin 桌面系统的启动性能分析与优化项目。项目重点是采集可复现的启动证据,分析 systemd 关键链路、失败服务和桌面相关异常,并在不破坏核心桌面功能的前提下给出可回滚优化方案。

当前阶段只整理已经完成的实验结果和复现说明,不继续执行新的系统优化动作。

工具链

项目通过 collect_boot_metrics.sh 采集每轮启动后的关键文件,结果保存到 results/<timestamp>

典型输出包括:

  • total.txt:kernel、userspace、total 和 graphical.target 到达时间。
  • blame.txt:systemd unit 耗时排序。
  • critical-chain.txt:目标到达前的关键依赖链。
  • boot.svg:启动时序图。
  • journal-boot.txt:当前启动日志。
  • journal-boot-errors.txt:错误、告警和 timeout 线索。
  • failed-units.txt:启动后失败的 unit。
  • key-services.txt:关键服务状态。
  • dm-graphical-timing.txt:显示管理器与图形目标时序。
  • metadata.json:采集元数据。

当前实验结果摘要

初始 baseline 样本 results/20260603-163707

指标 数值
kernel 5.246s
userspace 6.158s
total 11.404s
graphical.target 4.298s in userspace
failed-units 1 个,kylin-core-dump-monitor.service

baseline critical-chain 显示 strongswan-starter.service 曾位于图形目标到达前的关键链路上。禁用 strongSwan 后可以移除该 VPN/IPsec 节点,但多轮实验中 total 时间收益不稳定,因此 strongSwan 只作为场景化可选优化项。

恢复 strongSwan 后的多轮 baseline 中,20260603-202658 是异常样本:userspace 为 95.136s,total 为 97.183s,但 graphical.target 仍为 4.852s。journal 指向 ukui-system-service-manager、D-Bus、pulseaudio、portal 接口 timeout,因此该样本应单独分析,不纳入常规均值。

已验证优化案例

主优化案例:kylin-core-dump-monitor.service

问题现象:

  • failed-units.txt 显示 kylin-core-dump-monitor.service loaded failed failed
  • systemctl status 显示 Result=start-limit-hitStart request repeated too quickly
  • ExecStart 脚本以 0/SUCCESS 正常退出。
  • 原始 unit 使用 Restart=always

根因判断:

脚本本身不是崩溃退出,而是正常完成后被 Restart=always 反复拉起,最终触发 systemd 的启动频率限制。

修复方式:

通过 systemd drop-in override 调整重启策略:

[Service]
Restart=on-failure
RestartSec=30s

优化后结果:

样本 failed-units total graphical.target
20260615-161651 0 loaded units listed 14.109s 5.384s
20260615-163026 0 loaded units listed 8.678s 4.926s
20260615-164143 0 loaded units listed 8.449s 4.846s

当前主成果是 failed-units 从 1 个稳定降到 0 个,属于启动健康状态优化和异常服务治理。启动时间有所提升。

场景化可选案例:strongSwan

strongswan-starter.service 是 VPN/IPsec 相关服务。实验显示,禁用它可以从 critical-chain 中移除 VPN/IPsec 节点,但多轮 total 时间收益不稳定:

样本 total graphical.target
20260603-171104 7.772s 4.308s
20260603-195538 8.270s 4.472s
20260603-200029 12.229s 5.212s
20260603-200623 10.082s 3.940s
20260603-200907 8.048s 4.489s

因此,strongSwan 不作为默认自动优化。只有在用户明确不使用 IPsec/VPN 时,才可以作为手动确认后的可选项。

安全边界

默认优化策略禁止自动修改以下核心服务和目标:

  • display-manager
  • lightdm
  • dbus
  • NetworkManager
  • systemd-logind
  • polkit
  • accounts-daemon
  • ukui-system-service-manager
  • graphical.target

项目可以分析这些服务的耗时和日志,但不通过禁用核心桌面功能来换取指标改善。

文档

提交包内容

最终 zip 包包含以下内容:

  • src/:Python 分析、优化建议和报告生成源码。
  • scripts/:启动数据采集、桌面可用性检测、验证与回滚脚本。
  • configs/:安全服务黑名单和优化规则配置。
  • docs/:比赛报告、实验方法和优化策略文档。
  • reports/:报告模板。
  • tests/:单元测试。
  • results/:已采集实验结果。
  • screenshots/:baseline、优化前后、异常样本和实验环境截图证据。

当前主成果是 kylin-core-dump-monitor.service 的异常重启策略修复,使 failed-units 从 1 个稳定降为 0 个。该成果属于启动健康状态优化,不写成“启动时间大幅提升”。

后续扩展方向

为了继续提升工具链能力,后续可以扩展:

  • 将 desktop-ready 检测扩展为更细粒度的桌面可用性探针。
  • 增加多轮实验统计模块,自动计算均值、中位数、标准差和异常值。
  • 将 strongSwan 场景化优化做成需要用户确认的可选策略。
  • 增强 reporter.py,自动读取多个 results/ 目录并生成对比图表。
  • 在更多 openKylin 版本或其他 x86 Linux 客户端发行版上验证迁移性。
关于
186.4 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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