005a7f77

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Start the most expensive mutation groups first

A group waits for a slot, so the order the groups are handed to the runner in
is the order they get one, and that order is the manifest's. The groups of a
run differ by orders of magnitude, because a group costs whatever the covering
tests it runs cost: most are about a second and a few are minutes. One of those
few, handed over last, holds a slot while every other slot stands idle, so a
run that is finished in all but name ends with a single child and a quiet
machine.

Handing them over most expensive first leaves that child in the middle of the
run, where the others still have work to do beside it. The cost it sorts by is
what the covering tests cost on their own, which is what the per-mutation
budgets are derived from as well, and it is an estimate either way: a mutation
stops at the test that kills it, and which test that is is not known until it
has run. Nothing but the order children start in depends on it, so an estimate
is enough, and the index each group is reported under travels with it.
GitHub

Total

4m54s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 19s 1s 1s 21s 19s
Eval 1m13s 4m00s 4m00s 5m14s 2m52s
Build - - - - -
Suite 19s 4m02s 4m54s 5m14s 3m12s

Timeline

Config Eval Failed Retried Compressed gap
0s20s1m20s1m40s2m2m20s2m40s3m3m20s3m40s4m4m20s4m40s5m