Currently we prioritise fast 2d (nuke) renders over 3d just by setting their priority at 100.
This doesn’t tend to be an issue - and that’s how we’ve been doing it since our farm was small.
We now have more machines and Id like to prioritise some as 2d, but pick up 3d when not busy - so that sounds like I should use pools right?
The main issues come from long 3d renders hogging slaves, and having to wait for them to finish - and this issue would still happen if I use pools as far as I can tell?
Maybe I would like jobs which are not in the priority pool to be interruptible…
I do like that now there is a percentage available with interruptible, maybe it could be even more clever, based on frame length? or % complete?
I’m just think aloud now
Originally we just thought - section off a pool of machine for 2d, but that just seems a waste when they could also render 3d !
The interruptible setting is job centric, not pool centric. So, if all the jobs which are currently “pool” assigned to be picked up by a particular slave have the “Job is Interruptible” setting enabled, then the slave will ditch its current render. Note, this can introduce high levels of wastage in the farm, in terms of efficiency. Careful and selective pool assignment helps here.
I guess I could at least use Interruptible a bit more efficiency when you bring in those extra controls.
Perhaps what I’m suggesting is, additionally to those % or time controls would be
“this job is interruptible if currently rendered by a slave in 2dpool”?
I understand the wasteage but it’s less waste than 2d machines sitting idle, and maybe better than 2d waiting for slow 3d.
Not sure!
Also on a similar topic, I have another suggestion that I would really like, and that is in job scheduling.
Currently I use “Priority, First-In First-Out” But that I would really like is “Priority, User, First-In First-Out”
So say there are 5 jobs on the farm, 3 for 1 user, 2 for another. If they’re all even priority, often it would make sense that the farm should be split between those users, rather than one user having to wait for the others jobs to finish.
This isn’t practical when you don’t have many machines, but when you have say 4 people submitting and 50+ machines I think it could work well. I’ve used a similar system elsewhere.
All jobs are made to be interruptible, but only slaves 1, 2, 4, 5 will be considering picking up 2D jobs in the first place.
re: “Priority, User, First-In First-Out”
You could name your “pools” as your “user” names and use the job scheduling order: “Priority, Pool, First-In First-Out”
So Simon submits jobs to the “Simon” pool. Slave1 has assigned pools = “Simon”, “Mike”, “Dave”, picking up Simon’s jobs first, before then considering Mike, and then Dave. Slave2 has assigned pools = “Mike”, “Dave”, “2Dpool” as it will pick up 2D comp jobs when there are no Mike or Dave jobs to do.