we do it this way:
On the slaves we set the Concurrent Task limit override. Every slave has a task limit set*.
Then when jobs are submitted to the farm, based on the job type they are have a max concurreny and or gpu’s set.
the wranglers will then change a job based on if it is heavier or lighter than the default settings.
Concurrency is good and bad.
We use it when we are dealing with common resources, we cache all the assets, dependancies of aid asset locally to the machine, having to only deal with that once as the job starts up , instead of each task, saves us time.
Concurrency is also good if you want to run the same tasks of a job on the same machine, but you need to be wary of how much system resources are used.
We find having groups helps people utilize the resources better.
Also to explain a little better, we have a rule set that is defined for job types, so if an artist submits a job to the farm, based on what the job type is and what project it is , it will pick up its default values, which might mean, we know this type is heavy, its going to run 1 concurrency with all 4 available gpu’s vs a lighter job type, that will run with 4 concurrency and 1 gpu per task. which means 4 tasks, with one gpu each.
If the job is heavier than what was expected, then the wranglers will change the job so it fits in the new criteria.
Ultimately, we dont allow people to choose there own concurrency, gpu’s , pools and groups.
That makes the difference in using the most of the resources.
*By having every slave with a task limit, it allows, during over utilization, for jobs that would use more concurrency if available , it allows them to slide easily onto a free slave, that has only one or 2 concurrency set.
I would make it so jobs that are sent that use a gpu, either the concurrency options given to the artist, are limited, or have an event that parses new jobs , if its a gpu job, change the job concurrency to match the concurreny the machine will do based on the amount of gpu’s selected.
https://docs.thinkboxsoftware.com/products/deadline/10.0/1_User%20Manual/manual/event-plugins.html#job-event-callbacks
i would write it for the OnJobSubmitted event, that way you catch it before it allows the tasks to dequeu.
hope that helps.
Kym
Edit: im really happy i got to respond to this, got to seet hat the slave concurrency settings that we had, managed to not get deployed to our new 10.0.20 server.