I've noticed that many benchmarks have lots of variance unless you pass --noconcurrent_sweeping --noconcurrent_recompilation which forces V8 to run the mark-sweep GC phase and the optimizing compiler on the main thread.
Does it make sense to run with those flags by default? Considerations:
- It makes the benchmarks more reliable.
- It's not representative of how node is normally run.
- Micro-benchmarks aren't representative of normal use either.
- Is the variance indicative of problems with V8's thread pool?
(I'd say the answer to 4. is no, variable latency is practically a given with thread pools, but I haven't extensively tested what impact different values for --v8-pool-size=... have.)
cc @nodejs/benchmarking
I've noticed that many benchmarks have lots of variance unless you pass
--noconcurrent_sweeping --noconcurrent_recompilationwhich forces V8 to run the mark-sweep GC phase and the optimizing compiler on the main thread.Does it make sense to run with those flags by default? Considerations:
(I'd say the answer to 4. is no, variable latency is practically a given with thread pools, but I haven't extensively tested what impact different values for
--v8-pool-size=...have.)cc @nodejs/benchmarking