From 2b79625304b011b151f743843182f8f2def645c4 Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:13:13 -0700 Subject: [PATCH 1/5] Remove tracing from hot functions Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> --- src/hyperlight_host/src/mem/shared_mem.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/hyperlight_host/src/mem/shared_mem.rs b/src/hyperlight_host/src/mem/shared_mem.rs index fe6ba8dd9..e1d9aa55e 100644 --- a/src/hyperlight_host/src/mem/shared_mem.rs +++ b/src/hyperlight_host/src/mem/shared_mem.rs @@ -78,7 +78,6 @@ macro_rules! generate_writer { ($fname:ident, $ty:ty) => { /// Write a value of type `$ty` to the memory at the given offset. #[allow(dead_code)] - #[instrument(err(Debug), skip_all, parent = Span::current(), level= "Trace")] pub(crate) fn $fname(&mut self, offset: usize, value: $ty) -> Result<()> { let data = self.as_mut_slice(); bounds_check!(offset, std::mem::size_of::<$ty>(), data.len()); @@ -586,7 +585,6 @@ impl ExclusiveSharedMemory { /// the safety documentation of pointer::offset. /// /// This is ensured by a check in ::new() - #[instrument(skip_all, parent = Span::current(), level= "Trace")] pub(super) fn as_mut_slice<'a>(&'a mut self) -> &'a mut [u8] { unsafe { std::slice::from_raw_parts_mut(self.base_ptr(), self.mem_size()) } } @@ -708,7 +706,6 @@ pub trait SharedMemory { /// Return the length of usable memory contained in `self`. /// The returned size does not include the size of the surrounding /// guard pages. - #[instrument(skip_all, parent = Span::current(), level= "Trace")] fn mem_size(&self) -> usize { self.region().size - 2 * PAGE_SIZE_USIZE } From 1050b1ba22ba715c22681fc498a832186f1bc2d2 Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:13:36 -0700 Subject: [PATCH 2/5] Add tracy example Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> --- Cargo.lock | 151 ++++++++++++++++-- src/hyperlight_host/Cargo.toml | 1 + .../examples/tracing-tracy/README.md | 9 ++ .../examples/tracing-tracy/main.rs | 60 +++++++ 4 files changed, 210 insertions(+), 11 deletions(-) create mode 100644 src/hyperlight_host/examples/tracing-tracy/README.md create mode 100644 src/hyperlight_host/examples/tracing-tracy/main.rs diff --git a/Cargo.lock b/Cargo.lock index 3531ce826..69d9c89c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -867,6 +867,19 @@ dependencies = [ "num-traits", ] +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1242,10 +1255,11 @@ dependencies = [ "tracing-opentelemetry", "tracing-serde", "tracing-subscriber", + "tracing-tracy", "uuid", "vmm-sys-util 0.13.0", - "windows", - "windows-result", + "windows 0.61.1", + "windows-result 0.3.2", "windows-sys 0.59.0", "windows-version", ] @@ -1287,7 +1301,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.0", ] [[package]] @@ -1705,6 +1719,19 @@ version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +[[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 = "mach2" version = "0.4.2" @@ -2720,6 +2747,12 @@ dependencies = [ "windows-sys 0.59.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" @@ -3436,6 +3469,38 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "tracing-tracy" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eaa1852afa96e0fe9e44caa53dc0bd2d9d05e0f2611ce09f97f8677af56e4ba" +dependencies = [ + "tracing-core", + "tracing-subscriber", + "tracy-client", +] + +[[package]] +name = "tracy-client" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d90a2c01305b02b76fdd89ac8608bae27e173c829a35f7d76a345ab5d33836db" +dependencies = [ + "loom", + "once_cell", + "tracy-client-sys", +] + +[[package]] +name = "tracy-client-sys" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69fff37da548239c3bf9e64a12193d261e8b22b660991c6fd2df057c168f435f" +dependencies = [ + "cc", + "windows-targets 0.52.6", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -3726,6 +3791,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows" version = "0.61.1" @@ -3733,7 +3808,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.0", "windows-future", "windows-link", "windows-numerics", @@ -3745,7 +3820,20 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.0", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", ] [[package]] @@ -3754,10 +3842,10 @@ version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-implement", - "windows-interface", + "windows-implement 0.60.0", + "windows-interface 0.59.1", "windows-link", - "windows-result", + "windows-result 0.3.2", "windows-strings 0.4.0", ] @@ -3767,10 +3855,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" dependencies = [ - "windows-core", + "windows-core 0.61.0", "windows-link", ] +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-implement" version = "0.60.0" @@ -3782,6 +3881,17 @@ dependencies = [ "syn", ] +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-interface" version = "0.59.1" @@ -3805,7 +3915,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", + "windows-core 0.61.0", "windows-link", ] @@ -3815,11 +3925,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result", + "windows-result 0.3.2", "windows-strings 0.3.1", "windows-targets 0.53.0", ] +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.3.2" @@ -3829,6 +3948,16 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-strings" version = "0.3.1" diff --git a/src/hyperlight_host/Cargo.toml b/src/hyperlight_host/Cargo.toml index 44b9fc304..5fdb74cc0 100644 --- a/src/hyperlight_host/Cargo.toml +++ b/src/hyperlight_host/Cargo.toml @@ -103,6 +103,7 @@ criterion = "0.5.1" tracing-chrome = "0.7.2" metrics-util = "0.19.1" metrics-exporter-prometheus = "0.17.0" +tracing-tracy = "0.11.4" [target.'cfg(windows)'.dev-dependencies] windows = { version = "0.61", features = [ diff --git a/src/hyperlight_host/examples/tracing-tracy/README.md b/src/hyperlight_host/examples/tracing-tracy/README.md new file mode 100644 index 000000000..1677e1e56 --- /dev/null +++ b/src/hyperlight_host/examples/tracing-tracy/README.md @@ -0,0 +1,9 @@ +This is an example of using the tracing-tracy tracing-subscriber. When ran, it will generate traces that can be viewed in the tracy profiler. + +You can run it with: + +```console +TRACY_NO_EXIT=1 RUST_LOG=trace cargo run --package hyperlight-host --example tracing-tracy --profile release-with-debug +``` + +and then the client should show up in the profiler GUI. \ No newline at end of file diff --git a/src/hyperlight_host/examples/tracing-tracy/main.rs b/src/hyperlight_host/examples/tracing-tracy/main.rs new file mode 100644 index 000000000..6b16c93bf --- /dev/null +++ b/src/hyperlight_host/examples/tracing-tracy/main.rs @@ -0,0 +1,60 @@ +/* +Copyright 2024 The Hyperlight Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +use hyperlight_host::func::{ParameterValue, ReturnType, ReturnValue}; +use hyperlight_host::sandbox::uninitialized::UninitializedSandbox; +use hyperlight_host::sandbox_state::sandbox::EvolvableSandbox; +use hyperlight_host::sandbox_state::transition::Noop; +use hyperlight_host::{GuestBinary, MultiUseSandbox, Result}; +use hyperlight_testing::simple_guest_as_string; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::EnvFilter; + +// An example of how to get tracy tracing working with hyperlight. +// Run with: +// TRACY_NO_EXIT=1 RUST_LOG=trace cargo run --package hyperlight-host --example tracing-tracy --profile release-with-debug, +// and then open the `tracy-profiler` GUI, and there should be an option to load the client created by this example. +fn main() -> Result<()> { + tracing::subscriber::set_global_default( + tracing_subscriber::registry() + .with(EnvFilter::from_default_env()) + .with(tracing_tracy::TracyLayer::default()), + ) + .expect("setup tracy layer"); + + let simple_guest_path = + simple_guest_as_string().expect("Cannot find the guest binary at the expected location."); + + // Create a new sandbox. + let usandbox = + UninitializedSandbox::new(GuestBinary::FilePath(simple_guest_path), None, None, None)?; + + let mut sbox = usandbox + .evolve(Noop::::default()) + .unwrap(); + + // do the function call + let current_time = std::time::Instant::now(); + let res = sbox.call_guest_function_by_name( + "Echo", + ReturnType::String, + Some(vec![ParameterValue::String("Hello, World!".to_string())]), + )?; + let elapsed = current_time.elapsed(); + println!("Function call finished in {:?}.", elapsed); + assert!(matches!(res, ReturnValue::String(s) if s == "Hello, World!")); + Ok(()) +} From 3d71fdd535095433c442a6c6aaaa5c50956e7093 Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:24:39 -0700 Subject: [PATCH 3/5] Unify names of tracing-* examples Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> --- docs/hyperlight-metrics-logs-and-traces.md | 6 +++--- .../examples/{chrome-tracing => tracing-chrome}/README.md | 0 .../examples/{chrome-tracing => tracing-chrome}/main.rs | 2 +- .../examples/{otlp_tracing => tracing-otlp}/main.rs | 0 4 files changed, 4 insertions(+), 4 deletions(-) rename src/hyperlight_host/examples/{chrome-tracing => tracing-chrome}/README.md (100%) rename src/hyperlight_host/examples/{chrome-tracing => tracing-chrome}/main.rs (98%) rename src/hyperlight_host/examples/{otlp_tracing => tracing-otlp}/main.rs (100%) diff --git a/docs/hyperlight-metrics-logs-and-traces.md b/docs/hyperlight-metrics-logs-and-traces.md index 7427962c5..3dc62438d 100644 --- a/docs/hyperlight-metrics-logs-and-traces.md +++ b/docs/hyperlight-metrics-logs-and-traces.md @@ -62,18 +62,18 @@ $env:RUST_LOG='none,hyperlight_host=info,tracing=info'; cargo run --example trac ### Using OTLP exporter and Jaeger -In the [examples/otlp_tracing](../src/hyperlight_host/examples/otlp_tracing) directory, there is an example that shows how to capture and send trace and log information to an otlp_collector using the opentelemetry_otlp crate. With this example the following commands can be used to set the verbosity of the trace output to `INFO` and run the example to generate trace data: +In the [examples/tracing-otlp](../src/hyperlight_host/examples/tracing-otlp) directory, there is an example that shows how to capture and send trace and log information to an otlp_collector using the opentelemetry_otlp crate. With this example the following commands can be used to set the verbosity of the trace output to `INFO` and run the example to generate trace data: #### Linux ```bash -RUST_LOG='none,hyperlight_host=info,tracing=info' cargo run --example otlp_tracing +RUST_LOG='none,hyperlight_host=info,tracing=info' cargo run --example tracing-otlp ``` #### Windows ```powershell -$env:RUST_LOG='none,hyperlight_host=info,tracing=info';cargo run --example otlp_tracing +$env:RUST_LOG='none,hyperlight_host=info,tracing=info';cargo run --example tracing-otlp ``` The sample will run and generate trace data until any key is pressed. diff --git a/src/hyperlight_host/examples/chrome-tracing/README.md b/src/hyperlight_host/examples/tracing-chrome/README.md similarity index 100% rename from src/hyperlight_host/examples/chrome-tracing/README.md rename to src/hyperlight_host/examples/tracing-chrome/README.md diff --git a/src/hyperlight_host/examples/chrome-tracing/main.rs b/src/hyperlight_host/examples/tracing-chrome/main.rs similarity index 98% rename from src/hyperlight_host/examples/chrome-tracing/main.rs rename to src/hyperlight_host/examples/tracing-chrome/main.rs index dd25bbf9b..8150463d3 100644 --- a/src/hyperlight_host/examples/chrome-tracing/main.rs +++ b/src/hyperlight_host/examples/tracing-chrome/main.rs @@ -23,7 +23,7 @@ use hyperlight_testing::simple_guest_as_string; use tracing_chrome::ChromeLayerBuilder; use tracing_subscriber::prelude::*; -// This example can be run with `cargo run --package hyperlight_host --example chrome-tracing --release` +// This example can be run with `cargo run --package hyperlight_host --example tracing-chrome --release` fn main() -> Result<()> { // set up tracer let (chrome_layer, _guard) = ChromeLayerBuilder::new().build(); diff --git a/src/hyperlight_host/examples/otlp_tracing/main.rs b/src/hyperlight_host/examples/tracing-otlp/main.rs similarity index 100% rename from src/hyperlight_host/examples/otlp_tracing/main.rs rename to src/hyperlight_host/examples/tracing-otlp/main.rs From 2254c2646ac5134cf31bb6df15c22fb22c067a12 Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:44:45 -0700 Subject: [PATCH 4/5] Clippy Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> --- src/hyperlight_host/src/mem/shared_mem.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hyperlight_host/src/mem/shared_mem.rs b/src/hyperlight_host/src/mem/shared_mem.rs index e1d9aa55e..933918b4b 100644 --- a/src/hyperlight_host/src/mem/shared_mem.rs +++ b/src/hyperlight_host/src/mem/shared_mem.rs @@ -585,7 +585,7 @@ impl ExclusiveSharedMemory { /// the safety documentation of pointer::offset. /// /// This is ensured by a check in ::new() - pub(super) fn as_mut_slice<'a>(&'a mut self) -> &'a mut [u8] { + pub(super) fn as_mut_slice(&mut self) -> &mut [u8] { unsafe { std::slice::from_raw_parts_mut(self.base_ptr(), self.mem_size()) } } From d664f6f393abf58c7d08471111e655c14cc684a5 Mon Sep 17 00:00:00 2001 From: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:58:00 -0700 Subject: [PATCH 5/5] Add picture of tracy profiler to readme Signed-off-by: Ludvig Liljenberg <4257730+ludfjig@users.noreply.github.com> --- .../examples/tracing-tracy/README.md | 4 +++- .../examples/tracing-tracy/image.png | Bin 0 -> 51712 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 src/hyperlight_host/examples/tracing-tracy/image.png diff --git a/src/hyperlight_host/examples/tracing-tracy/README.md b/src/hyperlight_host/examples/tracing-tracy/README.md index 1677e1e56..425c3d9dc 100644 --- a/src/hyperlight_host/examples/tracing-tracy/README.md +++ b/src/hyperlight_host/examples/tracing-tracy/README.md @@ -6,4 +6,6 @@ You can run it with: TRACY_NO_EXIT=1 RUST_LOG=trace cargo run --package hyperlight-host --example tracing-tracy --profile release-with-debug ``` -and then the client should show up in the profiler GUI. \ No newline at end of file +and then the client should show up in the profiler GUI: + +![pic of tracy profiler](image.png) \ No newline at end of file diff --git a/src/hyperlight_host/examples/tracing-tracy/image.png b/src/hyperlight_host/examples/tracing-tracy/image.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd5791f7d6fdb596386f5dc1d6d24f7742b229a GIT binary patch literal 51712 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�&aYkov$ZGD>Fw>YX%X#5Z^CH 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 Y;nR(&d9!Vt7{DbZCikZBm9Fpq1LP7QZvX%Q literal 0 HcmV?d00001