Skip to content

hrpccs/zero-trace

Repository files navigation

简介

本项目提供了一个具有高效率过滤机制的提供内核存储 IO 涉及的 fs、block、driver 层的挂载点,可以高效追踪 bio,request,page等数据结构的 tracing 框架,并且基于该框架开发了 zero-tracer。

zero-tracer 能够追踪 read/write 等 IO 系统调用在内核中各个子模块中的处理流程,并且在 12k read iops 和 250 write iops 环境下能保持小于 5% 的系统 CPU 开销。并且可以用于常态化部署,辅助运维人员定位业务时延抖动,还可以用于分析性能瓶颈以及优化数据通路。

并且,我们把 zero-tracer 拓展到了 qemu/kvm 场景下的 virtio 从 guest 到 qemu 再到 host 的全链路追踪。这加强了 zero-tracer 在虚拟化场景下的实用性。

本项目来自于oscomp-proj133.

文档列表:

可以查看我们的复赛开发文档来了解我们的工作 也可以访问我们的Github页面

arch

本项目基于eBPF 和 Libbpf+CO-RE.如果要编译这个项目,需要

  • 支持Libbpf+CO-RE
  • 确保你的内核支持BTF

环境配置

请参考环境配置文档

编译 qemu

本项目依赖于 qemu 的头文件,编译脚本默认从本项目根目录下的 qemu 目录下找

如果你需要进行 qemu/kvm 下 virtio 追踪的验证,需要把 src/qemu_uprobe.bpf.c 下的 QEMU_EXE 改成你编译出来的带符号表的 qemu 二进制文件。

$ cd qemu
$ git checkout v6.0.0
$ mkdir build && cd build
$ ../configure
$ make 

编译运行

$ cmake -S . -B build -DWITH_GRAFANA=OFF
$ cd build 
$ make 
$ sudo ./iotracer  -h 

启动 grafana 可视化

如果你要启动grafana,请将下面这个宏添加到src/include/basic_types.h

#define GRAFANA

并在编译时采用如下命令

cmake -S . -B build -DWITH_GRAFANA=ON

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published