docs: add submit docs
KernelScope 是面向 openKylin/Linux 的本机性能异常观测与根因分析工具。系统使用 eBPF 与 /proc 采集内核和进程指标,覆盖 CPU、I/O、内存、锁竞争和系统调用五类 场景,并将异常检测、根因排序、关联事件聚合和证据输出组织为一条可复现的诊断链路。
/proc
内核观测 → 窗口化指标 → 异常检测 → 根因分析 → Incident 关联 → 结构化结果与证据
KernelScope 的目标是让每个异常结论都能回到具体时间窗口、进程或资源对象,以及被规则实际使用的观测值。工具输出示例见评测报告及 docs/examples。
docs/examples
rca-events.jsonl
rca_result.evidence[]
source_event_id
x86_64
aarch64/arm64
系统整体架构参见系统设计说明
Collector 以 root 运行,负责:
Analyzer 不加载 eBPF,可使用普通用户权限运行。它负责:
这种两进程设计将高权限采集与诊断规则隔离,采集、检测和 RCA 可以分别验证和演进。
insufficient_evidence
Detector 负责检测异常事件,而 RCA 再结合窗口历史解释为什么发生,RCA Engine 采用确定性领域规则,不依赖外部大模型。候选根因统一使用多证据评分,选出评分规则最高根因作为主因,评分规则为:
R(C)=G(C)×[∑iwiEi−λ∑jpjXj]+R(C) = G(C)\times \left[ \sum_i w_i E_i - \lambda\sum_j p_j X_j \right]^+R(C)=G(C)×[i∑wiEi−λj∑pjXj]+
具体评分逻辑参考参数与配置说明
每个完成态 Cause 必须引用同一结果中的 Evidence。Evidence 至少包含:
run_id window_id domain / record_type selector observed
规则包在 Analyzer 启动时完成 schema 校验、兼容性检查和 SHA-256 摘要计算,并冻结 为不可变 RuleSnapshot。结果 Envelope 保存 Engine 版本、Rule Pack 版本和摘要, 因此同一输入和同一规则快照能够得到可重复核验的结果。
RuleSnapshot
推荐环境:
安装常用构建依赖:
sudo apt update sudo apt install -y \ clang llvm bpftool libbpf-dev libelf-dev zlib1g-dev \ gcc g++ make cmake pkg-config nlohmann-json3-dev python3
运行前检查:
test -r /sys/kernel/btf/vmlinux && echo "BTF OK" uname -m sudo bpftool feature probe kernel
完整要求见安装部署说明和适用范围与兼容性说明。
make make workloads make check
根 Makefile 通过两个独立 CMake 子工程构建 Collector 和 Analyzer:
make
make collector
build/bin/sys_monitor
make analyzer
build/bin/kernelscope-analyzer
make workloads
build/workloads/*
make check
make clean
build/
终端 A,先启动 Analyzer:
./build/bin/kernelscope-analyzer \ --listen /tmp/kernelscope-window-v01.sock \ --config analyzer/detector/detector.conf \ --rca-rule-pack rules/rca/v1/pack.json \ --output results/analyzer
终端 B,再启动 Collector:
sudo ./build/bin/sys_monitor \ -o results/collector/run-001 \ -i 1 \ -s /tmp/kernelscope-window-v01.sock
运行被测负载并保留足够的基线、注入和恢复窗口。停止 Collector 后,Analyzer 会 刷新仍开放的 Incident。
Collector 原始数据:
results/collector/run-001/ ├── cpu.csv ├── cpu_hotspot.csv ├── io.csv ├── io_latency.csv ├── io_hotspot.csv ├── memory.csv ├── lock.csv ├── syscall.csv └── syscall_error.csv
Analyzer 结构化结果:
results/analyzer/ └── rca-events.jsonl
查看最近一条完整结果:
tail -n 1 results/analyzer/rca-events.jsonl | jq .
查看主因与置信度:
jq -c '{ result_id, run_id, status: .rca_result.status, cause: .rca_result.primary_cause.cause_type, confidence: .rca_result.primary_cause.confidence }' results/analyzer/rca-events.jsonl
rca-events.jsonl 在异常达到触发条件且 Incident 关闭或连接结束刷新后写入;文件 暂时为空不等价于部署失败。
可选 Web 页面用于浏览 Run、异常和报告。页面是展示入口,正式评测仍以原始 Event Log、Ground Truth 和自动校验文件为准,详见Web 结果查看说明。
Evaluation 提供 24 个正例、负例和混合用例。e2e profile 使用真实 Collector 与 Analyzer,覆盖五类正向场景及典型负例:
e2e
sudo mkdir -p /mnt/osic-test sudo chown "$USER":"$USER" /mnt/osic-test sudo -v make all workloads OSIC_IO_DIR=/mnt/osic-test ./evaluation/run-suite e2e
典型 Run 目录包含:
results/evaluation/<run-id>/ ├── command.txt ├── ground-truth.json ├── timeline.jsonl ├── collector/ ├── analyzer/rca-events.jsonl ├── collector-validation.json ├── analyzer-validation.json ├── analyzer-validation.md ├── performance-samples.csv ├── performance-summary.json └── performance.svg
严格模式会校验 CSV、Window Contract、RCA Envelope、主根因、目标实体和 Evidence 引用;必要检查失败时命令返回非零。
压力用例只能在专用、可恢复环境运行。I/O 用例只操作 OSIC_IO_DIR 下的普通文件, 高内存和 cgroup/OOM 场景应先阅读Evaluation 运行手册。
OSIC_IO_DIR
项目使用成对实验区分系统本身的异常指标与 KernelScope 带来的额外影响:
baseline:只运行 workload instrumented:运行 Collector + Analyzer + 相同 workload
一键采集 CPU、I/O、内存和锁场景的 A/B 数据:
sudo -v OSIC_OFFICIAL_FIO_FILE=/mnt/osic-test/fio-test.img \ tools/official_benchmark_suite.sh \ --case all \ --duration 180 \ --strict-capture
性能测试报告见评测/实验报告
Collector 通过架构兼容层和 CMake 目标参数支持:
make collector ARCH=x86 make collector ARCH=arm64
系统调用号和 eBPF 目标宏在 Collector 层适配;上层 Metric Record、Window 协议、 Detector、RCA Rule Pack 和 Evidence 结构保持架构无关。详见多平台适配说明。
KernelScope/ ├── collector/ eBPF 与 /proc 采集、CSV/Socket Writer ├── analyzer/ Window、Detector、RCA、Incident、Event Log ├── shared/ 类型化指标和窗口协议模型 ├── rules/rca/v1/ 版本化 RCA Rule Pack ├── evaluation/ 场景编排、Ground Truth、自动校验和性能采样 ├── tests/ 协议、Analyzer 和 RCA 测试 ├── web/ Node.js REST 后端与 Vue 结果页 └── docs/ 设计、部署、复现、评测与兼容性说明
markdown
docx
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
KernelScope
KernelScope 是面向 openKylin/Linux 的本机性能异常观测与根因分析工具。系统使用 eBPF 与
/proc采集内核和进程指标,覆盖 CPU、I/O、内存、锁竞争和系统调用五类 场景,并将异常检测、根因排序、关联事件聚合和证据输出组织为一条可复现的诊断链路。KernelScope 的目标是让每个异常结论都能回到具体时间窗口、进程或资源对象,以及被规则实际使用的观测值。工具输出示例见评测报告及
docs/examples。核心能力
rca-events.jsonl。rca_result.evidence[]回到原始采集记录核验。source_event_id,避免把一条故障链拆成互不关联的告警。x86_64和aarch64/arm64提供独立构建入口,并配有 CMake 配置检查和 smoke test。系统有哪些组件
系统整体架构参见系统设计说明
Collector
Collector 以 root 运行,负责:
/proc和系统接口;Analyzer
Analyzer 不加载 eBPF,可使用普通用户权限运行。它负责:
这种两进程设计将高权限采集与诊断规则隔离,采集、检测和 RCA 可以分别验证和演进。
关键设计
insufficient_evidence,不补造确定性主因。支持的五类场景
根因诊断原理
Detector 负责检测异常事件,而 RCA 再结合窗口历史解释为什么发生,RCA Engine 采用确定性领域规则,不依赖外部大模型。候选根因统一使用多证据评分,选出评分规则最高根因作为主因,评分规则为:
R(C)=G(C)×[i∑wiEi−λj∑pjXj]+
具体评分逻辑参考参数与配置说明
每个完成态 Cause 必须引用同一结果中的 Evidence。Evidence 至少包含:
规则包在 Analyzer 启动时完成 schema 校验、兼容性检查和 SHA-256 摘要计算,并冻结 为不可变
RuleSnapshot。结果 Envelope 保存 Engine 版本、Rule Pack 版本和摘要, 因此同一输入和同一规则快照能够得到可重复核验的结果。快速开始
1. 环境
推荐环境:
x86_64或aarch64/arm64;安装常用构建依赖:
运行前检查:
完整要求见安装部署说明和适用范围与兼容性说明。
2. 构建与离线测试
根 Makefile 通过两个独立 CMake 子工程构建 Collector 和 Analyzer:
makemake collectorbuild/bin/sys_monitormake analyzerbuild/bin/kernelscope-analyzermake workloadsbuild/workloads/*make checkmake cleanbuild/3. 启动在线诊断
终端 A,先启动 Analyzer:
终端 B,再启动 Collector:
运行被测负载并保留足够的基线、注入和恢复窗口。停止 Collector 后,Analyzer 会 刷新仍开放的 Incident。
4. 查看结果
Collector 原始数据:
Analyzer 结构化结果:
查看最近一条完整结果:
查看主因与置信度:
rca-events.jsonl在异常达到触发条件且 Incident 关闭或连接结束刷新后写入;文件 暂时为空不等价于部署失败。可选 Web 页面用于浏览 Run、异常和报告。页面是展示入口,正式评测仍以原始 Event Log、Ground Truth 和自动校验文件为准,详见Web 结果查看说明。
一键复现五类场景
Evaluation 提供 24 个正例、负例和混合用例。
e2eprofile 使用真实 Collector 与 Analyzer,覆盖五类正向场景及典型负例:典型 Run 目录包含:
严格模式会校验 CSV、Window Contract、RCA Envelope、主根因、目标实体和 Evidence 引用;必要检查失败时命令返回非零。
压力用例只能在专用、可恢复环境运行。I/O 用例只操作
OSIC_IO_DIR下的普通文件, 高内存和 cgroup/OOM 场景应先阅读Evaluation 运行手册。性能影响评测
项目使用成对实验区分系统本身的异常指标与 KernelScope 带来的额外影响:
一键采集 CPU、I/O、内存和锁场景的 A/B 数据:
性能测试报告见评测/实验报告
平台适配
Collector 通过架构兼容层和 CMake 目标参数支持:
系统调用号和 eBPF 目标宏在 Collector 层适配;上层 Metric Record、Window 协议、 Detector、RCA Rule Pack 和 Evidence 结构保持架构无关。详见多平台适配说明。
项目结构
其它必要说明
markdown格式管理文档,为保证通用性,使用 CI/CD 在提交关键文档变更时自动转化为docx格式。不过,受限于docx文档能力,部分格式转换可能出错,也不支持跨文档引用,因此仍然推荐基于markdown格式阅读文档。文档导航
使用与复现
设计与接口
评测与适用范围
组件手册