fitzgen commented on issue #4944:
Hmm something is enabling
rayonby default even with this.cargodoesn't provide great visibility into what is turning on what features here.
jameysharp commented on issue #4944:
I was just noticing earlier that
--no-default-featuresisn't turning off rayon any more. Thanks for prompting me to dig deeper.I think the cause is that #4911 made
wasmtime-cli-flagsdepend on thewasmtime/parallel-compilationfeature.I'm very much in favor of disabling parallel compilation by default for benchmarking, so let's figure out how to get the web of features right.
You can get cargo to tell you what's pulling in a particular dependency with e.g.
cargo tree -p wasmtime-bench-api -i rayon. It also accepts the usual--no-default-featuresand--featuresflags so you can check different combinations.
abrown commented on issue #4944:
@fitzgen, if a runtime flag is needed, I had submitted #4207 for that purpose (along with an
--engine-flagsflag in Sightglass, IIRC). Looks like something went wrong with #4207 but I can rebase that and figure out the CI error if that would help--what do you think? In the past I've also needed to benchmark single-threaded compilation but I think I used thetasksethammer instead, so I'm in favor of making either of these approaches work.
jameysharp commented on issue #4944:
If I'm understanding #4207 correctly, it looks like it's worth merging but isn't necessary for non-WASI options like the recent
--disable-parallel-compilation.
fitzgen commented on issue #4944:
I think we don't want to rely on only a runtime flag because the stacks are still not great when profiling if we do the runtime flag.
I think we will want to make the CLI flags crate not enable a bunch of features and maybe make
Configalways have methods for things like disabling parallelism even when therayondep isn't active (but document that it has no effect in that case or make it panic or return an error or something).
abrown commented on issue #4944:
If I'm understanding https://github.com/bytecodealliance/wasmtime/pull/4207 correctly, it looks like it's worth merging but isn't necessary for non-WASI options like the recent --disable-parallel-compilation.
No, it actually makes it possible to use any of the
CommonOptions, of whichdisable_parallel_compilationis one.
alexcrichton commented on issue #4944:
because the stacks are still not great when profiling
Could you expand on this? The flag is checked here so this shouldn't affect stacks other than having a
run_maybe_parallelframe which otherwise would probably get inlined ifrayonis disabled (but whether or not the frame is present doesn't seem like a bad stack to me)
abrown commented on issue #4944:
the stacks are still not great when profiling if we do the runtime flag
I agree with that sentiment (not wanting to wade through
rayonstacks) but I'm wondering how you're still seeing large stacks when you enable the flags: I seeself.config().parallel_compilationas guarding against usingrayonat all in a few places. Do you mean therayon"setup the environment" functions?
fitzgen commented on issue #4944:
I guess the broken stacks that I'm seeing now are unrelated to rayon, its all in vec iter stuff but it isn't all the same so the flamegraphs and top down views such are kinda unusable. I guess we can close this PR tho.
Last updated: Dec 06 2025 at 06:05 UTC