Priority levels


Royal Render has different prioritiy levels.
Using the jobs priority 1-100 is not sufficient in most environments.
Therefore RR has multiple priority levels.

If you want to see all of these priority levels for a specific job, then you can select the job(s) in rrControl and execute menu Debug / Show "Send job to client?" decision  (Why is a job not send?  Compare priorities between jobs).




This is an overview about the priority levels in Royal Render:


Level

1. Exclusive Priority

2. Client config "Privilege for" 

3./4. Distribute clients (Average Level A/B)

5. Render Order

6. Job Priority Setting

Values to set or enter

  • Any of these types
    • Project
    • Render app
    • Renderer
    • User
    • Division
  • Client Count
  • Expire time


  • Any of these types
    • Project
    • Render app
    • Renderer
    • User
    • Division
  • Average between
    • None, just take job priority
    • Users
    • Render Apps
    • Projects
  • Any of these types
    • Project
    • Render app
    • Renderer
    • User
    • Division
  • rrJob: 1-100
  • rrConfig: "First-In First-Out"  / "Average"
  • rrConfig:  Crash: Reduction factor for all clients of the job
  • rrConfig:  Crash: Reduction factor for all clients of the job
  • rrConfig:  Priority boost of Preview Render
  • rrConfig:  Priority boost of pre/post/finished scripts

Example

  • Important deadline for project XY.
    ProjectXY gets highest priority on the farm until Monday.
  • Nuke gets at least 10 clients all the time.


  • Fastest Clients take ProjectXY
  • Clients with fast network take Nuke
  • Clients with high RAM take Houdini 
  • Workstations reject



  • All projects in the company get the same ammount of clients.
    This ends the "priority war" (Every artist tends to slowly increase its priority until all jobs use 99. And all complain about the prio of other projects)
  • Houdini (simulation, usd generation) is more important than rendering .usd files.
  • Nuke is more important than Maya
  • Jobs with division "Turntable" have a lower prio than jobs with division "Production Render"



Render Order

The settings in this section influence the decision which job is send to a client first.

There are multiple priority levels in Royal Render.

You can view the priority of a job if you select jobs and clients in rrControl and execute Debug Menu/ Show "Send job to Client?" decision.


Level 1. Exclusive Priority

Projects with Exclusive Priority will be send first, no matter the jobs priority itself.

You can set a limit for the number of clients. If this project/user/app has reached this many clients, then it does not have any further Exclusive Priority on all other clients.

Note that this limit affects the "Exclusive Priority" only. 
Which means these jobs can still get more clients according to the lower priority levels.


Level 2. Client config "Privilege for" 



Clients privileged for a job type take these jobs first.


"Privileged" and "Job Priority" explained as real-world scenario:

Multiple customer/clients are asking your company to do some animation.

One client is Disney, the other client the bakery around the corner.

The bakery tells you the commercial is very urgent and wants to have it done next week.

Disney is your privileged client, therefore you take their project first.
Alghough the commercial has a very high priority for the bakery, your priority is "Disney first".



Privilege jobs of artist/user logged in

If you enable this setting, then you automatically add the name of the user logged in on a workstation to the privileged jobs of that client.

This mean as long as user X is logged in on the client, the client will take jobs of user X first.


Abort jobs on privileged clients

If you have set a project/user/app as privileged in the configuration of the client, then a client will take this kind of job first.

But only the next time the client ask for a job.

If you enable this setting, then the rrServer will abort any non-privileged jobs on that client if you send a new privileged job.





Level 3.+4. Distribute Clients, Average Level A + B


You can average all clients between projects, users or render applications.

Each project/user/app will get the same amount of clients.


You can set priority limits for the averaging, an upper and a lower limit.

Upper Priority    81-99

Averaging is not applied for jobs with this priority.

If you have a very important job that should take all clients, give this job a priority higher than the upper limit. 

Averaging Priority 21-80

If jobs have their priority inside this range, then the clients are averaged between the project/user/app.

As long as they are in this range, a project/user/app can set any priority.

This priority will only have an effect between jobs of this project/user/app.

For example Project A has set all jobs to priority 75, Project B has set all jobs to priority 50. Both projects get the same amount of client as all jobs are in the averaging priority range.

Lower Priority   0-20

Averaging is not applied for jobs with this priority.

These are jobs that are not important. E.g. if an artists wants to do some tests.

If he would have set the jobs priority inside the Averaging Priority range then we would get the same amount of clients as all other projects.

But this is an unimportant job that should render after all other projects have rendered their jobs.




Av. level A/B Allow Server to abort clients to average them every x hours

The server can only influence the client averaging if a client asks for a job.

This means the client has to finish its current segment of frames it got.


Example without abort: Project A has high render times, 5h per frame. The farm is empty.

The project has send a job in the morning. All clients take this job and get 2 frames to render.

After lunch Project B sends some jobs. But all clients are busy rendering 2 frames in 10h. 

They will not ask for a new job before they are not finished with these 2 frames.

Project B does not get any client until the evening.

With abort:

Same example as above, but you have set the abort to every 3 hours.

Project Bs jobs have been send after lunch, so the next 3 hour step is at 15:00. 

At 15:00 the server recognizes that Project B should have the same amount of clients as Project A.

The server aborts half of the clients. (You loose some render time on these clients)

The free clients ask for a new job and get the job of Project B.


Avoid high render times:

As you can see very high render times are not very good for averaging. 

As you either loose render time or the other projects have to wait long.

You might want to use the Tile Frame job option if you have very high render times.




Level 5. Render Order


You can tell RR which render app, project or division has a higher priority than other jobs.
For example CreateUSD has a higher priority than USD render.
Or Maya has a higher priority than Nuke.

Please see next tab for "Render Divisions".
They allow you to add custom job flags than can be used in here.
e.g. "Turntable" or "ProductionRender"



Level 6. rrJob Priority Setting


After all clients have been averaged between projects/users/apps, 

you can decide how clients should be distributed between the jobs of one project/user/app.

First In - First Out

The first job that you have send gets all clients

Average between jobs

If you have multiple jobs with the same priority, then all jobs get the same amount of clients.



Reduction factor if a job crashed (all clients of the job):

If a job crashed on any client, it will get a slightly lower priority for each crash.

This affects all clients that are assigned to the job


Reduction factor if a job crashed (only for the client that crashed):

If a job crashed on client X, then the job will get a slightly lower priority if client X asks for a job.



Priority boost of Preview Render status

If a job is in Preview state, then it has a slightly higher priority.

This is required as the artist should get some previews of all jobs very fast before all jobs render.

See Preview Render for more information


Priority boost of pre/ post/ finished scripts

If a job is in and of the script states (pre, post or finished) state, then it has a slightly higher priority.

The script execution is usually fast and should be done right after e.g. a job was approved.





Render Divisions

Render Divisions are custom names you can specify.
You can use them in any of the priority levels.


The division of a job can be change in the rrSubmitter or rrControl.