feat(tvix/tracing): add tracing-tracy support
This introduces another feature flag, "tracy" to the `tvix-tracing` crate. If enabled (not enabled by default), it'll add an additional layer emitting packets in a format that https://github.com/wolfpld/tracy can display. I had to be a bit tricky with the combinatorial complexity when adding this, but the resulting code still seems manageable. Change-Id: Ica824496728fa276ceae3f7a9754be0166e6558f Reviewed-on: https://cl.tvl.fyi/c/depot/+/10952 Tested-by: BuildkiteCI Reviewed-by: Simon Hauser <simon.hauser@helsinki-systems.de> Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
		
							parent
							
								
									d25f047b9d
								
							
						
					
					
						commit
						6b6a34065e
					
				
					 5 changed files with 1175 additions and 69 deletions
				
			
		
							
								
								
									
										155
									
								
								tvix/Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										155
									
								
								tvix/Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -565,7 +565,7 @@ dependencies = [ | |||
|  "num-traits", | ||||
|  "serde", | ||||
|  "wasm-bindgen", | ||||
|  "windows-targets 0.52.0", | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1400,6 +1400,20 @@ version = "0.99.1" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0b32dfe1fdfc0bbde1f22a5da25355514b5e450c33a6af6770884c8750aedfbc" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "generator" | ||||
| version = "0.8.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "186014d53bc231d0090ef8d6f03e0920c54d85a5ed22f4f2f74315ec56cf83fb" | ||||
| dependencies = [ | ||||
|  "cc", | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "log", | ||||
|  "rustversion", | ||||
|  "windows", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "generic-array" | ||||
| version = "0.14.7" | ||||
|  | @ -1609,7 +1623,7 @@ dependencies = [ | |||
|  "iana-time-zone-haiku", | ||||
|  "js-sys", | ||||
|  "wasm-bindgen", | ||||
|  "windows-core", | ||||
|  "windows-core 0.52.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1901,6 +1915,19 @@ version = "0.4.20" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "loom" | ||||
| version = "0.7.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
|  "generator", | ||||
|  "scoped-tls", | ||||
|  "tracing", | ||||
|  "tracing-subscriber", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lru" | ||||
| version = "0.12.3" | ||||
|  | @ -3210,6 +3237,12 @@ dependencies = [ | |||
|  "windows-sys 0.52.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "scoped-tls" | ||||
| version = "1.0.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "scopeguard" | ||||
| version = "1.2.0" | ||||
|  | @ -4104,6 +4137,37 @@ dependencies = [ | |||
|  "tracing-log", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tracing-tracy" | ||||
| version = "0.11.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6024d04f84a69fd0d1dc1eee3a2b070bd246530a0582f9982ae487cb6c703614" | ||||
| dependencies = [ | ||||
|  "tracing-core", | ||||
|  "tracing-subscriber", | ||||
|  "tracy-client", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tracy-client" | ||||
| version = "0.17.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "59fb931a64ff88984f86d3e9bcd1ae8843aa7fe44dd0f8097527bc172351741d" | ||||
| dependencies = [ | ||||
|  "loom", | ||||
|  "once_cell", | ||||
|  "tracy-client-sys", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "tracy-client-sys" | ||||
| version = "0.22.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9d104d610dfa9dd154535102cc9c6164ae1fa37842bc2d9e83f9ac82b0ae0882" | ||||
| dependencies = [ | ||||
|  "cc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "try-lock" | ||||
| version = "0.2.5" | ||||
|  | @ -4378,6 +4442,7 @@ dependencies = [ | |||
|  "tracing-indicatif", | ||||
|  "tracing-opentelemetry", | ||||
|  "tracing-subscriber", | ||||
|  "tracing-tracy", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -4808,13 +4873,42 @@ version = "0.4.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows" | ||||
| version = "0.54.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" | ||||
| dependencies = [ | ||||
|  "windows-core 0.54.0", | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-core" | ||||
| version = "0.52.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" | ||||
| dependencies = [ | ||||
|  "windows-targets 0.52.0", | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-core" | ||||
| version = "0.54.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" | ||||
| dependencies = [ | ||||
|  "windows-result", | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows-result" | ||||
| version = "0.1.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" | ||||
| dependencies = [ | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -4832,7 +4926,7 @@ version = "0.52.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" | ||||
| dependencies = [ | ||||
|  "windows-targets 0.52.0", | ||||
|  "windows-targets 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -4852,17 +4946,18 @@ dependencies = [ | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows-targets" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" | ||||
| checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" | ||||
| dependencies = [ | ||||
|  "windows_aarch64_gnullvm 0.52.0", | ||||
|  "windows_aarch64_msvc 0.52.0", | ||||
|  "windows_i686_gnu 0.52.0", | ||||
|  "windows_i686_msvc 0.52.0", | ||||
|  "windows_x86_64_gnu 0.52.0", | ||||
|  "windows_x86_64_gnullvm 0.52.0", | ||||
|  "windows_x86_64_msvc 0.52.0", | ||||
|  "windows_aarch64_gnullvm 0.52.5", | ||||
|  "windows_aarch64_msvc 0.52.5", | ||||
|  "windows_i686_gnu 0.52.5", | ||||
|  "windows_i686_gnullvm", | ||||
|  "windows_i686_msvc 0.52.5", | ||||
|  "windows_x86_64_gnu 0.52.5", | ||||
|  "windows_x86_64_gnullvm 0.52.5", | ||||
|  "windows_x86_64_msvc 0.52.5", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -4873,9 +4968,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_gnullvm" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" | ||||
| checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_msvc" | ||||
|  | @ -4885,9 +4980,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_aarch64_msvc" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" | ||||
| checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnu" | ||||
|  | @ -4897,9 +4992,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnu" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" | ||||
| checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_gnullvm" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_msvc" | ||||
|  | @ -4909,9 +5010,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_i686_msvc" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" | ||||
| checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnu" | ||||
|  | @ -4921,9 +5022,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnu" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" | ||||
| checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnullvm" | ||||
|  | @ -4933,9 +5034,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_gnullvm" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" | ||||
| checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_msvc" | ||||
|  | @ -4945,9 +5046,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" | |||
| 
 | ||||
| [[package]] | ||||
| name = "windows_x86_64_msvc" | ||||
| version = "0.52.0" | ||||
| version = "0.52.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" | ||||
| checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winreg" | ||||
|  |  | |||
							
								
								
									
										1058
									
								
								tvix/Cargo.nix
									
										
									
									
									
								
							
							
						
						
									
										1058
									
								
								tvix/Cargo.nix
									
										
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -16,6 +16,7 @@ tracing-opentelemetry = { version = "0.23.0", optional = true } | |||
| opentelemetry = { version = "0.22.0", optional = true } | ||||
| opentelemetry-otlp = { version = "0.15.0", optional = true } | ||||
| opentelemetry_sdk = { version = "0.22.1", features = ["rt-tokio"], optional = true } | ||||
| tracing-tracy = { version = "0.11.0", features = ["flush-on-exit"], optional = true } | ||||
| 
 | ||||
| [features] | ||||
| default = [] | ||||
|  | @ -25,6 +26,9 @@ otlp = [ | |||
|   "dep:opentelemetry-otlp", | ||||
|   "dep:opentelemetry_sdk" | ||||
| ] | ||||
| tracy = [ | ||||
|   "dep:tracing-tracy" | ||||
| ] | ||||
| 
 | ||||
| [lints] | ||||
| workspace = true | ||||
|  |  | |||
|  | @ -6,6 +6,6 @@ | |||
|   meta.ci.targets = lib.filter (x: lib.hasPrefix "with-features" x || x == "no-features") (lib.attrNames passthru); | ||||
|   passthru = depot.tvix.utils.mkFeaturePowerset { | ||||
|     inherit (old) crateName; | ||||
|     features = [ "otlp" ]; | ||||
|     features = [ "otlp" "tracy" ]; | ||||
|   }; | ||||
| }) | ||||
|  |  | |||
|  | @ -13,6 +13,8 @@ use opentelemetry_sdk::{ | |||
|     trace::BatchConfigBuilder, | ||||
|     Resource, | ||||
| }; | ||||
| #[cfg(feature = "tracy")] | ||||
| use tracing_tracy::TracyLayer; | ||||
| 
 | ||||
| lazy_static! { | ||||
|     pub static ref PB_PROGRESS_STYLE: ProgressStyle = ProgressStyle::with_template( | ||||
|  | @ -173,12 +175,31 @@ impl TracingBuilder { | |||
|                 let (tracer, tx) = gen_otlp_tracer(service_name.to_string()); | ||||
|                 // Create a tracing layer with the configured tracer
 | ||||
|                 let layer = tracing_opentelemetry::layer().with_tracer(tracer); | ||||
| 
 | ||||
|                 #[cfg(feature = "tracy")] | ||||
|                 { | ||||
|                     subscriber | ||||
|                         .with(TracyLayer::default()) | ||||
|                         .with(Some(layer)) | ||||
|                         .try_init()?; | ||||
|                 } | ||||
| 
 | ||||
|                 #[cfg(not(feature = "tracy"))] | ||||
|                 { | ||||
|                     subscriber.with(Some(layer)).try_init()?; | ||||
|                 } | ||||
|                 return Ok(TracingHandle { tx: Some(tx) }); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         #[cfg(feature = "tracy")] | ||||
|         { | ||||
|             subscriber.with(TracyLayer::default()).try_init()?; | ||||
|         } | ||||
|         #[cfg(not(feature = "tracy"))] | ||||
|         { | ||||
|             subscriber.try_init()?; | ||||
|         } | ||||
| 
 | ||||
|         Ok(TracingHandle { tx: None }) | ||||
|     } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue