In more traditional stacks, there are often go-to tools for performing performance analysis at different levels of detail. In this world of WASM, the isolation membrane around the guest code adds new challenges. How to instrument such code without the cost of instrumentation rendering the insight meaningless?
How are folks going about getting more detailed insight than the classic: 1) compilation; 2) instantiation; and 3) ~execution?
What about measuring the cost of host calls and calls from the host to the guest?
At least in the context of Wasmtime I can say I primarily use perf
on Linux for this. Using that gives a pretty good picture of host/guest combined, although it does still leave bits and pieces to be desired.
Otherwise though call overhead is definitely something we've optimized a lot in Wasmtime as well, not so much on a continuing basis of "we've compared ourselves to other runtimes" but moreso "we got it as fast as we could and we do our best not to regress"
Bottlenecks tend to vary application-by-application however which is where we design APIs and guidelines and such to work for as wide of an array of use cases as is possible
Last updated: Nov 22 2024 at 16:03 UTC