ci: shard Rust coverage tests - #8079
Merged
Merged
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Xuanwo
marked this pull request as ready for review
July 29, 2026 20:40
LuQQiu
approved these changes
Jul 29, 2026
geruh
approved these changes
Jul 29, 2026
| cargo +nightly-2026-07-13 llvm-cov nextest \ | ||
| --no-report \ | ||
| --archive-file coverage-artifacts/rust-coverage-tests.tar.zst \ | ||
| --partition slice:${{ matrix.shard }}/3 |
Contributor
There was a problem hiding this comment.
Are you using 3 here for the job count we can use strategy.job-total instead: https://docs.github.com/en/actions/reference/workflows-and-actions/contexts?ref=cloud-tech-simplified&utm_source=chatgpt.com#strategy-context
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rust PR CI's warm-cache Linux coverage job has a 34:04 critical path. In the reference run, the
Run testsstep took 32:42: compilation accounted for about 3:51, while serial test-binary execution consumed roughly 29 minutes, led bylanceat about 18 minutes andlance-encodingat about 7 minutes.This change builds the canonical
ci-profile coverage binaries once, fans the archived tests out across three Linux runners, merges each shard's coverage profile before transfer, and produces the existing single Codecov report in the finallinux-buildcheck. It preserves the coverage optimization level and required check name while moving serial test execution off the critical path.Benchmark
The same-SHA serial controls reached the final
lance-linalgtest binary at 36:14 and 37:31, then hit the same two existing randomized f16 property-test failures. The successful historical warm run is therefore the primary speed baseline; the same-SHA controls provide conservative lower bounds rather than successful end-to-end samples.Coverage was compared from the same instrumented archive with three shards versus one unsharded nextest job. Both reports contain exactly 531 files, 334,985 line mappings, and 655,891 segment denominators, with zero missing or changed denominators. The sharded report covered 11 more segments (89.2064% versus 89.2048%, +0.0017 percentage points), smaller than the observed 44-segment variation between two sharded runs.
Aggregate final-head work was 30:54 on 8x runners plus 2:27 on a standard runner, versus 34:04 on one 8x runner for the reference. The speedup comes from parallelism without increasing aggregate large-runner time. The main tradeoff is a 1.49 GB test archive and roughly 1–2 minutes of artifact transfer per stage; artifacts are retained for one day.
Evidence: successful warm reference, cold and warm sharded runs, same-archive coverage validation, and successful final-head workflow.