1 unstable release
| 0.1.0 | Feb 20, 2026 |
|---|
#322 in Profiling
2MB
38K
SLoC
Symbiotic
High-resolution performance profiling for Rust with hardware PMU counters, eBPF, and tracing integration.
Features
- 1000Hz CPU Sampling: Microsecond-level granularity for detailed performance analysis
- Hardware PMU Integration: Direct access to CPU performance counters
- Cache Hierarchy Analysis: L1D/L1I/L2/L3 cache hit/miss statistics
- Memory Bandwidth Monitoring: Track memory throughput and bottlenecks
- SIMD Utilization: Monitor AVX2/AVX512 instruction usage
- Tracing Integration: Correlate hardware events with application spans
- Low Overhead: < 5% performance impact even at aggressive sampling rates
- Criterion Integration: Seamless integration with Rust benchmarks
Quick Start
use symbiotic::{Profiler, ProfilerConfig};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = ProfilerConfig::default();
let mut profiler = Profiler::new(config)?;
let report = profiler.profile_named("workload", || {
// Your code here
})?;
println!("{}", report);
Ok(())
}
Criterion Integration
use criterion::{criterion_group, criterion_main, Criterion};
use symbiotic::criterion::DeepProfiler;
fn bench_function(c: &mut Criterion) {
c.bench_function("example", |b| {
b.iter(|| {
// Your benchmark code
});
})
.with_profiler(DeepProfiler::new());
}
criterion_group!(benches, bench_function);
criterion_main!(benches);
Requirements
- Linux kernel >= 5.8 (for eBPF support)
perf_event_paranoid<= 1 for PMU access- Optional: CAP_PERFMON capability for non-root profiling
License
This project is dual-licensed under MIT OR Apache-2.0.
Dependencies
~32–53MB
~1M SLoC