From 28fc70a5e337b23d29ee6da7e7a80038734213d6 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Thu, 27 Jun 2024 13:21:24 -0700 Subject: [PATCH 1/2] Add flamegraph for some benchmarks --- opentelemetry-appender-tracing/Cargo.toml | 3 +++ opentelemetry-appender-tracing/benches/logs.rs | 14 +++++++++++++- opentelemetry-sdk/benches/metric_counter.rs | 17 ++++++++++++++--- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/opentelemetry-appender-tracing/Cargo.toml b/opentelemetry-appender-tracing/Cargo.toml index 7ce1834746..d104014662 100644 --- a/opentelemetry-appender-tracing/Cargo.toml +++ b/opentelemetry-appender-tracing/Cargo.toml @@ -27,6 +27,9 @@ tracing-log = "0.2" async-trait = { workspace = true } criterion = { workspace = true } +[target.'cfg(not(target_os = "windows"))'.dev-dependencies] +pprof = { version = "0.13", features = ["flamegraph", "criterion"] } + [features] experimental_metadata_attributes = ["dep:tracing-log"] logs_level_enabled = ["opentelemetry/logs_level_enabled"] diff --git a/opentelemetry-appender-tracing/benches/logs.rs b/opentelemetry-appender-tracing/benches/logs.rs index f7ef4d94ad..3c1ec649e9 100644 --- a/opentelemetry-appender-tracing/benches/logs.rs +++ b/opentelemetry-appender-tracing/benches/logs.rs @@ -15,6 +15,7 @@ use async_trait::async_trait; use criterion::{criterion_group, criterion_main, Criterion}; +use pprof::criterion::{Output, PProfProfiler}; use opentelemetry::logs::LogResult; use opentelemetry::KeyValue; use opentelemetry_appender_tracing::layer as tracing_layer; @@ -173,5 +174,16 @@ fn criterion_benchmark(c: &mut Criterion) { benchmark_with_noop_layer(c, false, "noop_layer_disabled"); } -criterion_group!(benches, criterion_benchmark); +#[cfg(not(target_os = "windows"))] +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} criterion_main!(benches); diff --git a/opentelemetry-sdk/benches/metric_counter.rs b/opentelemetry-sdk/benches/metric_counter.rs index b75a6eb351..55bc61edb5 100644 --- a/opentelemetry-sdk/benches/metric_counter.rs +++ b/opentelemetry-sdk/benches/metric_counter.rs @@ -18,6 +18,7 @@ use opentelemetry::{ KeyValue, }; use opentelemetry_sdk::metrics::{ManualReader, SdkMeterProvider}; +use pprof::criterion::{Output, PProfProfiler}; use rand::{ rngs::{self}, Rng, SeedableRng, @@ -155,6 +156,16 @@ fn counter_add(c: &mut Criterion) { }); } -criterion_group!(benches, criterion_benchmark); - -criterion_main!(benches); +#[cfg(not(target_os = "windows"))] +criterion_group! { + name = benches; + config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None))); + targets = criterion_benchmark +} +#[cfg(target_os = "windows")] +criterion_group! { + name = benches; + config = Criterion::default(); + targets = criterion_benchmark +} +criterion_main!(benches); \ No newline at end of file From 7e7f742a6e60bc6cdc640899fcca2152e813756b Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Thu, 27 Jun 2024 14:00:27 -0700 Subject: [PATCH 2/2] fmt --- opentelemetry-appender-tracing/benches/logs.rs | 2 +- opentelemetry-sdk/benches/metric_counter.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/opentelemetry-appender-tracing/benches/logs.rs b/opentelemetry-appender-tracing/benches/logs.rs index 3c1ec649e9..8fabcc7876 100644 --- a/opentelemetry-appender-tracing/benches/logs.rs +++ b/opentelemetry-appender-tracing/benches/logs.rs @@ -15,13 +15,13 @@ use async_trait::async_trait; use criterion::{criterion_group, criterion_main, Criterion}; -use pprof::criterion::{Output, PProfProfiler}; use opentelemetry::logs::LogResult; use opentelemetry::KeyValue; use opentelemetry_appender_tracing::layer as tracing_layer; use opentelemetry_sdk::export::logs::{LogData, LogExporter}; use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider}; use opentelemetry_sdk::Resource; +use pprof::criterion::{Output, PProfProfiler}; use tracing::error; use tracing_subscriber::prelude::*; use tracing_subscriber::Layer; diff --git a/opentelemetry-sdk/benches/metric_counter.rs b/opentelemetry-sdk/benches/metric_counter.rs index 55bc61edb5..a3dda396ca 100644 --- a/opentelemetry-sdk/benches/metric_counter.rs +++ b/opentelemetry-sdk/benches/metric_counter.rs @@ -168,4 +168,4 @@ criterion_group! { config = Criterion::default(); targets = criterion_benchmark } -criterion_main!(benches); \ No newline at end of file +criterion_main!(benches);