You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: NEWS.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,10 @@
2
2
3
3
## Unreleased
4
4
5
+
- New: `--sharding` option to control how mutants are distributed across multiple machines, with choices of `slice` or `round-robin`.
6
+
7
+
- Changed: The default sharding strategy is now `slice`; previously it was `round-robin`. Sliced sharding gives each worker better locality of reference due to testing changes to related packages, but may make the runtime more uneven between workers if some packages are slower to test than others.
8
+
5
9
- Changed: Tree copying now attempts to use reflinks (copy-on-write) for faster copying on supported filesystems (Btrfs, XFS, APFS), with automatic fallback to regular copying.
6
10
7
11
- Book: Recommend using the `-Zunstable-options --fail-fast` argument to test targets to speed up mutation testing, on recent nightly toolchains.
Copy file name to clipboardExpand all lines: book/src/shards.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,14 @@ Note that the number of shards is set to match the `/8` in the `--shard` argumen
33
33
34
34
[Sharding works with `--baseline=skip`](baseline.md), to avoid the cost of running the baseline on every shard. But, if you do this, then you must ensure that the tests suite is passing in the baseline, for example by checking it in a previous CI step.
35
35
36
+
## Sharding algorithm
37
+
38
+
The `--sharding` command line and config option controls the algorithm by which mutants are distributed across shards.
39
+
40
+
*`slice` (the default): The first `n / k` mutants are assigned to shard 0, and so on. Because each shard successively builds related versions of the code, incremental builds may be faster, particularly in trees with many packages.
41
+
42
+
*`round-robin`: Mutant `i` is assigned to shard `i % n`. This distributes the mutants evenly across shards and is likely to cause shards to finish at similar times.
0 commit comments