Merge branch ‘master’ of https://gitlink.org.cn/He7JWOhiM0/okczxtqdxnfxyyh
本项目是一套面向 openKylin/UKUI 桌面系统的启动性能分析与优化工具,围绕“测量—分析—优化—验证”构建完整工作流程,覆盖从 Linux 内核完成启动、图形登录界面出现,到用户桌面真正可用的全过程。
项目将启动过程划分为两个阶段:
启动优化器通过 systemd-analyze time、blame 和 critical-chain 采集启动数据,结合风险分级规则识别耗时服务,并提供以下优化能力:
systemd-analyze time
blame
critical-chain
启动就绪探针分别测量两个用户可感知指标:
login
desktop
项目默认采用预览模式。只有显式添加 --apply 后,优化器才会修改系统配置。
--apply
. ├── scripts/ │ ├── README.md # 探针日志管理工具说明 │ └── probe-log-mgr.sh # 探针日志管理工具 ├── src/ │ ├── boot_optimizer/ │ │ ├── README.md # 启动优化器详细说明 │ │ ├── optimize.py # 两阶段统一优化入口 │ │ ├── optimize_boot.py # Phase 1 系统级优化 │ │ ├── optimize_phase2.py # Phase 2 用户会话优化 │ │ └── optimize_rules.py # 系统级优化规则 │ └── startup_ready_probe/ │ ├── README.md # 启动就绪探针详细说明 │ ├── startup_ready_probe.py # login/desktop 探针 │ ├── deploy.sh # 探针部署脚本 │ ├── uninstall.sh # 探针卸载脚本 │ └── login-ready-probe.service # systemd 服务模板 ├── manage.sh # 根目录统一调用脚本 ├── README.md # 作品简介与运行说明 ├── 项目说明书.docx ├── 演示视频.mp4 ├── 作品介绍PPT.pptx └── 作品原创承诺书.docx
systemctl
systemd-analyze
loginctl
核心 Python 程序仅使用标准库,无需安装第三方 Python 依赖。完整功能必须在 Linux 目标机运行,Windows 环境不能提供 systemd 启动数据。
以下命令均在项目根目录执行。首次运行先添加执行权限并检查环境:
chmod +x manage.sh ./manage.sh check
查看统一调用脚本帮助:
./manage.sh help
默认同时部署登录界面探针和桌面就绪探针:
sudo ./manage.sh probe deploy
常用部署方式:
# 指定实际登录桌面的用户 sudo ./manage.sh probe deploy --user alice # 只部署 login 阶段探针 sudo ./manage.sh probe deploy --no-desktop # 部署后立即运行一次 login 探针 sudo ./manage.sh probe deploy --start-now # 严格要求识别到显示服务 sudo ./manage.sh probe deploy --require-display-server # 实际启动文件管理器、终端和设置中心进行应用启动测试 sudo ./manage.sh probe deploy --launch-apps # 严格检测输入法服务 sudo ./manage.sh probe deploy --strict-ime # 同时启用应用启动测试和输入法严格检测 sudo ./manage.sh probe deploy --launch-apps --strict-ime # 指定用户,并同时启用显示服务、应用启动和输入法严格检测 sudo ./manage.sh probe deploy --user alice --require-display-server --launch-apps --strict-ime # 指定探针安装目录 sudo ./manage.sh probe deploy --install-dir /var/lib/startup-ready-probe/bin
部署完成后重启系统,采集完整启动数据:
sudo reboot
探针默认安装和输出位置:
/opt/startup-ready-probe/startup_ready_probe.py
/etc/systemd/system/login-ready-probe.service
~/.config/autostart/desktop-ready-probe.desktop
/var/log/startup-ready-probe/
更完整的探针参数和检测项说明参见 启动就绪探针说明。
./manage.sh logs # 查看最新结果 ./manage.sh logs --list # 列出全部日志 ./manage.sh logs --stats # 统计最小、最大和平均耗时 ./manage.sh logs --slow 15 # 查看耗时超过 15 秒的记录 ./manage.sh logs --view 2 # 查看编号为 2 的日志
也可以直接查看服务状态和日志:
systemctl status login-ready-probe.service journalctl -b -u login-ready-probe.service sudo ls -lh /var/log/startup-ready-probe/
完整参数、统计方式和日志清理说明参见 探针日志管理工具说明。
优化器默认只分析并生成建议,不修改系统:
# 预览两个阶段;普通用户运行时会跳过需要 root 的 Phase 1 ./manage.sh optimize # 预览系统级 Phase 1 sudo ./manage.sh optimize --phase 1 # 预览当前用户的 Phase 2 ./manage.sh optimize --phase 2 # 预览指定用户的 Phase 2 ./manage.sh optimize --phase 2 --user=alice
预览后会在项目根目录生成:
boot_optimize_plan.txt
phase2_optimize_plan.txt
阅读预览方案后,添加 --apply 执行变更:
# 执行 Phase 1 低风险优化并逐项确认 sudo ./manage.sh optimize --phase 1 --apply # 执行指定用户的 Phase 2 ./manage.sh optimize --phase 2 --apply --user=alice # 连续执行两个阶段 sudo ./manage.sh optimize --apply
其他执行方式:
# Phase 1 同时包含中风险建议 sudo ./manage.sh optimize --phase 1 --apply --risk=medium # 跳过逐项确认 sudo ./manage.sh optimize --phase 1 --apply --yes
优化器参数:
--phase 1
--phase 2
--yes
--risk=medium
--user=NAME
优化器的规则、输出和实现说明参见 启动优化器说明。
执行优化后,根目录会生成对应的回滚脚本:
# 回滚 Phase 1 sudo ./manage.sh rollback 1 # 回滚 Phase 2 ./manage.sh rollback 2
回滚完成后需要重启系统或重新登录,使服务和用户会话配置重新生效。
# 卸载探针并清理日志 sudo ./manage.sh probe uninstall # 指定需要清理桌面自启动项的用户 sudo ./manage.sh probe uninstall --user alice # 卸载探针但保留测量日志 sudo ./manage.sh probe uninstall --keep-logs
建议使用多轮测量的中位数作为主要对比结果,避免磁盘缓存、网络状态和后台任务造成的单次波动。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
openKylin 启动性能分析与优化工具
一、作品简介
本项目是一套面向 openKylin/UKUI 桌面系统的启动性能分析与优化工具,围绕“测量—分析—优化—验证”构建完整工作流程,覆盖从 Linux 内核完成启动、图形登录界面出现,到用户桌面真正可用的全过程。
项目将启动过程划分为两个阶段:
启动优化器通过
systemd-analyze time、blame和critical-chain采集启动数据,结合风险分级规则识别耗时服务,并提供以下优化能力:启动就绪探针分别测量两个用户可感知指标:
login:从 systemd 启动到图形登录界面就绪;desktop:从图形用户会话建立到桌面环境可用。项目默认采用预览模式。只有显式添加
--apply后,优化器才会修改系统配置。项目结构
二、运行说明
2.1 运行环境
systemctl、systemd-analyze和loginctl;核心 Python 程序仅使用标准库,无需安装第三方 Python 依赖。完整功能必须在 Linux 目标机运行,Windows 环境不能提供 systemd 启动数据。
2.2 环境检查与统一入口
以下命令均在项目根目录执行。首次运行先添加执行权限并检查环境:
查看统一调用脚本帮助:
2.3 部署探针
默认同时部署登录界面探针和桌面就绪探针:
常用部署方式:
部署完成后重启系统,采集完整启动数据:
探针默认安装和输出位置:
/opt/startup-ready-probe/startup_ready_probe.py/etc/systemd/system/login-ready-probe.service~/.config/autostart/desktop-ready-probe.desktop/var/log/startup-ready-probe/更完整的探针参数和检测项说明参见 启动就绪探针说明。
2.4 查看探针结果
也可以直接查看服务状态和日志:
完整参数、统计方式和日志清理说明参见 探针日志管理工具说明。
2.5 预览启动优化方案
优化器默认只分析并生成建议,不修改系统:
预览后会在项目根目录生成:
boot_optimize_plan.txt:Phase 1 系统级优化方案;phase2_optimize_plan.txt:Phase 2 用户会话优化方案。2.6 执行启动优化
阅读预览方案后,添加
--apply执行变更:其他执行方式:
优化器参数:
--phase 1--phase 2--apply--yes--risk=medium--user=NAME优化器的规则、输出和实现说明参见 启动优化器说明。
2.7 回滚优化
执行优化后,根目录会生成对应的回滚脚本:
回滚完成后需要重启系统或重新登录,使服务和用户会话配置重新生效。
2.8 卸载探针
2.9 推荐测试流程
建议使用多轮测量的中位数作为主要对比结果,避免磁盘缓存、网络状态和后台任务造成的单次波动。