Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/io/netrender/balancing.py8
-rw-r--r--release/io/netrender/master.py7
-rw-r--r--release/io/netrender/master_html.py22
-rw-r--r--release/io/netrender/model.py3
4 files changed, 32 insertions, 8 deletions
diff --git a/release/io/netrender/balancing.py b/release/io/netrender/balancing.py
index c167594e1c5..372ea7d95b7 100644
--- a/release/io/netrender/balancing.py
+++ b/release/io/netrender/balancing.py
@@ -64,7 +64,13 @@ class Balancer:
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):
diff --git a/release/io/netrender/master.py b/release/io/netrender/master.py
index 8a0b0434bf3..1202b94840f 100644
--- a/release/io/netrender/master.py
+++ b/release/io/netrender/master.py
@@ -45,12 +45,12 @@ class MRenderJob(netrender.model.RenderJob):
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 @@ class RenderMasterServer(http.server.HTTPServer):
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))
diff --git a/release/io/netrender/master_html.py b/release/io/netrender/master_html.py
index bafc0f44b7f..7513971e6cf 100644
--- a/release/io/netrender/master_html.py
+++ b/release/io/netrender/master_html.py
@@ -52,22 +52,36 @@ def get(handler):
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()
diff --git a/release/io/netrender/model.py b/release/io/netrender/model.py
index 9cacfb54a35..91a7c8a035f 100644
--- a/release/io/netrender/model.py
+++ b/release/io/netrender/model.py
@@ -81,6 +81,7 @@ class RenderJob:
self.chunks = 0
self.priority = 0
self.credits = 0
+ self.usage = 0.0
self.blacklist = []
self.last_dispatched = 0.0
@@ -143,6 +144,7 @@ class RenderJob:
"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 @@ class RenderJob:
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"]