目录

赛题题目:openKylin操作系统启动性能分析与优化(社区赛题)

作品简介

本项目面向“openKylin 操作系统启动性能分析与优化”社区赛题,提供一套可复现的启动性能采集、阶段拆解、关键路径分析和低风险优化方法。 项目以 Linux 内核单调时钟为统一时间基准,不统计 BIOS/UEFI、虚拟机固件和 GRUB 菜单等待时间。分析范围覆盖: Linux 内核启动完成后至图形登录管理器就绪; 用户完成登录后至 UKUI 桌面核心组件和基础功能可用; systemd 服务耗时、关键依赖链及启动并行关系; 非交互式维护任务的安全调度优化。 当前已验证的优化是将 e2scrub_reap.service 从初始启动阶段迁移至开机稳定后执行。该方案不关闭图形登录、网络、声音、输入法、文件管理器等基本能力,也不删除文件系统维护功能。 当前实验结论 测试环境为 openKylin 2.0 SP2、Linux 6.6.0-19-generic、VMware x86 虚拟机。 第一条记录为优化前,后四条记录为延迟 e2scrub_reap.service 后: 指标 优化前 优化后均值 优化后中位数 中位数变化

内核时间 11.143s 11.106s 11.103s -0.040s

systemd 用户空间 32.406s 31.659s 31.475s -0.931s

systemd 启动总时间 43.550s 42.766s 42.501s -1.049s

登录界面近似就绪 28.589s 28.749s 28.742s +0.153s

优化后 systemd 总启动时间均值减少 0.783 秒(1.80%),中位数减少 1.049 秒(2.41%)。

当前桌面探针仍因窗口管理器识别失败而超时,因此 login_to_desktop_ms、desktop_ready_ms 和 startup_total_ms 暂不作为有效比赛结果。正式提交前需要修复桌面探针,并完成优化前、优化后各至少 5 次测试。

环境要求 openKylin 客户端系统; x86 笔记本、台式机或虚拟机; systemd; LightDM/UKUI,或经过适配的其他显示管理器和桌面环境; Bash、systemd-analyze、systemctl、loginctl、journalctl;

基线测试运行说明

  1. 安装用户目录版采集脚本 将脚本复制到桌面,执行: cd “$(xdg-user-dir DESKTOP)” chmod +x openkylin_boot_benchmark_desktop_fixed.sh bash ./openkylin_boot_benchmark_desktop_fixed.sh install baseline

脚本安装到: ~/.local/bin/openkylin-boot-benchmark-user

自启动配置位于: ~/.config/autostart/

  1. 重启并登录 sudo reboot

重启后正常输入密码,等待桌面、面板和桌面组件加载。 结果目录: RESULT_DIR=”(xdg−user−dirDESKTOP)/openkylin−boot−results"ls−lh"(xdg-user-dir DESKTOP)/openkylin-boot-results" ls -lh "RESULT_DIR” 主要结果: baseline.csv baseline_services.csv artifacts/

每次重启会向 CSV 追加一行,不会覆盖之前记录。artifacts 文件名包含唯一 boot_id,因此不同启动的 SVG 时序图和关键链文件也不会互相覆盖。

  1. 基线测试 连续执行 5 次: sudo reboot 每次保持相同虚拟机配置,避免宿主机进行大规模下载、杀毒扫描或磁盘整理。最终以中位数为主要结果,平均值、标准差、最小值和最大值为辅助结果。

应用 e2scrub_reap 延迟优化

  1. 确认根文件系统可写 findmnt -no SOURCE,FSTYPE,OPTIONS / sudo touch /etc/openkylin-write-test sudo rm -f /etc/openkylin-write-test

  2. 取消初始启动阶段的服务启用关系 sudo systemctl disable e2scrub_reap.service

  3. 创建延迟定时器 sudo tee /etc/systemd/system/e2scrub-reap-deferred.timer >/dev/null <<’EOF’ [Unit] Description=Run e2scrub cleanup after system startup

[Timer] OnBootSec=5min AccuracySec=30s Unit=e2scrub_reap.service

[Install] WantedBy=timers.target EOF

sudo systemctl daemon-reload sudo systemctl enable –now e2scrub-reap-deferred.timer

  1. 检查配置 systemctl is-enabled e2scrub_reap.service systemctl is-enabled e2scrub-reap-deferred.timer systemctl list-timers –all | grep e2scrub

预期:原服务不再随初始启动同步执行,延迟定时器处于 enabled 状态。

优化后测试 修改标签,避免与基线数据混合:

~/.local/bin/openkylin-boot-benchmark-user label optimized_e2scrub sudo reboot

优化后结果: optimized_e2scrub.csv optimized_e2scrub_services.csv

手工验证:

登录界面可见且键盘、鼠标可用; 能输入密码并登录; 桌面、任务栏、启动器和通知区域正常; 文件管理器、终端和设置中心可以启动; 网络、声音和输入法可用; 开机数分钟后没有明显卡顿。

sudo systemctl disable –now e2scrub-reap-deferred.timer sudo rm -f /etc/systemd/system/e2scrub-reap-deferred.timer sudo systemctl daemon-reload sudo systemctl enable e2scrub_reap.service sudo reboot

已知限制

当前用户目录版脚本使用 display-manager.service 进入 active 的时间近似表示登录界面就绪,尚未严格验证登录界面首帧和输入框响应时间。

当前样本只有 1 次优化前和 4 次优化后数据,不满足最终统计要求。

当前桌面探针未正确识别窗口管理器,桌面可用时间无效。

服务耗时来自 systemd-analyze blame,不能直接相加,必须结合 critical-chain 和 plot.svg 判断关键路径。

跨发行版迁移时需要适配显示管理器、桌面组件进程名和服务名称。

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

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