Hi.
We’re having some render architecture growing pains in the studio and one of the major problems we’re faced with is file server overload. Because of the way CIFS clients and the 3DS Max renderer behave our central file server cluster is (not surprisingly) bogging down somewhat when dozens of render nodes simultaneously start loading heavy Max scenes.
Since we’re not likely to expand our server capacity again in the immediate future we need to start looking into ways to make the render farm work more effectively with our available file server capacity. The approach I’d like to take is to reduce the amount of render-time network file I/O by the slaves by packaging all data for a render into a single large compressed file and distributing that ‘virally’ among the render slaves either through a system such as bit torrent.
I implemented a similar system for a previous studio that was confronted with significant file server limitations. To make it work I programmed the rendering system to enable multiple stage render jobs where:
- The artist submitted their scene to the farm.
- The scene render ‘manager’ process created a scene prep job that localized the referenced scene objects and re-pathed file references (textures, etc).
- The manager process then created a data prep job that constructed a render data package for the scene.
- When the data package was ready the manager created the necessary render tasks. Each render task included data management wrapper code that obtained and unpacked the render data package on the render node then cleaned up after the render completed.
- When all renders completed the manager then performed high level cleanup and render data reporting tasks.
By re-targeting the render data reference paths to the local drive and limiting the central file server data access by the farm to far fewer, larger files we were able to greatly reduce the strain on the servers without slowing individual scene completion times unacceptably.
What I need to know is would it be possible to configure ‘chained’ jobs in Deadline to enable a render process composed of serial, dependant jobs with one or more tasks each? Or would it be necessary to build a render management layer on top of Deadline, have users submit renders to that system, and have it in turn use Deadline as a lower-level job/task management utility?
Thanks,
Sean