#tracing #ebpf #tracer #ltt-ng #systemtap

bin+lib tracers

使用稳定的 Rust 生成极低开销的本机跟踪点

1 个不稳定版本

0.1.0 2019 年 11 月 20 日

#238性能分析

MIT/Apache 以及可能 LGPL-3.0-or-later

80KB
1.5K SLoC

包含 (ELF 可执行文件/库, 4KB) src/bin/stap_probes.o

tracers - Rust 仪器库

Azure Build Status - Linux/macOS/Windows Cirrus CI - FreeBSD

摘要

tracers 旨在成为一个易于使用且跨平台的 Rust crate,它使得向 Rust 程序添加高性能低开销的探针变得容易。在底层,它将使用每个平台的本地探针机制,例如 Linux 上的 System Tap、BSD 上的 DTrace 和 Windows 上的 ETW。没有支持探针机制的平台的将回退到无操作实现。

此 crate 的一个关键目标是能够将其放入任何 Rust 项目中,在任何合适的位置创建和触发探针,并且始终保留这些探针。当探针在编译时禁用时,应该没有运行时影响,当探针在编译中但运行时不启用时,探针的影响不应超过一两个 CPU 指令。

状态

重要tracers 仍在早期实验阶段。作者在此保证它可能在您的系统上无法工作,可能造成数据丢失,并且肯定会导致过早脱发。请勿使用。

许可证

除非另有说明,否则本项目许可为以下之一

任选其一。

但是,以下 -sys crate 的许可证与它们包装的第三方代码的许可证相对应

贡献

除非您明确声明,否则您根据Apache-2.0许可证定义的,提交给tracers以供包含的贡献,将双重许可如上所述,不附加任何额外条款或条件。

发布

本节仅适用于维护者。

要发布新版本,必须首先发布依赖的crate。bin/publish.sh脚本有助于自动化流程,但仍相当手动。

发布流程

  1. 更新所有crate及其对其他tracerscrate的依赖项的version属性,到新的目标版本。

  2. 确保所有依赖项都具有本地开发的路径依赖项和发布版本依赖项。这些必须与将要发布的新版本一致。

  3. 更新documentation链接,以反映当前版本。

crate必须按以下顺序发布

  • tracers-core
  • tracers-libelf-sys
  • tracers-libstapsdt-sys
  • tracers-codegen
  • tracers-macros-hack
  • tracers-macros
  • tracers-dyn-stap
  • tracers-dyn-noop
  • tracers-build
  • tracers

依赖项

~6–17MB
~243K SLoC