uv
3b8f3a7f - Avoid work-stealing in bytecode compilation (#4004)

Commit
1 year ago
Avoid work-stealing in bytecode compilation (#4004) ## Summary Avoid using work-stealing Tokio workers for bytecode compilation, favoring instead dedicated threads. Tokio's work-stealing does not really benefit us because we're spawning Python workers and scheduling tasks ourselves — we don't want Tokio to re-balance our workers. Because we're doing scheduling ourselves and compilation is a primarily compute-bound task, we can also create dedicated runtimes for each worker and avoid some synchronization overhead. This is part of a general desire to avoid relying on Tokio's work-stealing scheduler and be smarter about our workload. In this case we already had the custom scheduler in place, Tokio was just getting in the way (though the overhead is very minor). ## Test Plan This improves performance by ~5% on my machine. ``` $ hyperfine --warmup 1 --prepare "target/profiling/uv-dev clear-compile .venv" "target/profiling/uv-dev compile .venv" "target/profiling/uv-dev-dedicated compile .venv" Benchmark 1: target/profiling/uv-dev compile .venv Time (mean ± σ): 1.279 s ± 0.011 s [User: 13.803 s, System: 2.998 s] Range (min … max): 1.261 s … 1.296 s 10 runs Benchmark 2: target/profiling/uv-dev-dedicated compile .venv Time (mean ± σ): 1.220 s ± 0.021 s [User: 13.997 s, System: 3.330 s] Range (min … max): 1.198 s … 1.272 s 10 runs Summary target/profiling/uv-dev-dedicated compile .venv ran 1.05 ± 0.02 times faster than target/profiling/uv-dev compile .venv $ hyperfine --warmup 1 --prepare "target/profiling/uv-dev clear-compile .venv" "target/profiling/uv-dev compile .venv" "target/profiling/uv-dev-dedicated compile .venv" Benchmark 1: target/profiling/uv-dev compile .venv Time (mean ± σ): 3.631 s ± 0.078 s [User: 47.205 s, System: 4.996 s] Range (min … max): 3.564 s … 3.832 s 10 runs Benchmark 2: target/profiling/uv-dev-dedicated compile .venv Time (mean ± σ): 3.521 s ± 0.024 s [User: 48.201 s, System: 5.392 s] Range (min … max): 3.484 s … 3.566 s 10 runs Summary target/profiling/uv-dev-dedicated compile .venv ran 1.03 ± 0.02 times faster than target/profiling/uv-dev compile .venv ```
Author
Parents
Loading