Skip to content

Commit d1eb7fe

Browse files
committed
Merge branch 'main' into cijothomas/remove-ordered-float
2 parents 41a8857 + f64bdd2 commit d1eb7fe

File tree

9 files changed

+122
-38
lines changed

9 files changed

+122
-38
lines changed

opentelemetry-appender-tracing/benches/logs.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
The benchmark results:
33
criterion = "0.5.1"
4-
OS: Ubuntu 22.04.2 LTS (5.10.102.1-microsoft-standard-WSL2)
4+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
55
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
66
RAM: 64.0 GB
77
| Test | Average time|
@@ -10,7 +10,7 @@
1010
| noop_layer_disabled | 12 ns |
1111
| noop_layer_enabled | 25 ns |
1212
| ot_layer_disabled | 19 ns |
13-
| ot_layer_enabled | 561 ns |
13+
| ot_layer_enabled | 588 ns |
1414
*/
1515

1616
use async_trait::async_trait;

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,17 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8989
// emitting.
9090
let logger_provider = init_logs().unwrap();
9191

92-
// Create a new OpenTelemetryLogBridge using the above LoggerProvider.
92+
// Create a new OpenTelemetryTracingBridge using the above LoggerProvider.
9393
let layer = OpenTelemetryTracingBridge::new(&logger_provider);
9494

95-
// add a tracing filter to filter the events generated from the crates used by opentelemetry-otlp
96-
// Below filter level means:
97-
// - Logs at `info` level and above are allowed by default.
98-
// - Only `error` level logs from `hyper`, `tonic`, and `reqwest` crates are allowed.
95+
// Add a tracing filter to filter events from crates used by opentelemetry-otlp.
96+
// The filter levels are set as follows:
97+
// - Allow `info` level and above by default.
98+
// - Restrict `hyper`, `tonic`, and `reqwest` to `error` level logs only.
99+
// This ensures events generated from these crates within the OTLP Exporter are not looped back,
100+
// thus preventing infinite event generation.
101+
// Note: This will also drop events from these crates used outside the OTLP Exporter.
102+
// For more details, see: https://github.com/open-telemetry/opentelemetry-rust/issues/761
99103
let filter = EnvFilter::new("info")
100104
.add_directive("hyper=error".parse().unwrap())
101105
.add_directive("tonic=error".parse().unwrap())

opentelemetry-otlp/examples/basic-otlp/src/main.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,17 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
9292
// Initialize logs and save the logger_provider.
9393
let logger_provider = init_logs().unwrap();
9494

95-
// Create a new OpenTelemetryLogBridge using the above LoggerProvider.
95+
// Create a new OpenTelemetryTracingBridge using the above LoggerProvider.
9696
let layer = OpenTelemetryTracingBridge::new(&logger_provider);
9797

98-
// add a tracing filter to filter the events generated from the crates used by opentelemetry-otlp
99-
// Below filter level means:
100-
// - Logs at `info` level and above are allowed by default.
101-
// - Only `error` level logs from `hyper`, `tonic`, and `reqwest` crates are allowed.
98+
// Add a tracing filter to filter events from crates used by opentelemetry-otlp.
99+
// The filter levels are set as follows:
100+
// - Allow `info` level and above by default.
101+
// - Restrict `hyper`, `tonic`, and `reqwest` to `error` level logs only.
102+
// This ensures events generated from these crates within the OTLP Exporter are not looped back,
103+
// thus preventing infinite event generation.
104+
// Note: This will also drop events from these crates used outside the OTLP Exporter.
105+
// For more details, see: https://github.com/open-telemetry/opentelemetry-rust/issues/761
102106
let filter = EnvFilter::new("info")
103107
.add_directive("hyper=error".parse().unwrap())
104108
.add_directive("tonic=error".parse().unwrap())
@@ -138,7 +142,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
138142
);
139143
span.set_attribute(KeyValue::new("another.key", "yes"));
140144

141-
info!(target: "my-target", "hello from {}. My price is {}. I am also inside a Span!", "banana", 2.99);
145+
info!(name: "my-event-inside-span", target: "my-target", "hello from {}. My price is {}. I am also inside a Span!", "banana", 2.99);
142146

143147
tracer.in_span("Sub operation...", |cx| {
144148
let span = cx.span();
@@ -147,7 +151,7 @@ async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
147151
});
148152
});
149153

150-
info!(target: "my-target", "hello from {}. My price is {}", "apple", 1.99);
154+
info!(name: "my-event", target: "my-target", "hello from {}. My price is {}", "apple", 1.99);
151155

152156
global::shutdown_tracer_provider();
153157
logger_provider.shutdown()?;

opentelemetry-sdk/benches/metric_counter.rs

+40-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,33 @@
1+
/*
2+
The benchmark results:
3+
criterion = "0.5.1"
4+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
5+
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
6+
RAM: 64.0 GB
7+
| Test | Average time|
8+
|--------------------------------|-------------|
9+
| Counter_Add_Sorted | 586 ns |
10+
| Counter_Add_Unsorted | 592 ns |
11+
| Random_Generator_5 | 377 ns |
12+
| ThreadLocal_Random_Generator_5 | 37 ns |
13+
*/
14+
115
use criterion::{criterion_group, criterion_main, Criterion};
216
use opentelemetry::{
317
metrics::{Counter, MeterProvider as _},
418
KeyValue,
519
};
620
use opentelemetry_sdk::metrics::{ManualReader, SdkMeterProvider};
7-
use rand::{rngs::SmallRng, Rng, SeedableRng};
21+
use rand::{
22+
rngs::{self, SmallRng},
23+
Rng, SeedableRng,
24+
};
25+
use std::cell::RefCell;
26+
27+
thread_local! {
28+
/// Store random number generator for each thread
29+
static CURRENT_RNG: RefCell<rngs::SmallRng> = RefCell::new(rngs::SmallRng::from_entropy());
30+
}
831

932
// Run this benchmark with:
1033
// cargo bench --bench metric_counter --features=metrics
@@ -30,12 +53,12 @@ fn counter_add(c: &mut Criterion) {
3053
let counter = create_counter();
3154
c.bench_function("Counter_Add_Sorted", |b| {
3255
b.iter(|| {
33-
let mut rng = SmallRng::from_entropy();
3456
// 4*4*10*10 = 1600 time series.
35-
let index_first_attribute = rng.gen_range(0..4);
36-
let index_second_attribute = rng.gen_range(0..4);
37-
let index_third_attribute = rng.gen_range(0..10);
38-
let index_forth_attribute = rng.gen_range(0..10);
57+
let rands = CURRENT_RNG.with_borrow_mut(|rng| [rng.gen_range(0..4), rng.gen_range(0..4), rng.gen_range(0..10), rng.gen_range(0..10)]);
58+
let index_first_attribute = rands[0];
59+
let index_second_attribute = rands[1];
60+
let index_third_attribute = rands[2];
61+
let index_forth_attribute = rands[3];
3962
counter.add(
4063
1,
4164
&[
@@ -50,12 +73,12 @@ fn counter_add(c: &mut Criterion) {
5073

5174
c.bench_function("Counter_Add_Unsorted", |b| {
5275
b.iter(|| {
53-
let mut rng = SmallRng::from_entropy();
5476
// 4*4*10*10 = 1600 time series.
55-
let index_first_attribute = rng.gen_range(0..4);
56-
let index_second_attribute = rng.gen_range(0..4);
57-
let index_third_attribute = rng.gen_range(0..10);
58-
let index_forth_attribute = rng.gen_range(0..10);
77+
let rands = CURRENT_RNG.with_borrow_mut(|rng| [rng.gen_range(0..4), rng.gen_range(0..4), rng.gen_range(0..10), rng.gen_range(0..10)]);
78+
let index_first_attribute = rands[0];
79+
let index_second_attribute = rands[1];
80+
let index_third_attribute = rands[2];
81+
let index_forth_attribute = rands[3];
5982
counter.add(
6083
1,
6184
&[
@@ -78,6 +101,12 @@ fn counter_add(c: &mut Criterion) {
78101
let _i5 = rng.gen_range(0..10);
79102
});
80103
});
104+
105+
c.bench_function("ThreadLocal_Random_Generator_5", |b| {
106+
b.iter(|| {
107+
let _i1 = CURRENT_RNG.with_borrow_mut(|rng| [rng.gen_range(0..4),rng.gen_range(0..4),rng.gen_range(0..10), rng.gen_range(0..10), rng.gen_range(0..10)]);
108+
});
109+
});
81110
}
82111

83112
criterion_group!(benches, criterion_benchmark);

opentelemetry-stdout/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ async-trait = { workspace = true, optional = true }
2626
chrono = { version = "0.4.34", default-features = false, features = ["now"] }
2727
thiserror = { workspace = true, optional = true }
2828
futures-util = { workspace = true, optional = true }
29-
opentelemetry = { version = "0.23", path = "../opentelemetry", default_features = false }
30-
opentelemetry_sdk = { version = "0.23", path = "../opentelemetry-sdk", default_features = false }
29+
opentelemetry = { version = "0.23", path = "../opentelemetry" }
30+
opentelemetry_sdk = { version = "0.23", path = "../opentelemetry-sdk" }
3131
serde = { workspace = true, features = ["derive"] }
3232
serde_json = { workspace = true }
3333
ordered-float = { workspace = true }

stress/src/logs.rs

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
/*
2+
Stress test results:
3+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
4+
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
5+
RAM: 64.0 GB
6+
27 M/sec
7+
*/
8+
19
use opentelemetry_appender_tracing::layer;
210
use opentelemetry_sdk::logs::{LogProcessor, LoggerProvider};
311
use tracing::error;

stress/src/metrics.rs

+22-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
1+
/*
2+
Stress test results:
3+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
4+
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
5+
RAM: 64.0 GB
6+
3M /sec
7+
*/
8+
19
use lazy_static::lazy_static;
210
use opentelemetry::{
311
metrics::{Counter, MeterProvider as _},
412
KeyValue,
513
};
614
use opentelemetry_sdk::metrics::{ManualReader, SdkMeterProvider};
7-
use rand::{rngs::SmallRng, Rng, SeedableRng};
8-
use std::borrow::Cow;
15+
use rand::{
16+
rngs::{self},
17+
Rng, SeedableRng,
18+
};
19+
use std::{borrow::Cow, cell::RefCell};
920

1021
mod throughput;
1122

@@ -23,16 +34,21 @@ lazy_static! {
2334
.init();
2435
}
2536

37+
thread_local! {
38+
/// Store random number generator for each thread
39+
static CURRENT_RNG: RefCell<rngs::SmallRng> = RefCell::new(rngs::SmallRng::from_entropy());
40+
}
41+
2642
fn main() {
2743
throughput::test_throughput(test_counter);
2844
}
2945

3046
fn test_counter() {
31-
let mut rng = SmallRng::from_entropy();
3247
let len = ATTRIBUTE_VALUES.len();
33-
let index_first_attribute = rng.gen_range(0..len);
34-
let index_second_attribute = rng.gen_range(0..len);
35-
let index_third_attribute = rng.gen_range(0..len);
48+
let rands = CURRENT_RNG.with_borrow_mut(|rng| [rng.gen_range(0..len), rng.gen_range(0..len), rng.gen_range(0..len)]);
49+
let index_first_attribute = rands[0];
50+
let index_second_attribute = rands[1];
51+
let index_third_attribute = rands[2];
3652

3753
// each attribute has 10 possible values, so there are 1000 possible combinations (time-series)
3854
COUNTER.add(

stress/src/random.rs

+20-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,29 @@
1-
use rand::{rngs::SmallRng, Rng, SeedableRng};
1+
/*
2+
Stress test results:
3+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
4+
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
5+
RAM: 64.0 GB
6+
1.25 B/sec
7+
*/
8+
9+
use rand::{
10+
rngs::{self},
11+
Rng, SeedableRng,
12+
};
213

314
mod throughput;
415

16+
use std::cell::RefCell;
17+
18+
thread_local! {
19+
/// Store random number generator for each thread
20+
static CURRENT_RNG: RefCell<rngs::SmallRng> = RefCell::new(rngs::SmallRng::from_entropy());
21+
}
22+
523
fn main() {
624
throughput::test_throughput(test_random_generation);
725
}
826

927
fn test_random_generation() {
10-
let mut rng = SmallRng::from_entropy();
11-
let _index_first_attribute = rng.gen_range(0..10);
12-
let _index_second_attribute = rng.gen_range(0..10);
13-
let _index_third_attribute = rng.gen_range(0..10);
28+
let _i1 = CURRENT_RNG.with_borrow_mut(|rng| [rng.gen_range(0..10), rng.gen_range(0..10), rng.gen_range(0..10)]);
1429
}

stress/src/traces.rs

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
/*
2+
Stress test results:
3+
OS: Ubuntu 22.04.3 LTS (5.15.146.1-microsoft-standard-WSL2)
4+
Hardware: AMD EPYC 7763 64-Core Processor - 2.44 GHz, 16vCPUs,
5+
RAM: 64.0 GB
6+
9 M/sec
7+
*/
8+
19
use lazy_static::lazy_static;
210
use opentelemetry::{
311
trace::{Span, SpanBuilder, TraceResult, Tracer, TracerProvider as _},

0 commit comments

Comments
 (0)