You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 lines
557 B

# Using Wasmtime's cross-platform profiler
The guest profiling strategy enables in-process sampling and will write the
captured profile to a file which can be viewed at
<https://profiler.firefox.com/>.
To use this profiler with the Wasmtime CLI, pass the
`--profile=guest[,path[,interval]]` flag.
- `path` is where to write the profile, `wasmtime-guest-profile.json` by default
- `interval` is the duration between samples, 10ms by default
Redesign Wasmtime&#39;s CLI (#6925) * Redesign Wasmtime&#39;s CLI This commit follows through on discussion from #6741 to redesign the flags that the `wasmtime` binary accepts on the CLI. Almost all flags have been renamed/moved and will require callers to update. The main motivation here is to cut down on the forest of options in `wasmtime -h` which are difficult to mentally group together and understand. The main change implemented here is to move options behind &#34;option groups&#34; which are intended to be abbreviated with a single letter: * `-O foo` - an optimization or performance-tuning related option * `-C foo` - a codegen option affecting the compilation process. * `-D foo` - a debug-related option * `-W foo` - a wasm-related option, for example changing wasm semantics * `-S foo` - a WASI-related option, configuring various proposals for example Each option group can be explored by passing `help`, for example `-O help`. This will print all options within the group along with their help message. Additionally `-O help-long` can be passed to print the full comment for each option if desired. Option groups can be specified multiple times on the command line, for example `-Wrelaxed-simd -Wthreads`. They can also be combined together with commas as `-Wrelaxed-simd,threads`. Configuration works as a &#34;last option wins&#34; so `-Ccache,cache=n` would end up with a compilation cache disabled. Boolean options can be specified as `-C foo` to enable `foo`, or they can be specified with `-Cfoo=$val` with any of `y`, `n`, `yes`, `no`, `true`, or `false`. All other options require a `=foo` value to be passed and the parsing depends on the type. This commit additionally applies a few small refactorings to the CLI as well. For example the help text no longer prints information about wasm features after printing the option help. This is still available via `-Whelp` as all wasm features have moved from `--wasm-features` to `-W`. Additionally flags are no longer conditionally compiled in, but instead all flags are always supported. A runtime error is returned if support for a flag is not compiled in. Additionally the &#34;experimental&#34; name of WASI proposals has been dropped in favor of just the name of the proposal, for example `--wasi nn` instead of `--wasi-modules experimental-wasi-nn`. This is intended to mirror how wasm proposals don&#39;t have &#34;experimental&#34; in the name and an opt-in is required regardless. A full listing of flags and how they have changed is: | old cli flag | new cli flag | |-----------------------------------------------|-------------------------------------------------| | `-O, --optimize` | removed | | `--opt-level &lt;LEVEL&gt;` | `-O opt-level=N` | | `--dynamic-memory-guard-size &lt;SIZE&gt;` | `-O dynamic-memory-guard-size=...` | | `--static-memory-forced` | `-O static-memory-forced` | | `--static-memory-guard-size &lt;SIZE&gt;` | `-O static-memory-guard-size=N` | | `--static-memory-maximum-size &lt;MAXIMUM&gt;` | `-O static-memory-maximum-size=N` | | `--dynamic-memory-reserved-for-growth &lt;SIZE&gt;` | `-O dynamic-memory-reserved-for-growth=...` | | `--pooling-allocator` | `-O pooling-allocator` | | `--disable-memory-init-cow` | `-O memory-init-cow=no` | | `--compiler &lt;COMPILER&gt;` | `-C compiler=..` | | `--enable-cranelift-debug-verifier` | `-C cranelift-debug-verifier` | | `--cranelift-enable &lt;SETTING&gt;` | `-C cranelift-NAME` | | `--cranelift-set &lt;NAME=VALUE&gt;` | `-C cranelift-NAME=VALUE` | | `--config &lt;CONFIG_PATH&gt;` | `-C cache-config=..` | | `--disable-cache` | `-C cache=no` | | `--disable-parallel-compilation` | `-C parallel-compilation=no` | | `-g` | `-D debug-info` | | `--disable-address-map` | `-D address-map=no` | | `--disable-logging` | `-D logging=no` | | `--log-to-files` | `-D log-to-files` | | `--coredump-on-trap &lt;PATH&gt;` | `-D coredump=..` | | `--wasm-features all` | `-W all-proposals` | | `--wasm-features -all` | `-W all-proposals=n` | | `--wasm-features bulk-memory` | `-W bulk-memory` | | `--wasm-features multi-memory` | `-W multi-memory` | | `--wasm-features multi-value` | `-W multi-value` | | `--wasm-features reference-types` | `-W reference-types` | | `--wasm-features simd` | `-W simd` | | `--wasm-features tail-call` | `-W tail-call` | | `--wasm-features threads` | `-W threads` | | `--wasm-features memory64` | `-W memory64` | | `--wasm-features copmonent-model` | `-W component-model` | | `--wasm-features function-references` | `-W function-references` | | `--relaxed-simd-deterministic` | `-W relaxed-simd-deterministic` | | `--enable-cranelift-nan-canonicalization` | `-W nan-canonicalization` | | `--fuel &lt;N&gt;` | `-W fuel=N` | | `--epoch-interruption` | `-W epoch-interruption` | | `--allow-unknown-exports` | `-W unknown-exports-allow` | | `--trap-unknown-imports` | `-W unknown-imports-trap` | | `--default-values-unknown-imports` | `-W unknown-imports-default` | | `--max-instances &lt;MAX_INSTANCES&gt;` | `-W max-instances=N` | | `--max-memories &lt;MAX_MEMORIES&gt;` | `-W max-memories=N` | | `--max-memory-size &lt;BYTES&gt;` | `-W max-memory-size=N` | | `--max-table-elements &lt;MAX_TABLE_ELEMENTS&gt;` | `-W max-table-elements=N` | | `--max-tables &lt;MAX_TABLES&gt;` | `-W max-tables=N` | | `--max-wasm-stack &lt;MAX_WASM_STACK&gt;` | `-W max-wasm-stack=N` | | `--trap-on-grow-failure` | `-W trap-on-grow-failure` | | `--wasm-timeout &lt;TIME&gt;` | `-W timeout=N` | | `--wmemcheck` | `-W wmemcheck` | | `--wasi-modules default` | removed | | `--wasi-modules -default` | removed | | `--wasi-modules wasi-common` | `-S common` | | `--wasi-modules -wasi-common` | `-S common=n` | | `--wasi-modules experimental-wasi-nn` | `-S nn` | | `--wasi-modules experimental-wasi-threads` | `-S threads` | | `--wasi-modules experimental-wasi-http` | `-S http` | | `--listenfd` | `-S listenfd` | | `--tcplisten &lt;SOCKET ADDRESS&gt;` | `-S tcplisten=...` | | `--wasi-nn-graph &lt;FORMAT::HOST&gt;` | `-S nn-graph=FORMAT::HOST` | | `--preview2` | `-S preview2` | | `--dir &lt;DIRECTORY&gt;` | `--dir ...` | | `--mapdir &lt;GUEST_DIR::HOST_DIR&gt;` | `--dir a::b` | * Be more descriptive with help text * Document `=val` is optional for `-Ccranelift-xxx` * Fix compile after rebase * Fix rebase of `--inherit-network` * Fix wasi-http test * Fix compile without pooling allocator support * Update some flags in docs * Fix bench-api build * Update flags for gdb/lldb tests * Fixup optimization flags prtest:full
1 year ago
When used with `-W timeout=N`, the timeout will be rounded up to the nearest
multiple of the profiling interval.