vlab test-kit live 演示

时刻:2026-09-12 18:08:07 UTC(UTC)
kit:v1.0.10(profile=vm,conf=conf/j37-kit.conf)
系统:Linux 5.10.264-rt160 / debian / uptime=666s
清除=把当前轮整体改名归档为 results-archive-时间戳(不删除,可在「历史结果重放」页回看)。有进程在跑时清除会被拒绝(不动正在写的轮目录)。
本轮结果一览(本轮跑了哪些阶段、各自执行状态)
徽章为执行状态;各阶段的结果与套件判定见下文阶段卡。
实时性(2 项)
实时性基线(延迟负载矩阵)
阶段 id:rt-baseline · 所属主题:实时性
在空载、加压等多种负载组合下测量实时任务的调度延迟,看最大值与平均值是否稳定。
– 已完成(复用上轮)
判定原文:已完成(复用上轮) / 通过
全部 9 轮有效(数据与直方图见 /var/lib/test-kit/results/phases/rt-baseline)
逐项明细见下方阶段卡
实时性调优(隔离核与中断亲和)
阶段 id:rt-tuning · 所属主题:实时性
验证隔离 CPU 核、把中断绑定到指定核等调优手段,是否真的把延迟降下来。
– 已完成(复用上轮)
判定原文:已完成(复用上轮) / 部分通过
通过 3 项,阻塞 2 项(TU-01/03 需引导参数)
逐项明细见下方阶段卡
可靠性(2 项)
服务监控(systemd 单元健康)
阶段 id:monitor · 所属主题:可靠性
持续观察关键 systemd 服务是否存活、有没有反复重启、内存与错误日志是否异常。
– 已完成(复用上轮)
判定原文:已完成(复用上轮) / 通过
监控窗口完成:samples=340 csv行=34 net行=51 can行=34 gap_max=8s
故障注入(panic/看门狗/OOM)
阶段 id:fault-inject · 所属主题:可靠性
人为制造内核 panic、看门狗超时、内存耗尽等故障,看系统是否按预期处置并恢复。
✓ 完成
判定原文:完成 / 部分通过
用例汇总见 case-results.csv
逐项明细见下方阶段卡
性能(1 项)
性能基线(存储/网络/CPU 基准)
阶段 id:perf-baseline · 所属主题:性能
用统一工具测存储、网络、CPU、内存、启动、调度六类基准值,作为后续对比的锚点。
✓ 完成
判定原文:完成 / 部分通过
有数据 15 行 / N/A 2 行(缺失工具或单次性指标,见 perf-notes.md)
功能与系统(2 项)
CAN 总线通信
阶段 id:can · 所属主题:功能与系统
验证 CAN 接口是否在位、总线通信是否可用,并持续观测接口负载、错误与状态。
✓ 完成
判定原文:完成 / N/A
bus=N/A(接口 can0 在位但监听窗 30s 内无帧(无帧源,显式跳过))
网口统计(监测数据)
来自监控窗口的接口计数采样,无执行判定。
业务服务(1 项)
业务服务(服务监测数据)
来自 [target:*] 配置服务与监控采样的画像区,无执行判定。
原始报告(阶段总览表原文与阶段序,逐字未改):report.md

重点关注(5)重点关注(收起)

需人工关注的条目集中于此(判定异常 / N/A / 未完成),证据可点击。
主题组阶段类型内容(原文)证据
实时性
实时性实时性基线(延迟负载矩阵)N/A(不适用/未采集)全部 9 轮有效(数据与直方图见 /var/lib/test-kit/results/phases/rt-baseline);N/A 16 轮(combo7=N/A(机制不可得: 目标 crash-c-abort.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-c-segv.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-go-nilmap.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-go-panic.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-lua-error.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-lua-overflow.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-py-exc.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-py-mem.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-rust-abort.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-rust-panic.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-sh-exit.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 crash-sh-kill9.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 mock-core.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 mock-healthy.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 mock-signal.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板); combo7=N/A(机制不可得: 目标 mock-trace.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板))phases/rt-baseline/verdict
实时性实时性调优(隔离核与中断亲和)判定:部分通过通过 3 项,阻塞 2 项(TU-01/03 需引导参数);TU-01=阻塞(取证:need-boot-args);TU-03=阻塞(取证:need-boot-args);TU-02/TU-04/TU-05=通过phases/rt-tuning/verdict
可靠性
可靠性故障注入(panic/看门狗/OOM)判定:部分通过用例汇总见 case-results.csv;记录页 case-{A..F,mockcapture}.mdphases/fault-inject/verdict
性能
性能性能基线(存储/网络/CPU 基准)判定:部分通过有数据 15 行 / N/A 2 行(缺失工具或单次性指标,见 perf-notes.md)phases/perf-baseline/verdict
功能与系统
功能与系统CAN 总线通信N/A(不适用/未采集)bus=N/A(接口 can0 在位但监听窗 30s 内无帧(无帧源,显式跳过))phases/can/verdict
共 5 条;「N/A(不适用/未采集)」表示本轮环境取不到数据(如接口不在位、工具缺失),既不算通过也不算失败。证据列可点击,直连对应原始文件。

实时性(2 项)实时性(收起)

关注「能不能在确定时间内响应」——重点看延迟是否稳定、有没有超阈值尖峰。

实时性基线(延迟负载矩阵)

套件判定:通过 —— 全部 9 轮有效(数据与直方图见 /var/lib/test-kit/results/phases/rt-baseline);
判定结果
全部 9 轮有效(数据与直方图见 /var/lib/test-kit/results/phases/rt-baseline);
N/A 16 轮(combo7=N/A(机制不可得: 目标 crash-c-abort.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-c-segv.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-go-nilmap.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-go-panic.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-lua-error.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-lua-overflow.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-py-exc.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-py-mem.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-rust-abort.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-rust-panic.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-sh-exit.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 crash-sh-kill9.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 mock-core.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 mock-healthy.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 mock-signal.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板);
combo7=N/A(机制不可得: 目标 mock-trace.service 主进程不可得(unit 未运行或 MainPID=0),且该类无内置施压模板))
详情(判定/简介/图表/原始数据)
阶段 id:rt-baseline · 所属主题:实时性
测什么:在空载与加压等不同负载组合下,反复测量实时任务的调度延迟——也就是「本该醒来的时刻」与「真正醒来的时刻」之间的差。
为什么测:控制类系统最怕「该响应时没响应」,延迟的分布与尾部尖峰决定它能不能用于硬实时场景。
怎么看:先看每个组合的 max(最差值),最差值决定上限;再看直方图尾巴长不长,尾巴长说明有偶发卡顿;这里的数值只用于同环境回归对比,真实硬件需上板复测。
实时性基线(延迟负载矩阵):各负载组合的最大延迟/平均延迟(数据文件 cyclictest-matrix.csv)
0 5000 10000 15000 1·空载 max=911 911 1·空载 avg=106 106 1·空载 2·hackbench 调度压 max=13141 13141 2·hackbench 调度压 avg=93 93 2·hackbench 调度压 3·CPU 压力(stress-ng) max=6925 6925 3·CPU 压力(stress-ng) avg=71 71 3·CPU 压力(stress-ng) 4·IO 压力(stress-ng) max=12231 12231 4·IO 压力(stress-ng) avg=100 100 4·IO 压力(stress-ng) 延迟(µs) 横轴:负载组合
maxavgN/A(无数据,不造假值)单位:µs
怎么看:蓝柱=该组合的最大延迟 max,橙柱=平均延迟 avg;max 与 avg 常差 1~2 个数量级,avg 柱可能极矮——柱顶已标数值,判读以数值为准。

延迟分布(组合 1–4 直方图叠加)

延迟分布(组合 1–4 直方图叠加)(图例=各系列;点图例可只看单条,#all 恢复全部)
1 10 100 1000 10000 100.00K 0 97.5 195 292.5 390 延迟(µs) 样本计数
横轴=延迟(µs);纵轴=样本计数(对数轴);每线=一个测试对象(被测服务 / 模块)的直方图;缺桶按 0(无样本),不跨缺口连线。点图例可只看单条(#all 恢复全部)。

内核模块与驱动

测了什么:kernel-module——在上述目标活动背景下测系统调度延迟(背景施压)。
内核模块与驱动:本类全部对象延迟分布叠加(图例=对象名;Y 轴对数优先,无 log 能力线性降级)
1 10 100 1000 10000 100.00K 0 97.5 195 292.5 390 延迟(µs) 样本计数
横轴=延迟(µs);纵轴=样本计数(对数轴);每线=一个测试对象(被测服务 / 模块)的直方图;缺桶按 0(无样本),不跨缺口连线。点图例可只看单条(#all 恢复全部)。
对象max(µs)avg(µs)溢出计数(≥400µs)
kernel-module157684.61603
max=各线程最大延迟的最大值;avg=各线程平均延迟的算术平均;溢出计数=≥400µs 样本数(不进直方图)。溢出>0 行以告警底色标注;N/A=未采集或不适用,如实占位不补值。

系统服务

测了什么:cron、ssh、systemd-journald——在上述目标活动背景下测系统调度延迟(背景施压)。
系统服务:本类全部对象延迟分布叠加(图例=对象名;Y 轴对数优先,无 log 能力线性降级)
1 10 100 1000 10000 100.00K 0 97.5 195 292.5 390 延迟(µs) 样本计数
横轴=延迟(µs);纵轴=样本计数(对数轴);每线=一个测试对象(被测服务 / 模块)的直方图;缺桶按 0(无样本),不跨缺口连线。点图例可只看单条(#all 恢复全部)。
对象max(µs)avg(µs)溢出计数(≥400µs)
cron84483.9280
ssh122476.4385
systemd-journald89485.51613
max=各线程最大延迟的最大值;avg=各线程平均延迟的算术平均;溢出计数=≥400µs 样本数(不进直方图)。溢出>0 行以告警底色标注;N/A=未采集或不适用,如实占位不补值。

用户自定义服务

测了什么:crash-c-abort、crash-c-segv、crash-go-nilmap、crash-go-panic、crash-lua-error、crash-lua-overflow、crash-py-exc、crash-py-mem、crash-rust-abort、crash-rust-panic、crash-sh-exit、crash-sh-kill9、j34-usersvc、mock-core、mock-healthy、mock-signal、mock-trace——在上述目标活动背景下测系统调度延迟(背景施压)。
用户自定义服务:本类全部对象延迟分布叠加(图例=对象名;Y 轴对数优先,无 log 能力线性降级)
1 10 100 1000 10000 100.00K 0 97.5 195 292.5 390 延迟(µs) 样本计数
横轴=延迟(µs);纵轴=样本计数(对数轴);每线=一个测试对象(被测服务 / 模块)的直方图;缺桶按 0(无样本),不跨缺口连线。点图例可只看单条(#all 恢复全部)。
对象max(µs)avg(µs)溢出计数(≥400µs)
crash-c-abortN/AN/AN/A
crash-c-segvN/AN/AN/A
crash-go-nilmapN/AN/AN/A
crash-go-panicN/AN/AN/A
crash-lua-errorN/AN/AN/A
crash-lua-overflowN/AN/AN/A
crash-py-excN/AN/AN/A
crash-py-memN/AN/AN/A
crash-rust-abortN/AN/AN/A
crash-rust-panicN/AN/AN/A
crash-sh-exitN/AN/AN/A
crash-sh-kill9N/AN/AN/A
j34-usersvc75188.8342
mock-coreN/AN/AN/A
mock-healthyN/AN/AN/A
mock-signalN/AN/AN/A
mock-traceN/AN/AN/A
max=各线程最大延迟的最大值;avg=各线程平均延迟的算术平均;溢出计数=≥400µs 样本数(不进直方图)。溢出>0 行以告警底色标注;N/A=未采集或不适用,如实占位不补值。

实时性调优(隔离核与中断亲和)

套件判定:部分通过 —— 通过 3 项,阻塞 2 项(TU-01/03 需引导参数);
判定结果
通过 3 项,阻塞 2 项(TU-01/03 需引导参数);
TU-01=阻塞(取证:need-boot-args);
TU-03=阻塞(取证:need-boot-args);
TU-02/TU-04/TU-05=通过
详情(判定/简介/图表/原始数据)
阶段 id:rt-tuning · 所属主题:实时性
测什么:验证隔离 CPU 核、把中断绑到指定核这类调优手段,是否真的把延迟降了下来。
为什么测:隔离与亲和是常用调优手段,是否有效须用前后数据对比验证。
怎么看:对比调优前后相同负载下的 max 与 avg;延迟下降、分布变瘦,说明调优有效。
逐项判定明细
调优项判定原因
TU-01阻塞取证:need-boot-args
TU-03阻塞取证:need-boot-args
TU-02通过-
TU-04通过-
TU-05通过-
实时性调优(隔离核与中断亲和):各负载组合的最大延迟/平均延迟(数据文件 tuning-matrix.csv)
0 200 400 600 800 1000 1200 N/A N/A TU-01 TU-02 max=862 862 TU-02 avg=100 100 TU-02 N/A N/A TU-03 TU-04 max=1143 1143 TU-04 avg=104 104 TU-04 TU-05 max=897 897 TU-05 avg=96 96 TU-05 延迟(µs) 横轴:负载组合
maxavgN/A(无数据,不造假值)单位:µs
怎么看:蓝柱=该组合的最大延迟 max,橙柱=平均延迟 avg;max 与 avg 常差 1~2 个数量级,avg 柱可能极矮——柱顶已标数值,判读以数值为准。
原始数据文件(5 项,点击打开;图表数据与判定原文均出自此,逐字未改)

可靠性(2 项)可靠性(收起)

关注「压力下和异常后扛不扛得住」——重点看是否发生非预期崩溃/重启、能否恢复。

故障注入(panic/看门狗/OOM)

套件判定:部分通过 —— 用例汇总见 case-results.csv;
判定结果
用例汇总见 case-results.csv;记录页 case-{A..F,mockcapture}.md
详情(判定/简介/图表/原始数据)
阶段 id:fault-inject · 所属主题:可靠性
测什么:人为制造内核 panic、看门狗超时、内存耗尽等故障,观察系统是否按预期处置并恢复。
为什么测:故障处置路径平时不会自己触发,只能主动注入来验证「坏了能不能自愈、现场证据留不留得下」。
怎么看:每个用例的判定 = 故障是否按预期触发、系统是否成功恢复、现场证据(pstore/日志)是否保留。

用例汇总表(case-results.csv)

逐行解析 case-results.csv:判定与原文零改动;关键数值为展示层 kv 提取(白名单 rc oops trigger oom fsck files bad panicfiles marker failed uptime),未命中文本照录说明列。
用例判定关键数值说明
捕获链验证(mock)通过-捕获链验证 c-cpp=通过 python=通过 sh=通过
A · 组合压力通过rc=0 oops=0→0
B · 内存耗尽与OOM通过trigger=105 oom=0→1
C · 文件系统一致性通过fsck=0 files=60 bad=0
E · 长稳采样部分通过failed=6mem:124→123 samples=12
D · panic恢复与留证待续跑-injected,见重启后 kit-run
D · panic恢复与留证通过panicfiles=2 marker=yes failed=0pstore=yes

压力与资源耗尽

测了什么:A、B——在 CPU 压力与内存耗尽场景下做故障注入,看压力工具与内核的计数/存活是否按预期变化。
用例判定关键数值说明
A · 组合压力通过rc=0 oops=0→0
B · 内存耗尽与OOM通过trigger=105 oom=0→1

文件系统一致性

测了什么:C——在文件系统故障/降级场景下跑 fsck,看登记文件数与不一致数是否按预期、有无降级路径标记。
用例判定关键数值说明
C · 文件系统一致性通过fsck=0 files=60 bad=0

panic 恢复与留证

测了什么:D——注入内核 panic 后重启续跑,看 pstore 归档、marker 与 panic 记录文件等现场证据是否留存、failed 单元数是否为零。
两段式:D 在 case-results.csv 中占 2 段(注入段→续跑段),分段原文见上表,信息零丢失。
用例判定关键数值说明
D · panic恢复与留证待续跑-injected,见重启后 kit-run
D · panic恢复与留证通过panicfiles=2 marker=yes failed=0pstore=yes

长稳采样

测了什么:E——固定轻负载下周期采样,看内存与 load1 的时间序列趋势(横轴=采样序号,非真实时间)。
长稳采样:内存占用(MiB)
0 20 40 60 80 100 120 内存(MiB) / 1 = 125 内存(MiB) / 2 = 124 内存(MiB) / 3 = 124 内存(MiB) / 4 = 124 内存(MiB) / 5 = 124 内存(MiB) / 6 = 124 内存(MiB) / 7 = 124 内存(MiB) / 8 = 124 内存(MiB) / 9 = 124 内存(MiB) / 10 = 125 内存(MiB) / 11 = 124 内存(MiB) / 12 = 119 内存(MiB) 1 3 5 7 9 11 12 纵轴:内存(MiB) 横轴:采样序号
横轴=采样序号(非真实时间;原始 CSV 含 UTC 时刻列,此图按采样顺序);缺口/N/A 断线,不伪造连续采样。
长稳采样:load1(1 分钟平均负载)
0 0.5 1 1.5 2 2.5 load1 / 1 = 2.09 load1 / 2 = 2.16 load1 / 3 = 2.13 load1 / 4 = 2.11 load1 / 5 = 2.17 load1 / 6 = 2.22 load1 / 7 = 2.34 load1 / 8 = 2.29 load1 / 9 = 2.32 load1 / 10 = 2.43 load1 / 11 = 2.43 load1 / 12 = 2.52 load1 1 3 5 7 9 11 12 纵轴:load1 横轴:采样序号
横轴=采样序号(非真实时间);缺口/N/A 断线,不伪造连续采样。
泄漏趋势 Δ(首末四分位口径,内存 MiB):首段均值 124 → 末段均值 123,Δ=-2(采样 12 点;仅同环境回归参考,不作真实趋势断言)。
用例判定关键数值说明
E · 长稳采样部分通过failed=6mem:124→123 samples=12
原始数据文件(8 项,点击打开;图表数据与判定原文均出自此,逐字未改)

服务监控(systemd 单元健康)

套件判定:通过 —— 监控窗口完成:samples=340 csv行=34 net行=51 can行=34 gap_max=8s
判定结果
监控窗口完成:samples=340 csv行=34 net行=51 can行=34 gap_max=8s
详情(判定/简介/图表/原始数据)
阶段 id:monitor · 所属主题:可靠性
测什么:持续观察被测服务(systemd unit)是否存活、有没有反复重启、内存与错误日志有没有异常。
为什么测:服务偶发崩溃或悄悄重启最难发现,需要跨一个时间窗口连续采样才能抓到。
怎么看:每个服务一条序列;重启次数大于 0 或错误日志在增长就是有情况;横轴是采样序号(原始日志没有时间戳列),看趋势即可,不要当真实时间轴。

监控窗口统计

各项取自判定结论原文(括注为原始键名);gap_max=相邻两次采样的最大时间间隔。
采样点数(samples)=340 CSV行数(csv行)=34 网络统计行数(net行)=51 can行=34 最大采样间隔(gap_max)=8s

驱动计数(ethtool -S)

数据来自监控窗口的 net-ethtool.csv(ethtool -S 驱动计数器窗口聚合;长表一行=接口×计数名;增量=末值−首值;驱动计数器语义随驱动各异,值不换算)。逐轮采样原文见 log-dir 的 net-ethtool.txt X| 行;下表按接口、计数名排序。
阶段接口计数名首值末值增量
monitoreth0rx_queue_0_bytes1177412442668
monitoreth0rx_queue_0_drops000
monitoreth0rx_queue_0_kicks110
monitoreth0rx_queue_0_packets1211298
monitoreth0rx_queue_0_xdp_drops000
monitoreth0rx_queue_0_xdp_packets000
monitoreth0rx_queue_0_xdp_redirects000
monitoreth0rx_queue_0_xdp_tx000
monitoreth0tx_queue_0_bytes1092811552624
monitoreth0tx_queue_0_kicks1271358
monitoreth0tx_queue_0_packets1271358
monitoreth0tx_queue_0_xdp_tx000
monitoreth0tx_queue_0_xdp_tx_drops000
服务监控时序:次数(重启次数、错误日志条数)(横轴=采样序号)
0 10 20 30 40 重启次数(次) / ssh = 0 重启次数(次) / cron = 0 重启次数(次) / systemd-journald = 0 重启次数(次) / j34-usersvc = 0 重启次数(次) / mock-core = 0 重启次数(次) / mock-trace = 0 重启次数(次) / mock-signal = 45 重启次数(次) / mock-healthy = 0 重启次数(次) / crash-c-segv = 0 重启次数(次) / crash-c-abort = 0 重启次数(次) / crash-py-exc = 0 重启次数(次) / crash-py-mem = 0 重启次数(次) / crash-lua-error = 0 重启次数(次) / crash-lua-overflow = 0 重启次数(次) / crash-rust-panic = 0 重启次数(次) / crash-rust-abort = 0 重启次数(次) / crash-go-panic = 0 重启次数(次) / crash-go-nilmap = 0 重启次数(次) / crash-sh-exit = 0 重启次数(次) / crash-sh-kill9 = 0 重启次数(次) / chrony = 0 重启次数(次) / systemd-udevd = 0 重启次数(次) / systemd-coredump@24-67363-0 = 0 重启次数(次) / systemd-coredump@46-68829-0 = 0 重启次数(次) / systemd-logind = 0 重启次数(次) / systemd-coredump@5-65997-0 = 0 重启次数(次) / systemd-coredump@35-68098-0 = 0 重启次数(次) / getty@tty1 = 0 重启次数(次) / serial-getty@ttyAMA0 = 0 重启次数(次) / rsyslog = 0 重启次数(次) / unattended-upgrades = 0 重启次数(次) / dbus = 0 重启次数(次) / user@0 = 0 重启次数(次) 错误日志条数(条) / ssh = 0 错误日志条数(条) / cron = 0 错误日志条数(条) / systemd-journald = 0 错误日志条数(条) / j34-usersvc = 0 错误日志条数(条) / mock-core = 0 错误日志条数(条) / mock-trace = 0 错误日志条数(条) / mock-signal = 0 错误日志条数(条) / mock-healthy = 0 错误日志条数(条) / crash-c-segv = 0 错误日志条数(条) / crash-c-abort = 0 错误日志条数(条) / crash-py-exc = 0 错误日志条数(条) / crash-py-mem = 0 错误日志条数(条) / crash-lua-error = 0 错误日志条数(条) / crash-lua-overflow = 0 错误日志条数(条) / crash-rust-panic = 0 错误日志条数(条) / crash-rust-abort = 0 错误日志条数(条) / crash-go-panic = 0 错误日志条数(条) / crash-go-nilmap = 0 错误日志条数(条) / crash-sh-exit = 0 错误日志条数(条) / crash-sh-kill9 = 0 错误日志条数(条) / chrony = 0 错误日志条数(条) / systemd-udevd = 0 错误日志条数(条) / systemd-coredump@24-67363-0 = 0 错误日志条数(条) / systemd-coredump@46-68829-0 = 0 错误日志条数(条) / systemd-logind = 0 错误日志条数(条) / systemd-coredump@5-65997-0 = 0 错误日志条数(条) / systemd-coredump@35-68098-0 = 0 错误日志条数(条) / getty@tty1 = 0 错误日志条数(条) / serial-getty@ttyAMA0 = 0 错误日志条数(条) / rsyslog = 0 错误日志条数(条) / unattended-upgrades = 0 错误日志条数(条) / dbus = 0 错误日志条数(条) / user@0 = 0 错误日志条数(条) ssh mock-core crash-c-segv crash-lua-error crash-go-panic chrony systemd-logind serial-getty@ttyAMA0 user@0 纵轴:次数(重启次数、错误日志条数) 横轴:采样序号
怎么看:纵轴=次数(重启次数、错误日志条数);横轴为采样序号(原始日志无时间戳列),非真实时间轴;同量纲序列同图、线尾已标系列名;缺口/N/A 断线,不伪造连续采样。
服务监控时序:内存占用(KB)(横轴=采样序号)
0 1000 2000 3000 4000 内存峰值(KB) / ssh = 3752 内存峰值(KB) / cron = 436 内存峰值(KB) / systemd-journald = 3716 内存峰值(KB) / j34-usersvc = 336 内存峰值(KB) / mock-signal = 376 内存峰值(KB) / mock-healthy = 156 内存峰值(KB) ssh mock-core crash-c-segv crash-lua-error crash-go-panic chrony systemd-logind serial-getty@ttyAMA0 user@0 纵轴:内存占用(KB) 横轴:采样序号
N/A 灰显/断点:该单元该项无数值(未采集或不适用),不造假值、不连线。
怎么看:纵轴=内存占用(KB);横轴为采样序号(原始日志无时间戳列),非真实时间轴;同量纲序列同图、线尾已标系列名;缺口/N/A 断线,不伪造连续采样。
服务监控时序:内存变化速率(KB/小时)(横轴=采样序号)
-0 5000 10000 15000 20000 25000 内存变化速率(KB/小时) / ssh = 0 内存变化速率(KB/小时) / cron = 0 内存变化速率(KB/小时) / systemd-journald = 26040 内存变化速率(KB/小时) / j34-usersvc = -120 内存变化速率(KB/小时) / mock-signal = -128 内存变化速率(KB/小时) / mock-healthy = 0 内存变化速率(KB/小时) ssh mock-core crash-c-segv crash-lua-error crash-go-panic chrony systemd-logind serial-getty@ttyAMA0 user@0 纵轴:内存变化速率(KB/小时) 横轴:采样序号
N/A 灰显/断点:该单元该项无数值(未采集或不适用),不造假值、不连线。
怎么看:纵轴=内存变化速率(KB/小时);横轴为采样序号(原始日志无时间戳列),非真实时间轴;同量纲序列同图、线尾已标系列名;缺口/N/A 断线,不伪造连续采样。
原始数据文件(4 项,点击打开;图表数据与判定原文均出自此,逐字未改)

性能(1 项)性能(收起)

关注「跑得多快」——存储/网络/CPU/内存等基准数值,只在同环境内对比才有意义。

性能基线(存储/网络/CPU 基准)

套件判定:部分通过 —— 有数据 15 行 / N/A 2 行(缺失工具或单次性指标,见 perf-notes.md)
判定结果
有数据 15 行 / N/A 2 行(缺失工具或单次性指标,见 perf-notes.md)
详情(判定/简介/图表/原始数据)
阶段 id:perf-baseline · 所属主题:性能
测什么:用统一工具测量存储、网络、CPU、内存等性能基准值。
为什么测:先记下「这台机器正常时是多少」,以后改动或回归才有对比的锚点。
怎么看:柱子是各用例结果(3 次运行取中位值),散布点是 3 次原始值;同一维度且同一单位才画在同一张图里;这些数值只在本环境内可比,不能推断真实硬件表现。
维度 启动(单位:s)——各用例中位值 + 3 次原始值散布
0 5 10 15 20 冷启动总耗时冷启动总耗时 N/A 内核态耗时内核态耗时 0.763 0.763 用户态耗时用户态耗时 18.998 18.998
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:s
横轴=数值(单位 s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 CPU(单位:ms)——各用例中位值 + 3 次原始值散布
0 500 1000 1500 2000 2500 gzip压缩-l1gzip压缩-l1 2072 2153 2072 gzip压缩-l9gzip压缩-l9 2295 2295 2359
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:ms
横轴=数值(单位 ms);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 CPU(单位:kB/s)——各用例中位值 + 3 次原始值散布
0 50000 100.00K 150.00K 200.00K openssl-aes-256-cbcopenssl-aes-256-cbc 26116.1 26116.1 93055.66 openssl-sha256openssl-sha256 220.92K 220.92K 221.38K
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:kB/s
横轴=数值(单位 kB/s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 CPU(单位:signs/s)——各用例中位值 + 3 次原始值散布
0 100 200 300 400 500 openssl-rsa2048openssl-rsa2048 480.7 484.3 480.7
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:signs/s
横轴=数值(单位 signs/s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 内存(单位:MiB/s)——各用例中位值 + 3 次原始值散布
0 2000 4000 6000 8000 sysbench-memorysysbench-memory 8426.88 8452.84 8426.88
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:MiB/s
横轴=数值(单位 MiB/s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 内存(单位:µs)——各用例中位值 + 3 次原始值散布
0 0.2 0.4 0.6 0.8 1 cyclictest-avg(短窗)cyclictest-avg(短窗) N/A
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:µs
横轴=数值(单位 µs);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 存储(单位:IOPS)——各用例中位值 + 3 次原始值散布
0 1000 2000 3000 4000 5000 fio-randreadfio-randread 3729 4592 3729 fio-randwritefio-randwrite 3690 3690 3946
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:IOPS
横轴=数值(单位 IOPS);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 存储(单位:KiB/s)——各用例中位值 + 3 次原始值散布
0 500.00K 1.00M 1.50M 2.00M 2.50M fio-seqreadfio-seqread 1.86M 2.38M 1.86M fio-seqwritefio-seqwrite 1.80M 1.85M 1.80M
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:KiB/s
横轴=数值(单位 KiB/s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 网络(单位:Gbits/s)——各用例中位值 + 3 次原始值散布
0 2 4 6 8 iperf3-回环iperf3-回环 7.82 7.82 8
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:Gbits/s
横轴=数值(单位 Gbits/s);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 网络(单位:ms)——各用例中位值 + 3 次原始值散布
0 0.1 0.2 0.3 0.4 0.5 0.6 ping-网关RTTping-网关RTT 0.547 0.547 0.619
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:ms
横轴=数值(单位 ms);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
维度 调度(单位:ms)——各用例中位值 + 3 次原始值散布
0 2000 4000 6000 8000 hackbenchhackbench 7179 7419 7179
中位值3 次原始值(散布)N/A(无数据,不造假值)单位:ms
横轴=数值(单位 ms);纵轴=用例(每项为一次基准测试);蓝柱=3 次运行取的中位值,红点=3 次原始值;灰块=N/A(缺失工具或单次性指标,如实不补值)。同一维度内单位不同会分图显示,避免不同量纲同轴比较。
原始数据文件(2 项,点击打开;图表数据与判定原文均出自此,逐字未改)

功能与系统(2 项)功能与系统(收起)

关注「基础功能是否在位可用」——系统服务、总线、启动链等是否正常工作。

CAN 总线通信

套件判定:N/A —— bus=N/A(接口 can0 在位但监听窗 30s 内无帧(无帧源,显式跳过))
判定结果
bus=N/A(接口 can0 在位但监听窗 30s 内无帧(无帧源,显式跳过))
详情(判定/简介/图表/原始数据)
阶段 id:can · 所属主题:功能与系统
测什么:验证 CAN 接口是否在位、总线通信是否可用,并持续观测接口的负载、错误与状态。
为什么测:CAN 是控制总线的命脉,接口不在位、错误增长必须在测试阶段暴露,不能带到现场。
怎么看:接口监测卡看负载/占用率/错误计数/总线状态(各量为窗口增量);需要真实总线端点的项在没有端点时显示 N/A——N/A 不算失败,只是这项没测到。

接口监测(CAN 接口负载 / 错误 / 状态)

数据来自监控窗口的 can-counters.csv(逐轮采样原文见 log-dir 的 can-samples.txt K| 行);各量为窗口增量(末值-首值),横轴=CAN 接口。
CAN 接口监测(阶段 monitor):负载(窗口 rx/tx 帧数增量,数据文件 can-counters.csv)
0 50 100 150 200 250 can0 rx帧增量=0 0 can0 tx帧增量=0 0 can0 vcan0 rx帧增量=239 239 vcan0 tx帧增量=239 239 vcan0 横轴:CAN 接口
rx帧增量tx帧增量N/A(无数据,不造假值)单位:帧
横轴=CAN 接口;蓝柱=rx 帧增量,橙柱=tx 帧增量;帧率(帧/秒)见下方统计条。
CAN 接口监测(阶段 monitor):负载(窗口 rx/tx 字节增量,数据文件 can-counters.csv)
0 500 1000 1500 2000 can0 rx字节增量=0 0 can0 tx字节增量=0 0 can0 vcan0 rx字节增量=1912 1912 vcan0 tx字节增量=1912 1912 vcan0 字节 横轴:CAN 接口
rx字节增量tx字节增量N/A(无数据,不造假值)单位:字节
横轴=CAN 接口;字节增量与帧数增量分图(量纲不同,不同轴比较)。
CAN 接口监测(阶段 monitor):总线占用率近似(%,数据文件 can-counters.csv)
0 0.2 0.4 0.6 0.8 1 can0can0 N/A vcan0vcan0 N/A
占用率近似(%)N/A(无数据,不造假值)单位:%
总线占用率近似口径:((rx字节增量+tx字节增量)×8+(rx帧增量+tx帧增量)×128bit)÷比特率÷窗口秒×100——帧开销按固定位数近似,不分标准/扩展帧、未计位填充实际长度与帧间隔,只作量级参考,非实测总线占用;比特率不可得(如 vcan 无 bitrate)时记 N/A。
CAN 接口监测(阶段 monitor):错误(窗口 rx/tx 错误增量,数据文件 can-counters.csv)
0 0.2 0.4 0.6 0.8 1 can0 rx错误增量=0 0 can0 tx错误增量=0 0 can0 vcan0 rx错误增量=0 0 vcan0 tx错误增量=0 0 vcan0 计数 横轴:CAN 接口
rx错误增量tx错误增量N/A(无数据,不造假值)单位:计数
横轴=CAN 接口;错误计数取 ip -s link 的 errors 列窗口增量;「错误增量窗口数」=错误计数较上一轮增长的采样轮数(见统计条)。
can0/错误增量窗口数=0 can0/状态翻转次数=0 can0/末次CAN状态=STOPPED can0/链路状态=DOWN can0/比特率=N/A can0/采样数=17 can0/窗口秒=120 vcan0/错误增量窗口数=0 vcan0/状态翻转次数=0 vcan0/末次CAN状态=N/A vcan0/链路状态=UNKNOWN vcan0/比特率=N/A vcan0/采样数=17 vcan0/窗口秒=120
该阶段除判定文件(verdict)外无其它产物文件——判定结论见上

网口统计(流量 / 错误 / 链路状态)

数据来自监控窗口的 net-counters.csv(ip -s link 口径;逐轮采样原文见 log-dir 的 net-samples.txt N| 行);各量为窗口增量(末值-首值),横轴=网口。
网口统计(阶段 monitor):流量(窗口 rx/tx 字节增量,数据文件 net-counters.csv)
0 500 1000 1500 2000 can0 rx字节增量=0 0 can0 tx字节增量=0 0 can0 eth0 rx字节增量=668 668 eth0 tx字节增量=624 624 eth0 vcan0 rx字节增量=1920 1920 vcan0 tx字节增量=1920 1920 vcan0 字节 横轴:网口
rx字节增量tx字节增量N/A(无数据,不造假值)单位:字节
横轴=网口;蓝柱=rx 字节增量,橙柱=tx 字节增量;数值为监控窗口内的增量(末值-首值),不是累计总量。
网口统计(阶段 monitor):速率(窗口字节每秒,数据文件 net-counters.csv)
0 5 10 15 can0 rx字节每秒=0 0 can0 tx字节每秒=0 0 can0 eth0 rx字节每秒=5 5 eth0 tx字节每秒=5 5 eth0 vcan0 rx字节每秒=16 16 vcan0 tx字节每秒=16 16 vcan0 字节/秒 横轴:网口
rx字节每秒tx字节每秒N/A(无数据,不造假值)单位:字节/秒
横轴=网口;速率=字节增量÷窗口秒(整数截断);窗口秒为 0 时记 N/A。链路带宽占比未折算(网口侧无原生速率值)。
网口统计(阶段 monitor):包数(窗口 rx/tx 包增量,数据文件 net-counters.csv)
0 50 100 150 200 250 can0 rx包增量=0 0 can0 tx包增量=0 0 can0 eth0 rx包增量=8 8 eth0 tx包增量=8 8 eth0 vcan0 rx包增量=240 240 vcan0 tx包增量=240 240 vcan0 横轴:网口
rx包增量tx包增量N/A(无数据,不造假值)单位:包
横轴=网口;包数与字节数分图呈现(量纲不同,不同轴比较)。
网口统计(阶段 monitor):错误与丢弃(窗口增量,数据文件 net-counters.csv)
0 0.2 0.4 0.6 0.8 1 can0 rx错误增量=0 0 can0 rx丢弃增量=0 0 can0 tx错误增量=0 0 can0 tx丢弃增量=0 0 can0 eth0 rx错误增量=0 0 eth0 rx丢弃增量=0 0 eth0 tx错误增量=0 0 eth0 tx丢弃增量=0 0 eth0 vcan0 rx错误增量=0 0 vcan0 rx丢弃增量=0 0 vcan0 tx错误增量=0 0 vcan0 tx丢弃增量=0 0 vcan0 计数 横轴:网口
rx错误增量rx丢弃增量tx错误增量tx丢弃增量N/A(无数据,不造假值)单位:计数
横轴=网口;四项均为计数增量:rx/tx errors 与 rx/tx dropped(ip -s link 口径);全 0 即窗口内无错误与丢包。
can0/rx字节每秒=0 can0/tx字节每秒=0 can0/rx错误增量=0 can0/tx错误增量=0 can0/采样数=17 can0/窗口秒=120 eth0/rx字节每秒=5 eth0/tx字节每秒=5 eth0/rx错误增量=0 eth0/tx错误增量=0 eth0/采样数=17 eth0/窗口秒=120 vcan0/rx字节每秒=16 vcan0/tx字节每秒=16 vcan0/rx错误增量=0 vcan0/tx错误增量=0 vcan0/采样数=17 vcan0/窗口秒=120
链路状态:net-counters.csv(T12 §9.3 的 16 列)不含链路状态列——本卡不臆造状态值,需采集面后续增列后方可呈现(采集侧本轮未改动)。

业务服务业务服务(收起)

被测对象=kit.conf [target:*] 配置的业务服务自身(资源与行为画像),与四个测试主题(测系统行为)正交互补;标准锚点:ISO 26262-6 将「资源使用评估」列为软件单元验证方法——此处为方法学借用(内容合法性锚点),非合规声明。

服务总览(五要素:状态 / 重启 / 内存 / CPU / 错误)

每服务一行,[target:*] 配置驱动;数据=service-monitor.csv 汇总优先,缺行回退引擎 samples.txt S| 行逐采样聚合(峰值/末值);CPU 为 S| 行末采样累计值。N/A=该服务本轮无对应采样数据,如实占位不编数据。
服务(unit)状态重启数内存CPU 累计错误
systemd-journald.service
journald · system-service · critical
active03.6 MiBN/A0 条
ssh.service
ssh · system-service · critical
active03.7 MiBN/A0 条
sandbox-heartbeat.service
sandbox-heartbeat · user-service · normal
N/AN/AN/AN/AN/A
CPU 口径:systemd UsageCPUUSec 累计值(ns→s),单调递增、非利用率——差分化候 M2(评估文档 §6.1)。重启数=监控窗口内 NRestarts 峰值(service-monitor.csv 口径;S| 行回退取扫描期峰值)。

通用层时序(全部服务同屏可比)

无 monitor 逐采样数据(--log-dir 未提供或无 samples.txt S| 行)——通用层时序图不可用,不臆造曲线。

通用指标矩阵(服务 × 指标,跨语言同口径)

列值 verbatim 取自 service-monitor.csv(task-08 §7 schema);该行缺失时回退 S| 行逐采样聚合并在「数据源」列注明;两者皆缺整行 N/A(无数据服务诚实占位)。
服务(unit)状态重启数退出原因信号oom内存峰值KB内存趋势KB每时CPU 累计(ns)错误日志计数采样点数数据源
systemd-journald.serviceactive0successN/Ano371626040N/A0 条N/A汇总 CSV
ssh.serviceactive0successN/Ano37520N/A0 条N/A汇总 CSV
sandbox-heartbeat.serviceN/AN/AN/AN/AN/AN/AN/AN/AN/AN/A无数据
CPU 累计(ns)=S| 行末采样 UsageCPUUSec 原值(累计口径,非利用率——差分化候 M2);退出原因/信号/oom/unlisted 仅汇总 CSV 持有,无 CSV 时 N/A。

服务 × 测试维度交叉引用

本表只做链接引用、不复制明细(明细唯一处原则,评估文档 §4):各维度判定与明细在其专属卡与原始文件。组合 5/6/7=对该服务背景施压测系统延迟(实时性卡);用例 D=系统级 panic 注入与恢复(全体服务共处一轮,coredump/恢复证据见故障注入卡)。
服务(unit)实时性(组合 5/6/7 定向施压对象)故障注入(用例 D panic 恢复与留证)服务监控
systemd-journald.service组合 6(对象 systemd-journald)用例 D(系统级)监控卡
ssh.service组合 6(对象 ssh)用例 D(系统级)监控卡
sandbox-heartbeat.service用例 D(系统级)监控卡

运行时层(按语言字段分组,不横比)

分组依据=kit.conf [target:*] 语言字段(c-cpp/python/lua/sh/rust/go 六字段互斥,E5/E6 校验)——配置填错语言会展示错误专属项。各语言专属指标只在同语言内对比或仅展示,不跨语言折算(评估文档 §2)。

sh(3 项)

服务清单(kit.conf [target:*]):systemd-journald.service、ssh.service、sandbox-heartbeat.service
专属指标(评估文档 §2 运行时层):退出码、子进程计数。
M1 暂无该语言专属采集数据——需业务配合采集(本卡为占位;采集扩展候 M2、语言专属候 M3,评估文档 §5)。
明细唯一处:逐采样原文与汇总 CSV 不复制进页,原文见下(评估文档 §4)。

过程记录(3 项)过程记录(收起)

门禁记录(跑测前的准入检查结论)

门禁 = 跑测前对环境的准入检查;未通过时 kit 会拒绝执行或需人工豁免,此处为拒绝/豁免待定的留痕(原文见链接文件)。
无 gate-*.log——本轮未发生门禁拒绝(kit-run 仅在拒绝/豁免待定时落门禁记录)

断点续跑账本(checkpoint.tsv)

记录每个阶段的执行状态,用于中断后从断点继续——状态为 done 表示已完成,interrupted 表示中断待续。
范围(scope)标识(id)状态(state)
phasert-baselinedone
phasert-tuningdone
phasemonitordone
casefault-inject:Ddone
phasefault-injectdone
phaseperf-baselinedone
phasecandone
原始文件:checkpoint.tsv

预检报告(环境自检明细)

本轮预检日志不在本机(report.md 引用 /var/lib/test-kit/logs/preflight-20260912-175831.log,未随归档重放带来)——不回退链接其它轮日志;完整明细见原测试机 log-dir。