|
Priority Description |
Priority values are in the range 1-999. Values outside this range cause an error. Priority values are generally specified in the 'cpus' command, such as:
cpus tahoe=1@100 Both of the above are equivalent, asking for one cpu on tahoe at 100 priority. (If the number of cpus is not specified, '1' is the default). Jobs contend for cpus based primarily on priority. When priority values are equal, the system uses a round robin scheme as 'first come, first served'. Priority values are 'relative'. If all other jobs on the network are 100 but your job is 101, it will always win battles for an idle cpu. (Making your job 200 priority will not make it execute any quicker.) When priority values differ, cpus are arbitrated using these rules:
In addition to the above, 'priority flags' may be appended to the priority values. (eg. 100k, 100a, 100ka). These flags augment the above behavior in the following ways:
Priority flags are normally used separately, but can be combined (e.g., 100ka) to create the situation known as 'Kick Ass' mode.
Here are some example situations to demonstrate the above rules.
|
|||||||
Priority Staircasing |
____________________________________________________________________________ | | | +any=5@800k | P 200-| _________ | r | | | | | | | | i | | | | | | | +any=10@100 | o 100-| | | | | | |_________________ | r | | | | | | | | | | | | | | | | | i | | | | | | | | | | | | | | | | +any=20@1 | t 1-| | | | | | | | | | | | | | | |_______________________________________ | y | |_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_| | | | |____________________________________________________________________________| | | | | 0 5 15 35 C p u sMost companies find they only need two specifications per job; a high priority request for cpus (+any=5@800k) and a low priority request (+any=20@1). This way, if someone else submits with similar priorities, they will bump the other guys low priority cpus. This ensures everyone gets at least 2 high priority cpus. The only problem is if the network is completely saturated with high priority frames, in which case you're probably needing more machines. There are basically two ways to use "staircased" priorities; 'Passive' and 'Aggressive'.
Staircased Priorities: PassiveIf everyone submits with:+any=2@800 +any=50@1..then they'll all get at least =2 cpus @800 high priority, and the rest up to =50 procs @1 low priority. The idea here is each job asks for any 2 processors at high priority, and the rest at low. But if the network is saturated with jobs, then a new guy submitting won't be able to get a frame running until one of the running frames finish. If the renders are long, that might be a while to wait.
Staircased Priorities: AggressiveA more aggressive job wouldn't want to wait around for low priority frames to get done. They want the job to take those high priority frames right away. This is where the 'k' flag becomes useful (Kill) on the high priority submission, so that it bumps lower priority frames out of the way, instead of waiting for them to finish, so the job can kick in those high priority frames without waiting. So instead, if everyone 'that's in a hurry' submits jobs with: +any=2@800k -- note the 'k' +any=50@1..then that ensures that if the network is mostly saturated with low priority renders, this new submit will bump at least two low priority renders to get a couple at high priority. Note that the above will only bump for two procs, the rest will wait in round robin. High priority renders won't bump other high priority renders (as long as the 'high' numbers are all 100k). Feel free to ask questions, but first check out the docs above to get an understanding of how the priority stuff works. You may find you want to increase or decrease the number after the '=' sign as needed. The priority numbers themselves are relativeistic; there's no magic about the numbers '100' or '1', they could be '499' and '500'. Just as long as the entire shop agrees on what numbers are considered 'high priority' and what numbers are considered 'low'. It is recommended to think of numbers above 99 as 'high', and 99 and lower as low. This is arbitrary from the software's point of view, since values are relativistic. But using these arbitrary values leaves some elbow room in both directions. All companies reserve 999k priority for 'it must go through' jobs. For instance, submitting a job with '+any=3@999k' will ensure 3 frames rendering as soon as the job is submitted. And of course, to 'take over' the entire network, nasty this would be: +any=100@999k, which would kill everything running (requing the frames of course) and pushing the current job through the pipe. |
||