[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3666] trunk/py/scripts/tools/bi_farm: Renderfarm: show ETA for job
Sergey Sharybin
sergey.vfx at gmail.com
Sat Aug 4 11:30:39 CEST 2012
Revision: 3666
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3666
Author: nazgul
Date: 2012-08-04 09:30:38 +0000 (Sat, 04 Aug 2012)
Log Message:
-----------
Renderfarm: show ETA for job
This time is average time which is needed to finish
rendering current job (without taking other jobs render
time into account), which is:
average time * remained frames / number of slaves
Modified Paths:
--------------
trunk/py/scripts/tools/bi_farm/master_ui.py
trunk/py/scripts/tools/bi_farm/new_master.py
Modified: trunk/py/scripts/tools/bi_farm/master_ui.py
===================================================================
--- trunk/py/scripts/tools/bi_farm/master_ui.py 2012-08-03 23:42:41 UTC (rev 3665)
+++ trunk/py/scripts/tools/bi_farm/master_ui.py 2012-08-04 09:30:38 UTC (rev 3666)
@@ -97,6 +97,8 @@
self.step = step
self.order = 'SEQUENTIAL'
self.processor = processor
+ self.image_done = 0
+ self.image_tot = 0
@staticmethod
def find(id):
@@ -223,15 +225,41 @@
Job.dump()
+def get_slave_count_for_job(job):
+ count = 0
+
+ if job.processor == 'CUDA':
+ for slave in SLAVES:
+ if slave.enabled and slave.is_cuda:
+ count += 1
+ else:
+ for slave in SLAVES:
+ if slave.enabled:
+ count += 1
+
+ return count
+
def job_set_stats(job):
import exr_header_collate
render_times = exr_header_collate.render_times(job.id)
if render_times:
time_avg, time_min, time_max = render_times
- time_avg = str(datetime.timedelta(0, round(time_avg)))
- time_max = str(datetime.timedelta(0, round(time_max)))
- job.stats = time_avg + " avg, " + time_max + " max"
+ time_avg_str = str(datetime.timedelta(0, round(time_avg)))
+ time_max_str = str(datetime.timedelta(0, round(time_max)))
+ stats = time_avg_str + " avg, " + time_max_str + " max"
+
+ # ETA
+ remain = job.image_tot - job.image_done
+ slave_count = get_slave_count_for_job(job)
+
+ if remain != 0 and slave_count != 0:
+ time_eta = remain * time_avg / slave_count
+ time_eta_str = str(datetime.timedelta(0, round(time_eta)))
+ stats += ', ' + time_eta_str + ' ETA'
+
+ job.stats = stats
+
############################ Slaves ########################
Modified: trunk/py/scripts/tools/bi_farm/new_master.py
===================================================================
--- trunk/py/scripts/tools/bi_farm/new_master.py 2012-08-03 23:42:41 UTC (rev 3665)
+++ trunk/py/scripts/tools/bi_farm/new_master.py 2012-08-04 09:30:38 UTC (rev 3666)
@@ -207,6 +207,8 @@
else:
percentage = float(image_done) / float(image_tot)
job.progress = "%.0f%% (%d/%d)" % (100 * percentage, image_done, image_tot)
+ job.image_done = image_done
+ job.image_tot = image_tot
# update total progress
if total_tot == 0:
More information about the Bf-extensions-cvs
mailing list