You're rendering an animation using Backburner and you notice that all the machines seem to wait for a particular machine before they finish their frame and request a new one.
There isn't any logic why a render wouldn't complete before the next one can start: each Backburner server machine renders a frame or a number of frames (when task blocking is set in the advanced options, depending on the performance of the machine a certain number of frames are allocated per server). There shouldn't be any dependencies between the servers.
One thing that could cause this is when you also running a Backburner server on the machine on which you're running the Backburner manager. The machine could be so busy rendering that it doesn't get to sending another job to the other machines. Once it's finished rendering the frame it will send the jobs out.
Another thing would be if you're saving the render output on a machine that's also running a Backburner server. The same thing as in the previous example could happen there: the machine is just too busy rendering so it won't save the image files until it's finished rendering the frame.
In a scenario where the slowest machine runs the Backburner manager or is used to store the render output you could have most of your render farm sitting idle most of the time. Even if it's the fastest machine this could have an impact as it's unlikely that the other machines finish rendering at the point in time where it finishes rendering.
So how bad could it be? Let's render 100 frames, the render farm has one slow machine that renders a frame in five minutes and two fast machines that render the frame in one minute.
1. in the ideal situation the slow machine renders 9 frames [100*1/(1+5+5)] and the fast machines each render 45 and 46 frames [100*5/(1+5+5)] and it therefore takes 46 minutes the render the animation.
2. if the slowest machine hold the others back it gets a lot worse: now it takes five minutes per frame on all three machines and they render 33, 33 and 34 frame. So in the worst possible case the slowest machine is the one that renders 34 frames: 2 hours 50 minutes!
3. if one of the fast machines is holding back the others that means they will wait a full minute per frame (i'm asuming worst case: they're done rendering a fraction of a second after the other machine starts rendering). So the second fast machine now takes two minute to render the frame and the slow machine six minutes. The fast machine renders 60 frames [100*12/(2+6+12)], the fast one that's held back renders 30 frames [100*6/(2+6+12)] and the slow machine 10 frames [100*2/(2+6+12)]. And it takes an hour to render. If you a bit more optimistic and say that on average they wait 30 seconds it will take 54 minutes to render.
Ways to make sure this doesn't happen
Without diving into the problerm you could just stop the Backburner server (or server service) on the machine they're all waiting for, that will probably be faster already.
A better approach will be to make sure that you:
- run the Backburner manager on a machine that doesn't also runs a Backburner server
- and saves file to a fileserver that doesn't run a Backburner server.