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]]
|
[[package]]
|
||||||
name = "ittapi-rs"
|
name = "ittapi-rs"
|
||||||
version = "0.1.6"
|
version = "0.2.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "265ed25cd5b53e9b02bf97a1f66ab7af1af7ab61f5d9ce1e05aeaed098723658"
|
checksum = "f712648a1ad72fbfb7adc2772c331e8d90f022f8cf30cbabefba2878dd3172b0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ default = [
|
|||||||
"jitdump",
|
"jitdump",
|
||||||
"wasmtime/wat",
|
"wasmtime/wat",
|
||||||
"wasmtime/parallel-compilation",
|
"wasmtime/parallel-compilation",
|
||||||
|
"vtune",
|
||||||
"wasi-nn",
|
"wasi-nn",
|
||||||
"pooling-allocator",
|
"pooling-allocator",
|
||||||
"memfd",
|
"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"] }
|
object = { version = "0.27.0", default-features = false, features = ["std", "read_core", "elf"] }
|
||||||
serde = { version = "1.0.94", features = ["derive"] }
|
serde = { version = "1.0.94", features = ["derive"] }
|
||||||
addr2line = { version = "0.17.0", default-features = false }
|
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"
|
bincode = "1.2.1"
|
||||||
rustc-demangle = "0.1.16"
|
rustc-demangle = "0.1.16"
|
||||||
cpp_demangle = "0.3.2"
|
cpp_demangle = "0.3.2"
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ cfg_if::cfg_if! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(all(feature = "vtune", target_os = "linux"))] {
|
if #[cfg(all(feature = "vtune", target_arch = "x86_64"))] {
|
||||||
#[path = "profiling/vtune_linux.rs"]
|
#[path = "profiling/vtune.rs"]
|
||||||
mod vtune;
|
mod vtune;
|
||||||
} else {
|
} else {
|
||||||
#[path = "profiling/vtune_disabled.rs"]
|
#[path = "profiling/vtune_disabled.rs"]
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
//! Adds support for profiling JIT-ed code using 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).
|
||||||
//! ### Build
|
//! To enable it at runtime, use the `--vtune` CLI flag.
|
||||||
//!
|
|
||||||
//! ```ignore
|
|
||||||
//! cargo build --features=vtune
|
|
||||||
//! ```
|
|
||||||
//!
|
//!
|
||||||
//! ### Profile
|
//! ### Profile
|
||||||
//!
|
//!
|
||||||
@@ -60,6 +60,7 @@ default = [
|
|||||||
'cranelift',
|
'cranelift',
|
||||||
'pooling-allocator',
|
'pooling-allocator',
|
||||||
'memfd',
|
'memfd',
|
||||||
|
'vtune',
|
||||||
]
|
]
|
||||||
|
|
||||||
# An on-by-default feature enabling runtime compilation of WebAssembly modules
|
# 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
|
//! jitdump runtime profiling format. The profiler can be selected with
|
||||||
//! [`Config::profiler`].
|
//! [`Config::profiler`].
|
||||||
//!
|
//!
|
||||||
//! * `vtune` - Not enabled by default, this feature compiles in support for
|
//! * `vtune` - Enabled by default, this feature compiles in support for VTune
|
||||||
//! supporting VTune profiling of JIT code.
|
//! profiling of JIT code.
|
||||||
//!
|
//!
|
||||||
//! * `uffd` - Not enabled by default. This feature enables `userfaultfd` support
|
//! * `uffd` - Not enabled by default. This feature enables `userfaultfd` support
|
||||||
//! when using the pooling instance allocator. As handling page faults in user space
|
//! 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
|
### Turn on VTune support
|
||||||
|
|
||||||
For JIT profiling with VTune, first build with the `vtune` feature enabled:
|
For JIT profiling with VTune, Wasmtime currently builds with the `vtune` feature
|
||||||
|
enabled by default. This ensures the compiled binary understands how to inform
|
||||||
```sh
|
the `ittapi` library of JIT events. But it must still be enabled at
|
||||||
$ cargo build --features=vtune
|
runtime--enable runtime support based on how you use Wasmtime:
|
||||||
```
|
|
||||||
|
|
||||||
Then, enable runtime support based on how you use Wasmtime:
|
|
||||||
|
|
||||||
* **Rust API** - call the [`Config::profiler`] method with
|
* **Rust API** - call the [`Config::profiler`] method with
|
||||||
`ProfilingStrategy::VTune` to enable profiling of your wasm modules.
|
`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:
|
With VTune [properly installed][download], if you are using the CLI execute:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ cargo build --features=vtune
|
$ cargo build
|
||||||
$ vtune -run-pass-thru=--no-altstack -collect hotspots target/debug/wasmtime --vtune foo.wasm
|
$ vtune -run-pass-thru=--no-altstack -collect hotspots target/debug/wasmtime --vtune foo.wasm
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
# Profiling WebAssembly
|
# Profiling WebAssembly
|
||||||
|
|
||||||
One of WebAssembly's major goals is to be quite close to native code in terms of
|
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
|
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
|
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
|
bit deeper into the performance of your Wasm, and this is where profiling comes
|
||||||
into the picture.
|
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