bytecodealliance / bytecodealliance/wasmtime

One-click guest profiler results

Open
#7,666 0 comments 0 reactions 0 assignees View on GitHub
enhancement wasmtime
Dominant language
Rust
Stars
18.6k
Forks
1.8k
Avg merge
1d 18h
Merged PRs (30d)
126

Description

#### Feature

When invoking the guest profiler via either its `GuestProfiler` Rust API or the Wasmtime CLI, we should provide the option of running a local web server to serve profile data, then generating links to https://profiler.firefox.com/ that direct it to load the profile data directly from the local web server.

#### Benefit

Currently, we write the profile data to a file, then tell the user the path to that file. They then browse to https://profiler.firefox.com/ and use their browser's file-open dialog to find the path we told them. It would be more convenient to give them a single URL which automatically loads the profile data.

Running a local web server also allows us to symbolicate lazily and serve source code to the viewer on-demand, in principle.

#### Implementation

The Samply profiler illustrates how to do this, in https://github.com/mstange/samply/blob/main/samply/src/server.rs.

#### Alternatives

We could continue just writing the profile to a file and letting the user find it in their filesystem.

I was hesitant to suggest doing this in Wasmtime before because it means we need to depend on an HTTP server like `hyper`. I thought it would be better to implement the parts which depend on a web server in embedders such as Viceroy that have their own web server. But now that we've implemented wasi-http, Wasmtime depends on `hyper` anyway, so we might as well do it in Wasmtime where it can be shared across multiple embedders.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.