icecc / icecream

Distributed compiler with a central scheduler to share build load
GNU General Public License v2.0
1.6k stars 252 forks source link

Analog of distcc --randomize option? #539

Closed baybal closed 4 years ago

baybal commented 4 years ago

Hello,

I noticed that icecc scheduler doesn't seem to be using any round robin, or load randomisation, and loads hosts sequentially.

load pattern

Given that almost all modern CPUs throttle aggressively, I think it makes a lot of sense to maximise the use of "thermal mass" of the cluster.

llunak commented 4 years ago

Icecream is not distcc, it has a central scheduler that distributes jobs based on performance of nodes, so it doesn't need to use any simple distributing techniques like round-robin. And while it does load hosts sequentially, the sequence is ordered by host performance. Randomization would presumably just degrade performance. What perhaps would make sense would be to improve the scheduler to consider TDP, but that already happens to some extent (https://github.com/icecc/icecream/blob/master/scheduler/scheduler.cpp#L311). So this issue is already handled or void (unless you have specific improvements in mind, preferably in the form of a pull request).