Add openKylin boot performance optimization project
Linux 操作系统启动性能分析与优化(社区赛题)参赛作品
本项目面向 openKylin 2.0 SP2 AMD64 桌面系统,对“内核启动完成至图形登录界面就绪”和“用户登录至桌面可用”两个阶段进行拆解、测量与优化。在保留图形登录、UKUI 核心桌面、网络、声音、输入法、文件管理器等基础能力的前提下,项目依次完成了非核心自启动项裁剪、网络在线等待链优化和低风险系统服务裁剪。
所有优化均采用可回滚方式实施,并使用三次独立重启测试验证结果。最终三次测试中,系统状态均为 running,失败服务数均为 0。
running
下表中的数据均为三次独立冷启动测试的平均值。
graphical.target
原始数据:
本项目默认不计入 BIOS/UEFI 自检、固件初始化及 GRUB 菜单等待时间,重点测量操作系统接管启动流程后的两个阶段:
display-manager
主要采集手段包括:
systemd-analyze time
systemd-analyze blame
systemd-analyze critical-chain
LOGIN_READY_TIME
DESKTOP_READY_TIME
systemctl
journalctl
分析 UKUI 用户会话及系统级 autostart 项,减少天气、日历、侧边栏、用户引导、后台升级提醒等非首屏必要组件在登录阶段造成的资源竞争。
结合 critical-chain 和依赖关系检查,处理 NetworkManager-wait-online.service 以及当前环境未实际使用的 strongswan-starter.service,同时保留 NetworkManager、DNS 解析、Wi-Fi 和 UKUI 网络管理能力。
critical-chain
NetworkManager-wait-online.service
strongswan-starter.service
诊断并处理后台自动更新任务、未使用的 VPN/域控相关服务、定时任务及异常服务状态,避免启动期资源竞争。高风险或功能边界不明确的服务不做裁剪。
本项目不通过关闭必要功能换取表面性能提升。优化过程中持续保留并验证:
所有修改均使用 disable、stop、用户级覆盖或备份迁移等可逆方式;不删除服务文件,不卸载软件包。优化脚本会在 /data/bootopt_work/ 下保存诊断报告、备份和回滚脚本。
disable
stop
/data/bootopt_work/
重要提示: 部分裁剪项与当前 VMware 测试环境有关。若目标机器实际使用蓝牙、打印、OpenVPN、IPsec VPN 或 Samba AD 域控,应先运行诊断脚本并重新评估,不能直接照搬服务清单。
. ├── README.md ├── manuscript/ # 完整参赛报告 ├── standards/ # 赛题要求与评分标准 ├── code/ │ ├── pre_optimization_test_files/ # 基线采集与就绪探针 │ ├── autostart_optimization/ # Round 1 脚本 │ ├── network_wait_chain/ # Round 2 脚本 │ └── low_risk_system_service_pruning/ # Round 3 脚本 ├── basetime/ # 优化前原始测试数据 ├── autostart_project/ # Round 1 测试数据 ├── network_wait_chain_optimization/ # Round 2 测试数据 └── low_risk_system_service_pruning/ # Round 3 与最终测试数据
每轮测试目录均保存 systemd_time.txt、systemd_blame.txt、systemd_critical_chain.txt、服务状态、系统日志、就绪时间和 summary.txt 等材料;ZIP 文件是对应轮次的原始归档。
systemd_time.txt
systemd_blame.txt
systemd_critical_chain.txt
summary.txt
find code -type f -name '*.sh' -exec chmod +x {} +
每一轮都应遵循“诊断 → 确认目标 → 优化 → 重启 → 验证 → 三次采集”的顺序:
# 基线或阶段测试数据采集示例 bash code/pre_optimization_test_files/collect_baseline.sh run1 # Round 2:先诊断,再按当前机器的实际网络配置决定是否优化 bash code/network_wait_chain/trace_network_wait_chain_round2A.sh bash code/network_wait_chain/optimize_network_wait_round2A_safe.sh sudo reboot bash code/network_wait_chain/verify_network_wait_round2A_safe.sh # Round 3:先诊断,再执行低风险裁剪和验证 bash code/low_risk_system_service_pruning/trace_system_service_round3A.sh bash code/low_risk_system_service_pruning/optimize_system_services_round3A_safe.sh sudo reboot bash code/low_risk_system_service_pruning/verify_system_services_round3A_safe.sh
Round 1 涉及用户级和系统级两种处理方式,请结合完整报告及脚本内目标清单选择,避免重复执行不同实现。执行任何优化前,应阅读脚本中的保护清单和回滚说明。
每次优化后至少确认:
systemctl is-system-running systemctl --failed systemctl status display-manager dbus NetworkManager systemd-analyze time systemd-analyze critical-chain graphical.target
同时人工验证图形登录、键盘鼠标、网络、声音、输入法、文件管理器、终端和设置中心。只有系统状态为 running、失败服务没有增加且桌面功能正常,测试数据才可计入对比。
system_running_state.txt
failed_services.txt
blame
code/
本项目追求的不是通过牺牲功能获得单一时间数字,而是在性能收益、桌面完整性、结果可解释性和工程可复现性之间取得平衡。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
openKylin 桌面系统启动性能分析与优化
本项目面向 openKylin 2.0 SP2 AMD64 桌面系统,对“内核启动完成至图形登录界面就绪”和“用户登录至桌面可用”两个阶段进行拆解、测量与优化。在保留图形登录、UKUI 核心桌面、网络、声音、输入法、文件管理器等基础能力的前提下,项目依次完成了非核心自启动项裁剪、网络在线等待链优化和低风险系统服务裁剪。
所有优化均采用可回滚方式实施,并使用三次独立重启测试验证结果。最终三次测试中,系统状态均为
running,失败服务数均为 0。1. 核心成果
下表中的数据均为三次独立冷启动测试的平均值。
graphical.target达成时间原始数据:
2. 评测边界与方法
本项目默认不计入 BIOS/UEFI 自检、固件初始化及 GRUB 菜单等待时间,重点测量操作系统接管启动流程后的两个阶段:
display-manager、D-Bus、NetworkManager 等基础服务工作正常。主要采集手段包括:
systemd-analyze time:统计内核、用户空间及总启动时间;systemd-analyze blame:识别耗时服务;systemd-analyze critical-chain:定位关键依赖路径;LOGIN_READY_TIME和DESKTOP_READY_TIME;systemctl、journalctl、进程与资源状态:验证服务状态、故障情况和桌面功能;3. 优化方案
Round 1:非核心自启动项裁剪
分析 UKUI 用户会话及系统级 autostart 项,减少天气、日历、侧边栏、用户引导、后台升级提醒等非首屏必要组件在登录阶段造成的资源竞争。
Round 2:网络在线等待链优化
结合
critical-chain和依赖关系检查,处理NetworkManager-wait-online.service以及当前环境未实际使用的strongswan-starter.service,同时保留 NetworkManager、DNS 解析、Wi-Fi 和 UKUI 网络管理能力。Round 3:低风险系统服务裁剪
诊断并处理后台自动更新任务、未使用的 VPN/域控相关服务、定时任务及异常服务状态,避免启动期资源竞争。高风险或功能边界不明确的服务不做裁剪。
4. 安全边界
本项目不通过关闭必要功能换取表面性能提升。优化过程中持续保留并验证:
所有修改均使用
disable、stop、用户级覆盖或备份迁移等可逆方式;不删除服务文件,不卸载软件包。优化脚本会在/data/bootopt_work/下保存诊断报告、备份和回滚脚本。5. 目录结构
每轮测试目录均保存
systemd_time.txt、systemd_blame.txt、systemd_critical_chain.txt、服务状态、系统日志、就绪时间和summary.txt等材料;ZIP 文件是对应轮次的原始归档。6. 建议评审顺序
summary.txt,核验四项核心指标;systemd_critical_chain.txt、systemd_blame.txt和服务状态文件,核验收益来源;7. 复现说明
7.1 环境
display-manager别名访问)7.2 准备脚本
7.3 推荐流程
每一轮都应遵循“诊断 → 确认目标 → 优化 → 重启 → 验证 → 三次采集”的顺序:
Round 1 涉及用户级和系统级两种处理方式,请结合完整报告及脚本内目标清单选择,避免重复执行不同实现。执行任何优化前,应阅读脚本中的保护清单和回滚说明。
7.4 验收条件
每次优化后至少确认:
同时人工验证图形登录、键盘鼠标、网络、声音、输入法、文件管理器、终端和设置中心。只有系统状态为
running、失败服务没有增加且桌面功能正常,测试数据才可计入对比。8. 局限性与迁移说明
9. 评分项对应材料
summary.txt、systemd_time.txtsystem_running_state.txt、failed_services.txt、验证报告critical-chain、blame、就绪探针及诊断脚本code/、各轮原始数据、ZIP 归档和复现步骤本项目追求的不是通过牺牲功能获得单一时间数字,而是在性能收益、桌面完整性、结果可解释性和工程可复现性之间取得平衡。