bytecodealliance / wasmtime

A fast and secure runtime for WebAssembly
https://wasmtime.dev/
Apache License 2.0
14.82k stars 1.24k forks source link

Support guest profiling for components #8773

Open yoshuawuyts opened 3 weeks ago

yoshuawuyts commented 3 weeks ago

Feature

Enable the following to work:

wasmtime serve ./my-component.wasm --profile=guest

Benefit

In general: profiling is useful and it's neat to be able to profile wasm components.

For me specifically though: I'm on MacOS and setting up native trace tools requires turning off security features in the kernel. I've not been able to do so successfully, so as a result I (somewhat embarrassingly) don't currently have a working perf command on my machine. Because wasmtime's guest profiler doesn't interact with the kernel at all, this seems like the ideal way to resolve it, basically by providing a portable, OS-agnostic profiling suite.

Implementation

There is a working guest profiler available already, but trying to run it on components gives the following error message:

Error: Cannot use the guest profiler with components

I don't really have insight in what it would take to implement support for components. But I figured it would be desirable - and I didn't see it being tracked already, so I figured we should. Folks with more knowledge about the challenges here should probably chime in though.