HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
ResourcesRecalculating.py
Go to the documentation of this file.
1 '''
2 Created on Mar 13, 2014
3 
4 @package: dtm
5 @author: scorp
6 @link: http://hierarchical-cluster-engine.com/
7 @copyright: Copyright © 2013-2014 IOIX Ukraine
8 @license: http://hierarchical-cluster-engine.com/license/
9 @since: 0.1
10 '''
11 
12 
13 import EventObjects
14 import sys
15 
16 
18 class ResourcesRecalculating(object):
19 
20 
21 
23  def __init__(self):
24  self.resources = {}
26 
27 
28  def addUpdateResources(self, resources):
29  self.resources[resources.nodeId] = resources
30 
31 
32 
34  def recalculate(self):
35  rCount = 0
36  self.resourcesAVG.cpu = 0
37  self.resourcesAVG.io = 0
38  self.resourcesAVG.ramRU = 0
39  self.resourcesAVG.ramVU = 0
40  self.resourcesAVG.ramR = 0
41  self.resourcesAVG.ramV = 0
42  self.resourcesAVG.swap = 0
43  self.resourcesAVG.disk = 0
44  self.resourcesAVG.uDate = 0
45  self.resourcesAVG.cpuCores = 0
46  self.resourcesAVG.threads = 0
47  self.resourcesAVG.processes = 0
48  for resourceItem in self.resources.values():
49  if resourceItem.state == EventObjects.Resource.STATE_ACTIVE:
50  self.resourcesAVG.cpu += resourceItem.cpu
51  self.resourcesAVG.io += resourceItem.io
52  self.resourcesAVG.ramRU += resourceItem.ramRU
53  self.resourcesAVG.ramVU += resourceItem.ramVU
54  self.resourcesAVG.ramR += resourceItem.ramR
55  self.resourcesAVG.ramV += resourceItem.ramV
56  self.resourcesAVG.swap += resourceItem.swap
57  self.resourcesAVG.disk += resourceItem.disk
58  if rCount == 0 or resourceItem.uDate < self.resourcesAVG.uDate:
59  self.resourcesAVG.uDate = resourceItem.uDate
60  self.resourcesAVG.cpuCores += resourceItem.cpuCores
61  self.resourcesAVG.threads += resourceItem.threads
62  self.resourcesAVG.processes += resourceItem.processes
63  rCount += 1
64  if rCount > 0:
65  self.resourcesAVG.cpu = self.resourcesAVG.cpu / rCount
66  self.resourcesAVG.io = self.resourcesAVG.io / rCount
67  self.resourcesAVG.ramRU = self.resourcesAVG.ramRU / rCount
68  self.resourcesAVG.ramVU = self.resourcesAVG.ramVU / rCount
69  self.resourcesAVG.ramR = self.resourcesAVG.ramR / rCount
70  self.resourcesAVG.ramV = self.resourcesAVG.ramV / rCount
71  self.resourcesAVG.swap = self.resourcesAVG.swap / rCount
72  self.resourcesAVG.disk = self.resourcesAVG.disk / rCount
73  self.resourcesAVG.cpuCores = self.resourcesAVG.cpuCores / rCount
74  self.resourcesAVG.threads = self.resourcesAVG.threads / rCount
75  self.resourcesAVG.processes = self.resourcesAVG.processes / rCount
76  else:
77  self.resourcesAVG.cpu = sys.maxint
78  self.resourcesAVG.io = sys.maxint
79 
80 
81  def getResourcesAVG(self):
82  return self.resourcesAVG
Class ResourcesRecalculating, that contains recalcularing algorithm of resource data.
def __init__(self)
constructor initialise all class variable and recieve config as param
ResourcesAVG event object, represents summary of the EE resources utilization.
def recalculate(self)
recalculate method recalculate method calls outside and performs recalculate processing, now it&#39;s empty