Deadline Documentation
RSS< Twitter< etc

Pools and Groups


What Are Pools and Groups

Groups can be used to organize your farm based on machine configurations (specs, installed software, etc). For example, if you have a 64 bit machine with 3ds Max installed, you could assign it to groups like 3dsmax, or 3dsmax_64, or simply 3D. The Groups have no impact on the order in which jobs are rendered, they just help to ensure that your job renders on the machines you want it to. If you don't care about grouping your machines, just use the default none group.

Pools are similar to groups, except that they are priority based and affect the order in which jobs are rendered. Because of this, it's encouraged to use pools for prioritizing shows, shots, etc. If you don't want to set up pools on your farm, you can use the default 'none' pool. Note that the 'none' pool always has the least priority of all the pools.

Managing Pools and Groups

Groups and pools can be managed from the Deadline Monitor while in Super User mode. Just select Tools -> Manage Groups or Tools -> Manage Pools to open the appropriate dialog. Here, you will find two tabs.

Manage Pools and Manage Groups Tab

From this tab you can add and remove pools or groups. You can also see which Slaves are in which groups or pools. Additionally, the Manage Pools tab will display a list of slaves that have the currently selected pool configured as their highest priority pool.

Manage Slaves and Manage Groups Tab

From this tab you can add and remove slaves to pools or groups.

  • Pools/Groups Filter list: Filters the "Select Slaves to Manage" list by the selected pools/groups. Two options affect the way the filter behaves:
    • Show/Hide: Whether the slaves belonging to the selected pools/groups are the ones to being or the ones being filtered out.
    • OR/AND/XOR: Defines how to filter if multiple pools/groups are selected.
      • OR: Filter by slaves in any one of the selected pools/groups.
      • AND: Filter by slaves that are in all of the selected pools/groups.
      • XOR: Filter by slaves in any one of the selected pools/groups but no others.
  • Select Slaves to Manage: Here you select the slave(s) that you would like to manage.
  • Operations: A group of operations that can be performed using the selected slaves and selected pools/groups. More operations are provided for pools that allow you to change their priority. Groups don't need these operations because they are not priority based.

Per Slave Modify Pools and Modify Groups Dialogs

Optionally, you can use the slave specific Modify Pools and Modify Groups dialogs to assign pools or groups to slaves. Right-click on one or more Slaves in the Slaves list in the Monitor while in Super User Mode and select Modify Pools or Modify Groups.

In the pools window, you can assign pools to a Slave in order of priority. For groups, the ordering has no affect.

Preventing Slaves From Rendering Jobs In The 'none' Pool or Group

In some cases, it may be useful to prevent one or more slaves from rendering jobs that are assigned to the 'none' pool or group. For example, you may have a single machine that you want to only render Quicktime jobs. Normally, you could add this machine to a 'quicktime' group, but if there are no Quicktime jobs, the slave could move on to jobs in the 'none' group. If you want this machine to only be available for Quicktime jobs, you can configure it to exclude jobs in the 'none' group.

The option to exclude jobs in the 'none' pool or group can be found in the Slave Settings in the Monitor.

Pools and Job Scheduling

How pools affect the job selection process is best explained through an example.

Say we need to render jobs for two shows, and we've already created corresponding pools for each show in Deadline:

  • show_a
  • show_b

Now say we have 10 machines in our render farm, and we want to give each show top priority on half the farm, but we don't want half the farm sitting idle when jobs for one show finish up.

First, we'll assign the pools to our slaves in the following order:

  • Slaves 0-4:
    1. show_a
  • Slaves 5-9:
    1. show_b

If jobs for both shows are in the queue, then slaves 0-4 will give priority to show_a jobs, and slaves 5-9 will give priority to show_b jobs. This accomplishes our first goal of giving priority to both shows. However, with this configuration, slaves 0-4 will sit idle when there are no more show_a jobs. The same for slaves 5-9 when there are no show_b jobs.

To accomplish our second goal of not having half the farm sit idle, we'll assign the pools to our slaves in the following order:

  • Slaves 0-4:
    1. show_a
    2. show_b
  • Slaves 5-9:
    1. show_b
    2. show_a

Now, slaves 0-4 will give still give top priority to show_a jobs, and slaves 5-9 will still give top priority to show_b jobs. However, if show_a jobs finish up, slaves 0-4 will then start working on show_b jobs. Also, if show_b jobs finish up, slaves 5-9 will then start working on show_a jobs.

If all slaves are working on show_b jobs, and new show_a jobs get submitted, then slaves 0-4 will finish up their current task and move on to give the show_a jobs priority again.

Note that all slaves will render jobs that are submitting to the none pool. However, the slaves will only give priority to none jobs when jobs for all their assigned pools have finished rendering.