目录

KernelSight

KernelSight 是面向 openKylin 的系统异常观测与诊断工具。内核侧通过 eBPF 采集调度、 块 I/O、futex 和系统调用事件,用户态结合 /proc、cgroup 与时间窗口生成结构化诊断。 结果包含异常类别、关联对象、指标、时间窗口、疑似原因、证据和处理建议。

项目覆盖 CPU、I/O、内存、锁竞争和系统调用热点五类异常。检测规则、历史数据查询、 桌面界面和 UKUI 菜单扩展的实现见 src/。其他材料按决赛目录规范分开存放:

目录 内容
src/ Rust 工作区、eBPF Probe、Tauri/React 前端、配置和打包代码
docs/ 项目说明书、创新说明、成员贡献、工具使用说明
tests/ 复现脚本、输入快照及测试结果
demo/ 主程序与 UKUI 扩展安装包
presentation/ 决赛 PPT、演示视频
仓库根目录 作品原创承诺书

运行环境

已有测试结果来自 openKylin 2.0 SP2、Linux 6.6.0-22-generic、x86_64 虚拟机。 demo/ 中的安装包为 amd64,

安装运行依赖 systemd、D-Bus 和包管理器提供的系统库。复现脚本另需 Bash、 Python 3、Node.js、curl、stress-ng 和 fio;从源码构建还需 Rust、 Probe 构建所用 nightly 工具链、LLVM/Clang、npm、WebKitGTK 和 UKUI Qt 开发依赖。

安装与启动

在目标 openKylin x86_64 机器上,从仓库根目录执行:

cd demo
sudo dpkg -i ./kernelsight_0.1.0_amd64.deb
sudo dpkg -i ./kernelsight-ukui-menu_0.1.0_amd64.deb  # 可选
sudo systemctl status kernelsight-agent kernelsight-monitor

缺少依赖时,先检查软件源和报错,再执行 sudo apt-get -f install 并复查服务。 两个服务应为 active (running)。桌面端可从应用菜单启动;安装扩展后,也可从 UKUI 开始菜单进入 KernelSight。排查启动问题可运行:

sudo journalctl -u kernelsight-agent -u kernelsight-monitor -n 100

使用方法

系统总览展示 CPU、内存、系统调用频率和 I/O P99 等实时指标;进程监控可按 PID 或命令名查找对象;历史采样展示保留的指标窗口;异常分析按 Unix 秒级时间戳 重新聚合指定窗口;评测验证页面展示规则回归、真实负载和运行开销结果。

默认配置见 src/config/default.toml,安装后为 /etc/kernelsight/config.toml。常用阈值如下:

配置项 默认值 含义
runtime.window_secs 5 诊断窗口,秒
cpu.high_usage_percent 90 CPU 高使用率,%
io.p99_latency_ms 50 I/O P99 时延,毫秒
memory.available_memory_percent 10 可用内存风险阈值,%
lock.avg_wait_ms 30 平均锁等待,毫秒
syscall.hot_count_per_sec 30000 系统调用频率,次/秒

修改安装后的配置后,重启 kernelsight-agent 和 kernelsight-monitor 服务。 完整的诊断与证据关联流程见下图:

KernelSight 诊断流程

源码构建

Rust 工作区根目录为 src/。在配置好上述构建依赖的 Linux 环境中执行:

cd src
npm --prefix frontend ci
npm --prefix frontend run build
cargo build --release -p kernelsight-cli -p kernelsight-monitor
cargo run -p xtask -- build-probes

主程序打包清单现从 ../tests/scripts/ 读取脚本。需要生成新的安装包时,仍在 src/ 目录执行:

cargo run -p xtask -- package-deb
cargo run -p xtask -- package-ukui-menu-deb

输出位于 src/target/deb/。

测试与结果

从仓库根目录运行已有的测试脚本。真实负载和性能对照会启动压力任务, 其中性能对照会短暂切换 KernelSight 服务状态,只应在可控测试机执行。

cd src
cargo test -p kernelsight-common -p kernelsight-engine
cargo run -p xtask -- evaluate-fixtures
cd ..
sudo bash tests/scripts/validate-live-scenarios.sh \
  --duration 30 --repeat 1 --scenarios cpu,io,lock,syscall,normal
sudo bash tests/scripts/benchmark-overhead.sh \
  --workload cpu,io --duration 30 --repeat 1

规则回归在 src/output/evaluation/ 生成结果。真实负载和性能测试默认写入 /var/lib/kernelsight/evaluation/;参数、原始日志和场景复现命令见 tests 说明。

历史测试材料 显示:固定快照规则回归 6/6; 真实压力汇总 15/15,覆盖 CPU、I/O、锁竞争、系统调用和正常基线,每项 3 轮。

已知限制

  • eBPF 采集依赖目标内核能力和权限;受限虚拟机或安全策略可能阻止部分 Probe 挂载。
  • I/O 时延和系统调用热点阈值与设备、负载和内核版本有关,部署到新环境时应结合实际业务调整配置。
关于
372.2 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

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