[Closed] Storing Render Times from a Render Farm
Hi All,
I have been asked to look into a program that records to a text file the time that a job took to render when it was sent out to the render farm. The idea being that at the end of the week we can compare how long various jobs took, and also how many hours the render farm was active for.
I dont really know where to start. Could this be done through a post render script that accesses the network job, and uses <job>.timeStarted and <job>.timeFinushed to calculate the render time. Or should I register a postRender callback on all the render nodes? And if I did use the postrender callback would it still be possible to access the job details of the job that had been sent to it? I ma guessing yes, through checking the server handles on the manager to see which job had been sent to that renderer…
Do postrender callbacks work on render nodes that are just sent network jobs? My first experiments were to just get a messagebox to display on a rendernode at the end of the render, and they failed!
If anyone has any experience of this, and could point me in the right direction then it would be a massive help.
Thanks for your time,
Rich
#preRender and #postRender (might want some #postRenderFrame bits as well to get the per-frame time) should work just fine; firing the values out to a text file should be easy as well.
Alternatively, you could use a maxscript to interface with backburner itself and get the job times for given frames that way, using ((netJob.getFrameInfo N).elapsedTime / 1000.0) when the job’s status is complete.
The latter is more appropriate but a lot more finnicky to work with. The former does get you in trouble with the whole “so what file am I supposed to write out to, and how do I keep that in a central location” business; connecting to a database on the network might be better.
If you don’t particularly need to ‘track’ this in realtime, though, then why not just parse the backburner log file?
iThat’s where I get our render information from. When a job completes it finally updates the job xml file ( the xml is only occasionally updated by the BackBurner Manager ) It has all the information you need. I grab the actual xml document from the manager and parse that to get the data. You can even loop through the “\Network\jobs\” folder and just check the <Job><JobInfo><JobFlags><Complete> field of each xml and when it says “Yes”. Do your math and flag it as processed…
wouldn’t it be simpler to just record when the render is sent (to a text file as a pre-render script) and then afterwards compare with the rendered image files creation time?