Here's a small illustration of my question:
Assume a build job that consists of 4 independent tasks named A-D. D takes longer than A-C do in sum.
A build system that cannot incorporate the relative task times might schedule the tasks like this:
---------------------------------------
CPU1: A | C |
---------------------------------------
CPU2: B | D |
---------------------------------------
In contrast, if the scheduler is aware of the task time differences, it could come up with this much shorter schedule:
---------------------------------------
CPU1: A | B | C |
---------------------------------------
CPU2: D |
---------------------------------------
My questions:
- Are there any build systems that incorporate relative expected task times into the schedule?
- What academic research into build systems of this kind exists?
- Where do these build systems (if they exist) take the time information from? Heuristics, timings collected during previous builds?
- If such build systems do not exist, why? Is there a gotcha that would make them less worthwile than they appear at first glance?