Use only tracy backend for tracing

This commit is contained in:
Maximilian Ammann 2022-04-02 13:25:08 +02:00
parent 6ab2f5475c
commit d2af853c87
6 changed files with 60 additions and 204 deletions

View File

@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Run desktop (tracing)" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
<configuration default="false" name="Run desktop" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
<option name="command" value="run --example desktop --features enable-tracing" />
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
<option name="channel" value="DEFAULT" />

View File

@ -1,6 +1,6 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Run desktop (release)" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
<option name="command" value="run --release --example desktop" />
<option name="command" value="run --release --example desktop --features enable-tracing" />
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
<option name="channel" value="DEFAULT" />
<option name="requiredFeatures" value="true" />

198
Cargo.lock generated
View File

@ -1589,12 +1589,6 @@ dependencies = [
"web-sys",
]
[[package]]
name = "integer-encoding"
version = "3.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e85a1509a128c855368e135cffcde7eac17d8e1083f41e2b98c58bc1a5074be"
[[package]]
name = "ipnet"
version = "2.3.1"
@ -1787,8 +1781,6 @@ dependencies = [
"lyon",
"mbtiles",
"ndk-glue",
"opentelemetry",
"opentelemetry-jaeger",
"prost",
"reqwest",
"reqwest-middleware",
@ -1799,9 +1791,9 @@ dependencies = [
"tilejson-spec",
"tokio",
"tracing",
"tracing-flame",
"tracing-opentelemetry",
"tracing-subscriber",
"tracing-tracy",
"tracy-client",
"vector-tile",
"wasm-bindgen",
"wasm-bindgen-futures",
@ -2132,57 +2124,6 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "opentelemetry"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6105e89802af13fdf48c49d7646d3b533a70e536d818aae7e78ba0433d01acb8"
dependencies = [
"async-trait",
"crossbeam-channel",
"futures-channel",
"futures-executor",
"futures-util",
"js-sys",
"lazy_static",
"percent-encoding",
"pin-project",
"rand 0.8.5",
"thiserror",
]
[[package]]
name = "opentelemetry-jaeger"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8c0b12cd9e3f9b35b52f6e0dac66866c519b26f424f4bbf96e3fe8bfbdc5229"
dependencies = [
"async-trait",
"lazy_static",
"opentelemetry",
"opentelemetry-semantic-conventions",
"thiserror",
"thrift",
]
[[package]]
name = "opentelemetry-semantic-conventions"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "985cc35d832d412224b2cffe2f9194b1b89b6aa5d0bef76d080dce09d90e62bd"
dependencies = [
"opentelemetry",
]
[[package]]
name = "ordered-float"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3305af35278dd29f46fcdd139e0b1fbfae2153f0e5928b39b035542dd31e37b7"
dependencies = [
"num-traits",
]
[[package]]
name = "parking"
version = "2.0.0"
@ -2277,7 +2218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
dependencies = [
"phf_shared",
"rand 0.7.3",
"rand",
]
[[package]]
@ -2303,26 +2244,6 @@ dependencies = [
"siphasher",
]
[[package]]
name = "pin-project"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "pin-project-lite"
version = "0.2.8"
@ -2514,23 +2435,12 @@ checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom 0.1.16",
"libc",
"rand_chacha 0.2.2",
"rand_core 0.5.1",
"rand_chacha",
"rand_core",
"rand_hc",
"rand_pcg",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.3",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
@ -2538,17 +2448,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"ppv-lite86",
"rand_core 0.5.1",
]
[[package]]
name = "rand_chacha"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
"rand_core 0.6.3",
"rand_core",
]
[[package]]
@ -2560,22 +2460,13 @@ dependencies = [
"getrandom 0.1.16",
]
[[package]]
name = "rand_core"
version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
dependencies = [
"getrandom 0.2.5",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core 0.5.1",
"rand_core",
]
[[package]]
@ -2584,7 +2475,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
dependencies = [
"rand_core 0.5.1",
"rand_core",
]
[[package]]
@ -3321,28 +3212,6 @@ dependencies = [
"once_cell",
]
[[package]]
name = "threadpool"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
dependencies = [
"num_cpus",
]
[[package]]
name = "thrift"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b82ca8f46f95b3ce96081fe3dd89160fdea970c254bb72925255d1b62aae692e"
dependencies = [
"byteorder",
"integer-encoding",
"log",
"ordered-float",
"threadpool",
]
[[package]]
name = "tile-grid"
version = "0.3.0"
@ -3486,17 +3355,6 @@ dependencies = [
"valuable",
]
[[package]]
name = "tracing-flame"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bae117ee14789185e129aaee5d93750abe67fdc5a9a62650452bfe4e122a3a9"
dependencies = [
"lazy_static",
"tracing",
"tracing-subscriber",
]
[[package]]
name = "tracing-log"
version = "0.1.2"
@ -3508,19 +3366,6 @@ dependencies = [
"tracing-core",
]
[[package]]
name = "tracing-opentelemetry"
version = "0.17.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f9378e96a9361190ae297e7f3a8ff644aacd2897f244b1ff81f381669196fa6"
dependencies = [
"opentelemetry",
"tracing",
"tracing-core",
"tracing-log",
"tracing-subscriber",
]
[[package]]
name = "tracing-subscriber"
version = "0.3.9"
@ -3535,6 +3380,33 @@ dependencies = [
"tracing-log",
]
[[package]]
name = "tracing-tracy"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773057bb2b440e868776522a0587f732b1125116f12aca0eb37dea48d55ad2cd"
dependencies = [
"tracing-core",
"tracing-subscriber",
"tracy-client",
]
[[package]]
name = "tracy-client"
version = "0.12.7"
source = "git+https://github.com/nagisa/rust_tracy_client.git?rev=ae4913e#ae4913e69fe447ec5ef3ba2b0a520f958dc7d9e8"
dependencies = [
"tracy-client-sys",
]
[[package]]
name = "tracy-client-sys"
version = "0.17.0"
source = "git+https://github.com/nagisa/rust_tracy_client.git?rev=ae4913e#ae4913e69fe447ec5ef3ba2b0a520f958dc7d9e8"
dependencies = [
"cc",
]
[[package]]
name = "try-lock"
version = "0.2.3"

View File

@ -31,7 +31,7 @@ debug = true
[features]
web-webgl = ["wgpu/webgl"]
enable-tracing = [ "tracing-opentelemetry", "opentelemetry", "tracing-subscriber", "opentelemetry-jaeger", "tracing-flame"]
enable-tracing = [ "tracing-subscriber", "tracing-tracy", "tracy-client"]
default = []
[target.'cfg(target_arch = "wasm32")'.dependencies]
@ -69,11 +69,9 @@ winit = { version = "0.26", default-features = false, features = ["x11", "waylan
winit = { version = "0.26", default-features = false }
tracing = { version = "0.1" }
tracing-opentelemetry = { version = "0.17", optional = true }
opentelemetry = { version = "0.17", optional = true }
tracing-subscriber = { version = "0.3", optional = true }
opentelemetry-jaeger = { version = "0.16", optional = true }
tracing-flame = { version = "0.2", optional = true }
tracing-tracy = { version = "0.8", optional = true }
tracy-client = { git = "https://github.com/nagisa/rust_tracy_client.git", rev = "ae4913e", optional = true }
# Vector riles
vector-tile = { path = "./libs/vector_tile" }
@ -109,6 +107,9 @@ bytemuck_derive = "1.0"
include_dir = "0.7.2"
[patch.crates-io]
tracy-client = { git = "https://github.com/nagisa/rust_tracy_client.git", rev = "ae4913e" }
[dev-dependencies]
criterion = "0.3"
# Support logging in tests

View File

@ -1,8 +1,22 @@
use mapr::{MapBuilder, ScheduleMethod, TokioScheduleMethod};
#[cfg(feature = "enable-tracing")]
fn enable_tracing() {
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;
let subscriber = Registry::default().with(tracing_tracy::TracyLayer::new());
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
}
fn main() {
env_logger::init_from_env(env_logger::Env::default().default_filter_or("info"));
#[cfg(feature = "enable-tracing")]
enable_tracing();
MapBuilder::from_window("A fantastic window!")
.with_schedule_method(ScheduleMethod::Tokio(TokioScheduleMethod::new(Some(
"/tmp/mapr_cache".to_string(),

View File

@ -5,7 +5,6 @@
use log::{error, info, trace};
use style_spec::Style;
use tracing_subscriber::fmt;
use winit::event::{ElementState, Event, KeyboardInput, VirtualKeyCode, WindowEvent};
use winit::event_loop::{ControlFlow, EventLoop};
@ -15,34 +14,6 @@ use crate::io::scheduler::IOScheduler;
use crate::platform::Instant;
use crate::render::render_state::RenderState;
#[cfg(feature = "enable-tracing")]
fn enable_tracing() -> (impl Drop) {
use opentelemetry_jaeger;
use tracing::{error, span};
use tracing_flame::FlameLayer;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;
let (flame_layer, _guard) = FlameLayer::with_file("./tracing.folded").unwrap();
let fmt_layer = tracing_subscriber::fmt::Layer::default();
// Create a tracing layer with the configured tracer
let telemetry = tracing_opentelemetry::layer().with_tracer(
opentelemetry_jaeger::new_pipeline()
.with_service_name("mapr")
.install_simple()
.unwrap(),
);
let subscriber = Registry::default()
.with(telemetry)
.with(flame_layer)
.with(fmt_layer);
tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed");
(_guard)
}
pub async fn run(
window: winit::window::Window,
event_loop: EventLoop<()>,
@ -50,11 +21,7 @@ pub async fn run(
style: Box<Style>,
max_frames: Option<u64>,
) {
#[cfg(feature = "enable-tracing")]
let _guard = enable_tracing();
#[cfg(feature = "enable-tracing")]
let root = tracing::span!(tracing::Level::TRACE, "app_start", work_units = 2);
#[cfg(feature = "enable-tracing")]
let _enter = root.enter();
let mut input = InputController::new(0.2, 100.0, 0.1);
@ -127,7 +94,8 @@ pub async fn run(
}
}
Event::RedrawRequested(_) => {
let _span_ = tracing::span!(tracing::Level::TRACE, "redraw requested").enter();
let _span_ = tracing::span!(tracing::Level::TRACE, "redraw requested").entered();
let now = Instant::now();
let dt = now - last_render_time;
last_render_time = now;
@ -158,6 +126,7 @@ pub async fn run(
*control_flow = ControlFlow::Exit;
}
}
tracy_client::finish_continuous_frame!();
}
Event::Suspended => {
state.suspend();