204de159

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

4m48s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 8s 1s 1s 9s 8s
Eval 2m54s 2m02s 2m02s 4m56s 3m46s
Build - - - - -
Suite 8s 2m03s 4m48s 4m56s 3m55s

Timeline

Config Eval Failed Retried Compressed gap
0s3m3m10s3m20s3m30s3m40s3m50s4m4m10s4m20s4m30s4m40s4m50s