From: Greg Ercolano <erco@(email surpressed)>
Subject: Render time calculator..
   Date: Fri, 27 Oct 2006 17:22:39 -0400
Msg# 1414
View Complete Thread (1 article) | All Threads
Last Next
Here's a fun little render time calculator script..
http://seriss.com/rush-current/examples/calc-render-time-pl.txt

Given a jobid and optional time-per-frame, it shows how long
that job will take for various dedicated cpu allocations.

Mainly for resource managers and TDs, it answers the question:

    How long will it take to render my job
    if I dedicate N cpus to it?

...showing all iterations of N that makes sense, with redundancies removed.

Example.
--------------------------------------------------------------------------
If I tell it to work on jobid 'tahoe.34' (which has 50 Que'd frames),
and tell it the frames take 5 hours per frame:

    calc-render-time.pl tahoe.34 05:00:00
                        -------- --------
                        Jobid    Time-per-frame in HH:MM:SS

    Then it will show this report:

#Cpus  Estimated Completion
-----  ----------------------------------
1      250:00:00 (Mon Nov  6  3:12:49 2006)   <-- how long the job takes on 1 proc
2      125:00:00 (Tue Oct 31 22:12:49 2006)   <-- how long it takes on 2 procs
3      85:00:00 (Mon Oct 30  6:12:49 2006)    <-- how long on 3 procs
4      65:00:00 (Sun Oct 29 10:12:49 2006)
5      50:00:00 (Sat Oct 28 20:12:49 2006)
6      45:00:00 (Sat Oct 28 15:12:49 2006)
7      40:00:00 (Sat Oct 28 10:12:49 2006)
8      35:00:00 (Sat Oct 28  5:12:49 2006)
9      30:00:00 (Sat Oct 28  0:12:49 2006)
10     25:00:00 (Fri Oct 27 19:12:49 2006)    <-- how long it takes on 10|11|12 procs
13     20:00:00 (Fri Oct 27 14:12:49 2006)    <-- how long it takes on 13 - 16 procs
17     15:00:00 (Fri Oct 27  9:12:49 2006)
25     10:00:00 (Fri Oct 27  4:12:49 2006)
50     05:00:00 (Thu Oct 26 23:12:49 2006)    <-- max number of procs (more won't go faster)

The first line indicates how long the job will take if given
1 dedicated cpu to render with. (ie. 50 x 5 hours = 250hrs)

The second line indicates how long the job will take if given
2 dedicated cpus. (ie. 50 / 2 x 5 hours = 125 hours)

...and so on. Note it skips cpus where the completion time
would be the same. ie. in this particular job, it doesn't
matter if 10 cpus or 11 cpus are dedicated to it, the completion
time would be the same (in a "perfect" world).
--------------------------------------------------------------------------

Note the script does NOT take into account cpu availability,
priority, or anything like that. It just gives estimates based
on *dedicated* cpu allocations.

The formula is simple, and is basically:

    cpu_blocks = # frames to go / cpus_dedicated_to_job
    est_time   = cpu_blocks * time_per_frame;

And it just runs through all the possible cpus dedicated,
from 1 on up, printing the relevant boundaries where it
would make a difference in total render time.

I haven't fully tested this script for errors, feel free to follow up
here with problems or fixes.

Last Next