[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23462] trunk/blender/release/io/netrender : netrender: usage based balancer.

Martin Poirier theeth at yahoo.com
Thu Sep 24 23:05:55 CEST 2009


Revision: 23462
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23462
Author:   theeth
Date:     2009-09-24 23:05:54 +0200 (Thu, 24 Sep 2009)

Log Message:
-----------
netrender: usage based balancer. more useful than credits

Modified Paths:
--------------
    trunk/blender/release/io/netrender/balancing.py
    trunk/blender/release/io/netrender/master.py
    trunk/blender/release/io/netrender/master_html.py
    trunk/blender/release/io/netrender/model.py

Modified: trunk/blender/release/io/netrender/balancing.py
===================================================================
--- trunk/blender/release/io/netrender/balancing.py	2009-09-24 20:20:43 UTC (rev 23461)
+++ trunk/blender/release/io/netrender/balancing.py	2009-09-24 21:05:54 UTC (rev 23462)
@@ -64,8 +64,14 @@
 
 class RatingCredit(RatingRule):
 	def rate(self, job):
-		return -job.credits * job.priority # more credit is better (sort at first in list)
+		# more credit is better (sort at first in list)
+		return -job.credits * job.priority
 
+class RatingUsage(RatingRule):
+	def rate(self, job):
+		# less usage is better
+		return job.usage / job.priority
+
 class NewJobPriority(PriorityRule):
 	def __init__(self, limit = 1):
 		self.limit = limit

Modified: trunk/blender/release/io/netrender/master.py
===================================================================
--- trunk/blender/release/io/netrender/master.py	2009-09-24 20:20:43 UTC (rev 23461)
+++ trunk/blender/release/io/netrender/master.py	2009-09-24 21:05:54 UTC (rev 23462)
@@ -45,12 +45,12 @@
 		self.frames = []
 		self.chunks = chunks
 		self.priority = priority
+		self.usage = 0.0
 		self.credits = credits
 		self.blacklist = blacklist
 		self.last_dispatched = time.time()
 	
 		# special server properties
-		self.usage = 0.0
 		self.last_update = 0
 		self.save_path = ""
 		self.files_map = {path: MRenderFile(path, start, end) for path, start, end in files}
@@ -603,9 +603,10 @@
 		self.first_usage = True
 		
 		self.balancer = netrender.balancing.Balancer()
-		self.balancer.addRule(netrender.balancing.RatingCredit())
+		#self.balancer.addRule(netrender.balancing.RatingCredit())
+		self.balancer.addRule(netrender.balancing.RatingUsage())
 		self.balancer.addException(netrender.balancing.ExcludeQueuedEmptyJob())
-		self.balancer.addException(netrender.balancing.ExcludeSlavesLimit(self.countJobs, self.countSlaves))
+		self.balancer.addException(netrender.balancing.ExcludeSlavesLimit(self.countJobs, self.countSlaves, limit = 0.9))
 		self.balancer.addPriority(netrender.balancing.NewJobPriority())
 		self.balancer.addPriority(netrender.balancing.MinimumTimeBetweenDispatchPriority(limit = 2))
 		

Modified: trunk/blender/release/io/netrender/master_html.py
===================================================================
--- trunk/blender/release/io/netrender/master_html.py	2009-09-24 20:20:43 UTC (rev 23461)
+++ trunk/blender/release/io/netrender/master_html.py	2009-09-24 21:05:54 UTC (rev 23462)
@@ -52,22 +52,36 @@
 		output("<h2>Jobs</h2>")
 		
 		startTable()
-		headerTable("name", "credits", "usage", "time since last", "length", "done", "dispatched", "error", "priority", "exception")
+		headerTable(	
+									"name",
+									"priority",
+									"credits",
+									"usage",
+									"wait",
+									"length",
+									"done",
+									"dispatched",
+									"error",
+									"first",
+									"exception"
+								)
 
 		handler.server.update()
 		
 		for job in handler.server.jobs:
 			results = job.framesStatus()
-			rowTable(	link(job.name, "/html/job" + job.id),
+			rowTable(	
+								link(job.name, "/html/job" + job.id),
+								job.priority,
 								round(job.credits, 1),
 								"%0.1f%%" % (job.usage * 100),
-								int(time.time() - job.last_dispatched),
+								"%is" % int(time.time() - job.last_dispatched),
 								len(job),
 								results[DONE],
 								results[DISPATCHED],
 								results[ERROR],
 								handler.server.balancer.applyPriorities(job), handler.server.balancer.applyExceptions(job)
-								)
+							)
 		
 		endTable()
 		

Modified: trunk/blender/release/io/netrender/model.py
===================================================================
--- trunk/blender/release/io/netrender/model.py	2009-09-24 20:20:43 UTC (rev 23461)
+++ trunk/blender/release/io/netrender/model.py	2009-09-24 21:05:54 UTC (rev 23462)
@@ -81,6 +81,7 @@
 		self.chunks = 0
 		self.priority = 0
 		self.credits = 0
+		self.usage = 0.0
 		self.blacklist = []
 		self.last_dispatched = 0.0
 	
@@ -143,6 +144,7 @@
 							"frames": [f.serialize() for f in self.frames if not frames or f in frames],
 							"chunks": self.chunks,
 							"priority": self.priority,
+							"usage": self.usage,
 							"credits": self.credits,
 							"blacklist": self.blacklist,
 							"last_dispatched": self.last_dispatched
@@ -160,6 +162,7 @@
 		job.frames = [RenderFrame.materialize(f) for f in data["frames"]]
 		job.chunks = data["chunks"]
 		job.priority = data["priority"]
+		job.usage = data["usage"]
 		job.credits = data["credits"]
 		job.blacklist = data["blacklist"]
 		job.last_dispatched = data["last_dispatched"]





More information about the Bf-blender-cvs mailing list