DrQueue, the Open Source Distributed Render Queue

About DrQueue

Overview Diagram

In a generic way, DrQueue is tool to distribute tasks through a farm of networked computers. There is a queue of jobs that are composed by different number of tasks represented by numbers. (More on the architecture and theory on BasicTheory)

From the point of view of distributed rendering, those tasks usually represent frames, and the task number is also the frame number.

Thus, all frames composing the different jobs (using different job scripts) are queued awaiting to be assigned to a slave. Once assigned, the slave will execute the job script to produce the resulting frame. After that, the task will be marked as done and the slave will be freed to render other frames.

In case of a slave failure or script error, the master node will notice and requeue the frame again to be rendered by another slave.

Check the complete feature list and the list of some the companies and productions that use DrQueue as their render distribution tool.

DrQueue was also analized on extremetech some time ago http://www.extremetech.com/article2/0,1697,1847365,00.asp giving out this nice chart (outdated in features) and original image [http://common.ziffdavisinternet.com/util_get_image/10/0,1425,sz=1&i=104238,00.gif] at original page:

Suported rendering engines

As DrQueue jobs are script-based, it could virtually support any rendering engine.

But writting those scripts is not always fun, so DrQueue includes script generators that will create automagically scripts for all major 3d tools including: Blender, Maya, Softimage XSI, Lightwave, Mental Ray and Houdini. Check the list of supported renderers for a complete list of them.

Supported platforms and operating systems

DrQueue runs on Linux, MacOS X, Irix, FreeBSD and Windows. (Supported platforms)

Notes on supported engines and platforms

Due to the high number of combinations with operating systems, architectures, type and version of rendering engines... I have no way to assure that every new release will keep working on every system, so if you find any problem please report it.

Just be aware that most of the issues that'll find are related with the jobscripts and their script generator templates. Like different command line arguments, paths, names of executables, etc.

Of course, if the problem appears at compilation time and it's not a missing dependency or alike, remember the part of "most of the issues" of the previous paragraph.

Pythonic Powers

You can find graphical examples on this page.

DrQueue includes python bindings that provide you with a complete set of calls, object and data types to create all kind of tools, clients, interfaces, daemons or whatever you might need that can't be found on the main distribution.

Information and examples on their usage are available at the python bindings howto.

Letting the imagination fly a bit, I'll dare to list some of what I think could be useful tools for a production and be written easily that way:

  • small daemon that enables or disables computers or reprioritizes jobs based on other production related needs, whatever they could be.
  • corrupted or incomplete frame check, that goes through the rendered images and requeues (with higher priority if needed) any wrong one.
  • specialized and small GUI providing just what the user might need, keeping out all features not needed or that should be available or set by some other department or supervisor.
  • job or slave log analyzer that could react in a customized way depending on those file contents.
  • daemon that creates small preview flipbooks of animations. Those could be available to the 3d artist herself as well as stored for historic or production reasons. Also made available to the supervisor to see the evolution of that shot and ease decissions like reverting back to some older and better one.
  • or even mix them all and take over the world.
  • ... many others (edit this page and add your idea to the list) ...

Related: JobScripts, SomeDrQueueUsers, PythonBindingsHowto

Attachments