Add comprehensive benchmarking infrastructure#19
Conversation
…Execution (RBE) systems, including various load tests, environment configurations, and CI integration.
…e the CI workflow to use it for PRs, including those from forks.
…emote and configure CAS endpoint.
…pt to support local service auto-detection and startup.
96c8d07 to
103c533
Compare
103c533 to
d68e0d8
Compare
d68e0d8 to
f829719
Compare
0a11f79 to
e87179a
Compare
…pt to support local service auto-detection and startup.
e87179a to
384c78e
Compare
🚀 Performance Benchmark ResultsBenchmark Results SummaryMode: light Memory Footprint
✅ Memory usage within expected range Cold Start Time
✅ Cold start within expected range Detailed ResultsGenerated by FerrisRBE Benchmark Suite 📊 View full details and artifacts |
- Invalidate corrupted cache (future timestamps, LTO conflicts) by bumping cache key to v2 - Add CARGO_BAZEL_REPIN=off to prevent dependency regeneration in CI - Fixes: error: options and are incompatible
Remove CARGO_BAZEL_REPIN: off from env - it was being interpreted as a package name instead of a boolean. The --@rules_rust//crate_universe:repin=off flag in .bazelrc ci config already handles this. Fixes: package ID specification 'off' did not match any packages
Previous builds with LTO left artifacts in external repos cache. Bumping to v3 to force complete rebuild without LTO flags. Fixes: error: options -C embed-bitcode=no and -C lto are incompatible
The root cause of the LTO incompatibility error was lto = 'fat' in Cargo.toml profile.release. rules_rust/crate_universe reads this and generates Bazel rules with LTO flags, which conflict with embed-bitcode=no. - Remove lto = 'fat' from Cargo.toml [profile.release] - Bump cache key to v4 to force regeneration of crate_universe rules Fixes: error: options -C embed-bitcode=no and -C lto are incompatible
Add issues: write permission to allow rustsec/audit-check to create issues when it detects unmaintained packages or vulnerabilities. Fixes: Resource not accessible by integration error
Instead of sacrificing performance by disabling LTO due to incompatibility with rules_rust defaults, properly enable ThinLTO through the official rules_rust setting. Changes: - Use --@rules_rust//rust/settings:lto=thin instead of -C lto=no - Keep opt-level=3, codegen-units=1, panic=abort for maximum optimization - Invalidate Bazel cache to v6 for clean build with LTO enabled This recovers the potential 5-15% performance loss from disabling LTO, keeping FerrisRBE truly the most optimized RBE server.
rules_rust defaults to embed-bitcode=no for faster builds, but LTO requires bitcode to be embedded in the rlibs. Add explicit flag to enable bitcode alongside ThinLTO setting. Also invalidate Bazel cache to v7 for clean build.
🚀 Container Performance Benchmark ResultsBenchmark Results Summary (Container Mode)Mode: light Memory Footprint (Container)
✅ Memory usage within expected range Cold Start Time (Container)
✅ Cold start within expected range Container StatisticsDetailed ResultsGenerated by FerrisRBE Benchmark Suite (Container Mode) 📊 View full details and artifacts
|
🚨 Performance Regression DetectedThis PR introduces performance regressions that exceed the acceptable thresholds. Benchmark Results
Thresholds Reference (Container Mode)
Next Steps
Benchmark run: 2026-03-02T00:49:47.047Z |
📊 Performance Comparison: PR vs Official Release📊 Performance Comparison: PR vs Official ReleaseContainer Images
Performance Metrics
Legend
Interpretation
Image Size Analysis
Comparison generated at: 2026-03-02 01:20:54 UTC |
…pt to support local service auto-detection and startup.
Clean up benchmark scripts by removing unused `output_name` parameter from `find_bazel_output()`, unused `OFFICIAL_IMAGE_TAG` constant, and ByteStream API support from CAS load test. These were remnants from earlier iterations that are no longer needed.
Description
Add comprehensive benchmarking infrastructure for Remote Build Execution (RBE) systems, including various load tests, environment configurations, and CI integration.
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
Test Configuration:
Checklist: