Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.bazelrc: enable skymeld by default #4411

Closed
wants to merge 1 commit into from
Closed

Commits on Jul 27, 2023

  1. .bazelrc: enable skymeld by default

    Skymeld config helps us start build actions without having to wait for
    all repository rules to finish executing in Analysis phase.
    
    Effectively, this let us start the frontend builds earlier without
    having to wait for the Go external dependencies and toolchain to finish
    loading.
    
    Some benchmarks
    
    1. Building `//server` without remote cache
    
       ```bash
       > hyperfine --prepare 'bazel clean --async' \
                   --warmup 1 \
                   'bazel build --config=x -k --remote_instance_name="$RANDOM" server' \
                   'bazel build --config=x -k --remote_instance_name="$RANDOM" --config=skymeld server'
    
       Benchmark 1: bazel build --config=x -k --remote_instance_name="$RANDOM" server
         Time (mean ± σ):     241.279 s ± 42.673 s    [User: 0.134 s, System: 0.149 s]
         Range (min … max):   169.694 s … 318.005 s    10 runs
    
       Benchmark 2: bazel build --config=x -k --remote_instance_name="$RANDOM" --config=skymeld server
         Time (mean ± σ):     213.551 s ± 75.335 s    [User: 0.118 s, System: 0.129 s]
         Range (min … max):   148.260 s … 400.258 s    10 runs
    
       Summary
         bazel build --config=x -k --remote_instance_name="$RANDOM" --config=skymeld server ran
           1.13 ± 0.45 times faster than bazel build --config=x -k --remote_instance_name="$RANDOM" server
       ```
    
    2. Building `//server` with remote cache
    
       ```bash
       > hyperfine --prepare 'bazel clean --async' \
                   --warmup 1 \
                   'bazel build --config=x -k server' \
                   'bazel build --config=x -k --config=skymeld server'
    
       Benchmark 1: bazel build --config=x -k server
         Time (mean ± σ):     19.282 s ±  0.473 s    [User: 0.014 s, System: 0.023 s]
         Range (min … max):   18.656 s … 20.218 s    10 runs
    
       Benchmark 2: bazel build --config=x -k --config=skymeld server
         Time (mean ± σ):     17.732 s ±  0.407 s    [User: 0.014 s, System: 0.023 s]
         Range (min … max):   17.118 s … 18.626 s    10 runs
    
       Summary
         bazel build --config=x -k --config=skymeld server ran
           1.09 ± 0.04 times faster than bazel build --config=x -k server
       ```
    
    3. Testing everything with remote cache
    
       ```bash
       > hyperfine --prepare 'bazel clean --async' \
                       --warmup 1 \
                       'bazel build --config=x -k //...' \
                       'bazel build --config=x -k --config=skymeld //...'
       Benchmark 1: bazel build --config=x -k //...
         Time (mean ± σ):     27.113 s ±  1.020 s    [User: 0.014 s, System: 0.020 s]
         Range (min … max):   25.938 s … 28.833 s    10 runs
    
       Benchmark 2: bazel build --config=x -k --config=skymeld //...
         Time (mean ± σ):     25.349 s ±  1.155 s    [User: 0.014 s, System: 0.021 s]
         Range (min … max):   23.567 s … 27.314 s    10 runs
    
       Summary
         bazel build --config=x -k --config=skymeld //... ran
           1.07 ± 0.06 times faster than bazel build --config=x -k //...
       ```
    
    Overall, using Skymeld gives a +7-14% speed improvement over the
    existing setup.
    
    Removed `--experimental_skymeld_ui` as it's a no-op flag.
    sluongng committed Jul 27, 2023
    Configuration menu
    Copy the full SHA
    83201b0 View commit details
    Browse the repository at this point in the history