PPT
BootTracer 是面向 openKylin 2.0 SP2 桌面系统的启动性能分析与安全优化工具。它对内核完成后的系统启动、图形登录以及用户登录后的桌面可用阶段进行多轮采集,构建依赖关系和服务时间线,生成可解释的实验候选,并通过单变量实验、功能验证和回滚机制验证优化收益。
项目不会根据候选分数直接修改系统。任何正式优化都必须先证明性能收益,同时保证图形桌面、基础网络、声音、输入法、键盘和鼠标等能力正常工作。
当前仅支持以下环境:
其他发行版、物理机和经过深度定制的系统尚未纳入验证范围。
启动采集 -> 单轮结构化分析 -> 多轮统计 -> 候选过滤 -> 只读身份、激活拓扑与安全补证 -> 最终实验候选收敛 -> 单变量实验 -> 正式应用与完整性验证 -> 多轮对照复测或回滚
详细项目目录结构见目录结构
模块职责和数据流见 架构说明。
git clone https://gitlink.org.cn/LongyueCheng/okczxtqdxnfxyyh.git BootTracer cd BootTracer
进入维护模式:
sudo mm-cli -o sudo reboot
sudo apt update sudo apt install -y gcc graphviz python3
检查是否安装成功:
dot -V
开始部署 T3 探针,需要使用 root 权限:
cd BootTracer chmod +x ./boot_environment/deploy_boot_analyzer.sh sudo ./boot_environment/deploy_boot_analyzer.sh
然后固化并退出维护模式:
sudo mm-cli -c -a sudo reboot
使用普通桌面用户执行:
cd BootTracer chmod +x ./install.sh ./boottracer.sh ./install.sh
该命令检查目录、关键文件、运行依赖、Shell 语法和 Python 语法,不应用任何系统优化。它还会补充脚本执行权限,并创建分析和实验输出目录。
建议在正式运行前设置系统自动登录,方便后续自动重启和桌面自启动继续采集。如果没有设置,流程会停在用户登录界面;每轮手动输入密码登录后仍可继续。
可选:执行当前仓库的纯 Python 测试。
python3 -m unittest discover -s boot_analysis/05_multi_round/tests -p 'test_*.py' python3 -m unittest discover -s boot_analysis/06_candidate_filter/tests -p 'test_*.py' python3 boot_analysis/07_causal_review/test_generate_assessment.py python3 -m unittest discover -s boot_experiment/tests -p 'test_*.py' python3 -m unittest discover -s boot_apply/tests -p 'test_*.py'
根据多机器实验结果筛选的基础优化规则已写入boot_apply/base_plan.config,可通过下述命令查看:
cat boot_apply/base_plan.config
推荐采集 11 轮,避免首轮因虚拟机未预热导致数据异常:
./boottracer.sh optimize baseline 11 2-11
自动轻量重启结束后,可查看当前进度:
cd BootTracer ./boottracer.sh optimize benchmark-status # 显示如下信息,表示已结束 model=baseline status=completed completed=11/11 selection=2-11
结合环境画像,生成当前机器适配的最终优化计划:
./boottracer.sh optimize plan
可检查环境画像及最终优化计划:
cat boot_apply/output/final_plan.config cat boot_apply/output/final_plan.config.meta.json
如需指定基础计划、输出或目标桌面用户:
./boottracer.sh optimize plan \ --base-plan boot_apply/base_plan.config \ --output boot_apply/output/final_plan.config \ --target-user <桌面用户名>
# 应用最终计划 ./boottracer.sh optimize apply # 检查系统完整性 ./boottracer.sh optimize verify # 如果应用或完整性检查失败,立即执行 ./boottracer.sh optimize rollback ./boottracer.sh optimize verify
设置同上:
./boottracer.sh optimize measure 11 2-11
cd BootTracer ./boottracer.sh optimize benchmark-status # 等待显示如下信息,表示已结束 model=optimized status=completed completed=11/11 selection=2-11
查看优化对比数据:
cat boot_apply/output/benchmark_report.md
可查看、停止或恢复当前复测任务:
./boottracer.sh optimize benchmark-status ./boottracer.sh optimize benchmark-stop ./boottracer.sh optimize benchmark-resume
任何完整性检查失败都应立即停止复测并执行:
# 回滚最近一次正式部署 ./boottracer.sh optimize rollback # 或显式指定 /var/lib/boottracer/apply 下的某次部署目录 ./boottracer.sh optimize rollback /var/lib/boottracer/apply/<apply_批次>
正式应用会把对象级快照和完整部署状态保存在 /var/lib/boottracer/apply/,摘要复制到:
/var/lib/boottracer/apply/
boot_apply/output/deployment_manifest.json boot_apply/output/success_apply.log
统一入口必须由普通桌面用户运行,不要在命令前添加 sudo。
sudo
# 默认采集 10 轮 ./boottracer.sh analyze # 显式指定采集轮数 ./boottracer.sh analyze 10 ./boottracer.sh analyze 轮数
流程会创建临时的免密重启规则、自动重启虚拟机,并在用户重新登录后继续执行。最后一轮结束后会显示每轮 T0~T3、P1、P2 和 P1+P2,并要求选择参与统计的连续双闭区间。
all # 使用当前全部采集轮次 2-10 # 仅将第 2 至第 10 轮纳入统计
直接回车等同于 all。无人值守模式也默认使用 all。如需在首次启动时预设区间,可执行:
all
BOOTTRACER_STATISTICS_ROUNDS=2-10 ./boottracer.sh analyze 10
所有原始轮次都会保留;手动排除只影响统计口径。缺失阶段标记、规则配置不一致或分析不完整的轮次还会被单独标记为无效。
轮次分析结果保存在:
boot_analysis/output/runs/analysis_<YYYYMMDD_HHMMSS>_r<轮数>/
boot_analysis/output/latest 指向最近一次分析批次。原始 benchmark 账本和辅助日志保存在:
boot_analysis/output/latest
$HOME/BootTracer/benchmark_data/
推荐阅读顺序:
01_rounds/round_NN/report/boot_analysis_dashboard.html 02_multi_round/multi_round_boot_analysis_report.md 03_candidates/experiment_candidate_review_report.md 03_candidates/experiment_candidates.csv 04_causal_review/assessments/assessment_summary.md
experiment_candidates.csv
04_causal_review/
如果需要安全终止正在进行的普通分析:
bash ./boot_environment/stop_benchmark.sh
该命令会移除采集自启动项、停止当前批量脚本并收回免密重启规则,但保留已经采集的历史数据。
三个实验阶段都遵循“一次只改变一个变量”的原则:
先从最新的 03_candidates/experiment_candidates.csv 和对应证据包中选择低风险对象,写入阶段一配置:
03_candidates/experiment_candidates.csv
boot_experiment/experiment_stage1_type.config
三个配置文件都使用六个 TAB 分隔字段。
baseline
analysis_20260724_090000_r10
target
.service
.timer
action
disable
mask
delay_timer
timer_persistent_false
user_mask
reason
round
action_parameter
70s
示例(字段之间必须是实际 TAB,不是空格):
baseline target action reason round action_parameter analysis_20260724_090000_r10 example-delay.service delay_timer 验证移出 T0-T3 后的收益 4 70s
disable、mask、timer_persistent_false 和 user_mask 行的最后一个字段必须留空。
然后执行:
./boottracer.sh batch boot_experiment/experiment_stage1_type.config
可以添加 --limit 进行分段实验:
--limit
./boottracer.sh batch boot_experiment/experiment_stage1_type.config --limit 3-5
3-5 是从 1 开始计数的双闭区间,表示仅对配置中的第 3、第 4、第 5 个对象分别执行单变量实验;结束序号不能超过配置中的对象总数。
3-5
需要复测的对象写入 experiment_stage2_retest.config。补充实验写入 experiment_stage3_other.config。实验2和3同样支持 –limit 选项。
experiment_stage2_retest.config
experiment_stage3_other.config
./boottracer.sh batch boot_experiment/experiment_stage2_retest.config ./boottracer.sh batch boot_experiment/experiment_stage3_other.config
如需单独调试一个实验,可使用:
./boottracer.sh experiment start \ --baseline <baseline_name> \ --target <example.service> \ --action <method> \ --reason "验证该服务是否影响启动关键阶段" \ --rounds 4 ./boottracer.sh experiment status ./boottracer.sh experiment keep ./boottracer.sh experiment rollback
keep 只接受最终判定为 keep 的活动实验。环境或数据无效时可先恢复配置,再丢弃本实验专属测量:
keep
./boottracer.sh experiment abort --reason vm_not_warmed ./boottracer.sh experiment drop --reason environment_changed
三个阶段的完整执行方法和判定规则见 实验说明。
完整复现步骤见 复现指南。
详细约束见 安全设计。
$HOME/BootTracer/benchmark_data
受视频存储大小限制,这里只提供百度网盘链接,视频清晰度有限,建议辅以README.md文件。网盘提取码:5efa
如有任何问题,欢迎联系。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
BootTracer
BootTracer 是面向 openKylin 2.0 SP2 桌面系统的启动性能分析与安全优化工具。它对内核完成后的系统启动、图形登录以及用户登录后的桌面可用阶段进行多轮采集,构建依赖关系和服务时间线,生成可解释的实验候选,并通过单变量实验、功能验证和回滚机制验证优化收益。
项目不会根据候选分数直接修改系统。任何正式优化都必须先证明性能收益,同时保证图形桌面、基础网络、声音、输入法、键盘和鼠标等能力正常工作。
项目亮点
支持环境
当前仅支持以下环境:
其他发行版、物理机和经过深度定制的系统尚未纳入验证范围。
系统架构
目录结构
详细项目目录结构见目录结构
模块职责和数据流见 架构说明。
快速开始
1. 获取代码
2. 部署和检查运行环境
进入维护模式:
检查是否安装成功:
开始部署 T3 探针,需要使用 root 权限:
然后固化并退出维护模式:
使用普通桌面用户执行:
该命令检查目录、关键文件、运行依赖、Shell 语法和 Python 语法,不应用任何系统优化。它还会补充脚本执行权限,并创建分析和实验输出目录。
建议在正式运行前设置系统自动登录,方便后续自动重启和桌面自启动继续采集。如果没有设置,流程会停在用户登录界面;每轮手动输入密码登录后仍可继续。
可选:执行当前仓库的纯 Python 测试。
3. 一键部署优化包
3.1. 生成正式计划
根据多机器实验结果筛选的基础优化规则已写入boot_apply/base_plan.config,可通过下述命令查看:
3.2 采集优化前基线数据
推荐采集 11 轮,避免首轮因虚拟机未预热导致数据异常:
自动轻量重启结束后,可查看当前进度:
3.3 生成最终计划
结合环境画像,生成当前机器适配的最终优化计划:
可检查环境画像及最终优化计划:
如需指定基础计划、输出或目标桌面用户:
3.4 正式应用优化
3.5 采集优化后对比数据
设置同上:
自动轻量重启结束后,可查看当前进度:
查看优化对比数据:
3.6 其他命令
可查看、停止或恢复当前复测任务:
任何完整性检查失败都应立即停止复测并执行:
正式应用会把对象级快照和完整部署状态保存在
/var/lib/boottracer/apply/,摘要复制到:4. 验证实验模块
4.1 运行基线分析
统一入口必须由普通桌面用户运行,不要在命令前添加
sudo。流程会创建临时的免密重启规则、自动重启虚拟机,并在用户重新登录后继续执行。最后一轮结束后会显示每轮 T0~T3、P1、P2 和 P1+P2,并要求选择参与统计的连续双闭区间。
直接回车等同于
all。无人值守模式也默认使用all。如需在首次启动时预设区间,可执行:所有原始轮次都会保留;手动排除只影响统计口径。缺失阶段标记、规则配置不一致或分析不完整的轮次还会被单独标记为无效。
轮次分析结果保存在:
boot_analysis/output/latest指向最近一次分析批次。原始 benchmark 账本和辅助日志保存在:推荐阅读顺序:
experiment_candidates.csv只表示证据足以进入人工实验设计,不代表允许直接执行系统修改;04_causal_review/可能为空或缺失;如果需要安全终止正在进行的普通分析:
该命令会移除采集自启动项、停止当前批量脚本并收回免密重启规则,但保留已经采集的历史数据。
4.2 分阶段单变量实验
三个实验阶段都遵循“一次只改变一个变量”的原则:
先从最新的
03_candidates/experiment_candidates.csv和对应证据包中选择低风险对象,写入阶段一配置:三个配置文件都使用六个 TAB 分隔字段。
baselineanalysis_20260724_090000_r10target.service或.timer对象名actiondisable、mask、delay_timer、timer_persistent_false或user_maskreasonroundaction_parameterdelay_timer填写,例如70s;其他动作留空示例(字段之间必须是实际 TAB,不是空格):
disable、mask、timer_persistent_false和user_mask行的最后一个字段必须留空。然后执行:
可以添加
--limit进行分段实验:3-5是从 1 开始计数的双闭区间,表示仅对配置中的第 3、第 4、第 5 个对象分别执行单变量实验;结束序号不能超过配置中的对象总数。需要复测的对象写入
experiment_stage2_retest.config。补充实验写入experiment_stage3_other.config。实验2和3同样支持 –limit 选项。如需单独调试一个实验,可使用:
keep只接受最终判定为keep的活动实验。环境或数据无效时可先恢复配置,再丢弃本实验专属测量:三个阶段的完整执行方法和判定规则见 实验说明。
完整复现步骤见 复现指南。
实验结果
主机器实验环境
主机器应用基线与结果分析
多机器应用基线与结果分析 —— 只包含P1_P2总耗时数据
安全边界
详细约束见 安全设计。
已知限制
$HOME/BootTracer/benchmark_data。文档索引
视频展示链接
受视频存储大小限制,这里只提供百度网盘链接,视频清晰度有限,建议辅以README.md文件。网盘提取码:5efa
项目信息
如有任何问题,欢迎联系。