Brian.
http://brian.moonspot.net
i think this is the wrong question. i would optimize your encoding so
that each encoding process takes up as much of the processor as
possible. then i'd see if i could check how many jobs each worker has
queued.
ps - that didn't answer your question, i just figured i'd give you
something different to think about.
My solution has been to put more workers on the beefier machines and
less workers on the weaker machines. Works just fine.
This is incorrect. The round-robin algorithm forces jobs onto workers, even if they are not ready for it. Gearman will only send job to those workers who have specified they’re ready to work.
Gearman does not take the worker’s CPU into consideration when distributing work. However, the workers with better CPUs should complete the jobs faster and therefore grab jobs more often.
If the server is favoring a worker, it’s most likely due to the RTT. When a job becomes available, the server will notify all waiting workers. The first to worker to grab the job from the server gets it. So if your system is favoring the slower machines, it’s likely due to the slower machines having a better RTT.