x64: enable VTune support by default (#3821)
* x64: enable VTune support by default After significant work in the `ittapi-rs` crate, this dependency should build without issue on Wasmtime's supported operating systems: Windows, Linux, and macOS. The difference in the release binary is <20KB, so this change makes `vtune` a default build feature. This change upgrades `ittapi-rs` to v0.2.0 and updates the documentation. * review: add configuration for defaults in more places * review: remove OS conditional compilation, add architecture * review: do not default vtune feature in wasmtime-jit
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -1497,9 +1497,9 @@ checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
|
||||
|
||||
[[package]]
|
||||
name = "ittapi-rs"
|
||||
version = "0.1.6"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "265ed25cd5b53e9b02bf97a1f66ab7af1af7ab61f5d9ce1e05aeaed098723658"
|
||||
checksum = "f712648a1ad72fbfb7adc2772c331e8d90f022f8cf30cbabefba2878dd3172b0"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
@@ -95,6 +95,7 @@ default = [
|
||||
"jitdump",
|
||||
"wasmtime/wat",
|
||||
"wasmtime/parallel-compilation",
|
||||
"vtune",
|
||||
"wasi-nn",
|
||||
"pooling-allocator",
|
||||
"memfd",
|
||||
|
||||
@@ -22,7 +22,7 @@ gimli = { version = "0.26.0", default-features = false, features = ["std", "read
|
||||
object = { version = "0.27.0", default-features = false, features = ["std", "read_core", "elf"] }
|
||||
serde = { version = "1.0.94", features = ["derive"] }
|
||||
addr2line = { version = "0.17.0", default-features = false }
|
||||
ittapi-rs = { version = "0.1.6", optional = true }
|
||||
ittapi-rs = { version = "0.2.0", optional = true }
|
||||
bincode = "1.2.1"
|
||||
rustc-demangle = "0.1.16"
|
||||
cpp_demangle = "0.3.2"
|
||||
|
||||
@@ -12,8 +12,8 @@ cfg_if::cfg_if! {
|
||||
}
|
||||
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(all(feature = "vtune", target_os = "linux"))] {
|
||||
#[path = "profiling/vtune_linux.rs"]
|
||||
if #[cfg(all(feature = "vtune", target_arch = "x86_64"))] {
|
||||
#[path = "profiling/vtune.rs"]
|
||||
mod vtune;
|
||||
} else {
|
||||
#[path = "profiling/vtune_disabled.rs"]
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
//! Adds support for profiling JIT-ed code using VTune.
|
||||
//!
|
||||
//! ### Build
|
||||
//!
|
||||
//! ```ignore
|
||||
//! cargo build --features=vtune
|
||||
//! ```
|
||||
//! Adds support for profiling JIT-ed code using VTune. By default, VTune
|
||||
//! support is built in to Wasmtime (configure with the `vtune` feature flag).
|
||||
//! To enable it at runtime, use the `--vtune` CLI flag.
|
||||
//!
|
||||
//! ### Profile
|
||||
//!
|
||||
@@ -60,6 +60,7 @@ default = [
|
||||
'cranelift',
|
||||
'pooling-allocator',
|
||||
'memfd',
|
||||
'vtune',
|
||||
]
|
||||
|
||||
# An on-by-default feature enabling runtime compilation of WebAssembly modules
|
||||
|
||||
@@ -262,8 +262,8 @@
|
||||
//! jitdump runtime profiling format. The profiler can be selected with
|
||||
//! [`Config::profiler`].
|
||||
//!
|
||||
//! * `vtune` - Not enabled by default, this feature compiles in support for
|
||||
//! supporting VTune profiling of JIT code.
|
||||
//! * `vtune` - Enabled by default, this feature compiles in support for VTune
|
||||
//! profiling of JIT code.
|
||||
//!
|
||||
//! * `uffd` - Not enabled by default. This feature enables `userfaultfd` support
|
||||
//! when using the pooling instance allocator. As handling page faults in user space
|
||||
|
||||
@@ -30,13 +30,10 @@ For more information on VTune and the analysis tools it provides see its
|
||||
|
||||
### Turn on VTune support
|
||||
|
||||
For JIT profiling with VTune, first build with the `vtune` feature enabled:
|
||||
|
||||
```sh
|
||||
$ cargo build --features=vtune
|
||||
```
|
||||
|
||||
Then, enable runtime support based on how you use Wasmtime:
|
||||
For JIT profiling with VTune, Wasmtime currently builds with the `vtune` feature
|
||||
enabled by default. This ensures the compiled binary understands how to inform
|
||||
the `ittapi` library of JIT events. But it must still be enabled at
|
||||
runtime--enable runtime support based on how you use Wasmtime:
|
||||
|
||||
* **Rust API** - call the [`Config::profiler`] method with
|
||||
`ProfilingStrategy::VTune` to enable profiling of your wasm modules.
|
||||
@@ -62,7 +59,7 @@ future.
|
||||
With VTune [properly installed][download], if you are using the CLI execute:
|
||||
|
||||
```sh
|
||||
$ cargo build --features=vtune
|
||||
$ cargo build
|
||||
$ vtune -run-pass-thru=--no-altstack -collect hotspots target/debug/wasmtime --vtune foo.wasm
|
||||
```
|
||||
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
# Profiling WebAssembly
|
||||
|
||||
One of WebAssembly's major goals is to be quite close to native code in terms of
|
||||
performance, so typically when executing wasm you'll be quite interested in how
|
||||
well your wasm module is performing! From time to time you might want to dive a
|
||||
bit deeper into the performance of your wasm, and this is where profiling comes
|
||||
performance, so typically when executing Wasm you'll be quite interested in how
|
||||
well your Wasm module is performing! From time to time you might want to dive a
|
||||
bit deeper into the performance of your Wasm, and this is where profiling comes
|
||||
into the picture.
|
||||
|
||||
Profiling support in Wasmtime is still under development, but if you're using either [perf](./examples-profiling-perf.md) or [Vtune](./examples-profiling-vtune.md) the examples in these sections are targeted at helping you get some information about the performance of your wasm modules.
|
||||
Profiling support in Wasmtime is still under development, but if you're using
|
||||
either [perf](./examples-profiling-perf.md) or
|
||||
[VTune](./examples-profiling-vtune.md) the examples in these sections are
|
||||
targeted at helping you get some information about the performance of your Wasm
|
||||
modules.
|
||||
|
||||
Reference in New Issue
Block a user