f32a1dbb

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.

Total

2h05m15s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 16m56s 0s 0s 16m57s 16m56s
Eval 19m04s 12s 12s 19m16s 2m06s
Build 19m16s 1m23s 2h02m40s 2h21m57s 2h01m50s
Deploy 2h21m57s 14s 14s 2h22m12s 0s
Suite 16m56s 1m51s 2h05m15s 2h22m12s 2h20m54s

Timeline

Config Eval Build Deploy Compressed gap
0s19m10s2h21m2h21m2h21m2h21m2h21m2h22m2h22m