aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--examples/plugin-test6
-rw-r--r--src/plugins/loadavg.py38
-rw-r--r--src/plugins/moc.py4
3 files changed, 33 insertions, 15 deletions
diff --git a/examples/plugin-test b/examples/plugin-test
index 0a0113d..1bbf465 100644
--- a/examples/plugin-test
+++ b/examples/plugin-test
@@ -33,9 +33,9 @@ def redraw():
idle = 'Idle time: %s : %s : %1.2f%%' % (avg_idle, tot_idle, prc_idle * 100)
loadavg_ = AverageLoad()
- avg_5 = int(loadavg_.avg_5_min * 100)
- avg_10 = int(loadavg_.avg_10_min * 100)
- avg_15 = int(loadavg_.avg_15_min * 100)
+ avg_5 = int(loadavg_.average_avg_5_min * 100)
+ avg_10 = int(loadavg_.average_avg_10_min * 100)
+ avg_15 = int(loadavg_.average_avg_15_min * 100)
act_tasks = loadavg_.active_tasks
tot_tasks = loadavg_.total_tasks
last_pid = loadavg_.last_pid
diff --git a/src/plugins/loadavg.py b/src/plugins/loadavg.py
index b66ca6f..a270d5e 100644
--- a/src/plugins/loadavg.py
+++ b/src/plugins/loadavg.py
@@ -22,12 +22,20 @@ class AverageLoad:
'''
The current average load, number of scheduling entities and latest PID
- @variable avg_5_min:float The average load over the last 5 minutes
- @variable avg_10_min:float The average load over the last 10 minutes
- @variable avg_15_min:float The average load over the last 15 minutes
- @variable active_tasks:int The number of active scheduling entities
- @variable total_tasks:int The total number of scheduling entities
- @variable last_pid:int The PID of the last created process on the system
+ @variable total_avg_5_min:float The average load over the last 5 minutes, sum of processors
+ @variable total_avg_10_min:float The average load over the last 10 minutes, sum of processors
+ @variable total_avg_15_min:float The average load over the last 15 minutes, sum of processors
+ @variable average_avg_5_min:float The average load over the last 5 minutes, average of processors
+ @variable average_avg_10_min:float The average load over the last 10 minutes, average of processors
+ @variable average_avg_15_min:float The average load over the last 15 minutes, average of processors
+ @variable active_tasks:int The number of active scheduling entities
+ @variable total_tasks:int The total number of scheduling entities
+ @variable last_pid:int The PID of the last created process on the system
+ '''
+
+ cpu_count = None
+ '''
+ :int? The number of processors on the machine
'''
@@ -41,10 +49,20 @@ class AverageLoad:
uptime = uptime.decode('utf-8', 'replace')
uptime = uptime.replace('\n', ' ').split(' ')
- self.avg_5_min, self.avg_10_min, self.avg_15_min, tasks, self.last_pid = uptime[:5]
- self.avg_5_min = float(self.avg_5_min)
- self.avg_10_min = float(self.avg_10_min)
- self.avg_15_min = float(self.avg_15_min)
+ if AverageLoad.cpu_count is None:
+ with open('/proc/cpuinfo', 'rb') as file:
+ AverageLoad.cpu_count = file.read()
+ AverageLoad.cpu_count = AverageLoad.cpu_count.decode('utf-8', 'replace').split('\n')
+ AverageLoad.cpu_count = filter(lambda line : 'processor' in line, AverageLoad.cpu_count)
+ AverageLoad.cpu_count = len(list(AverageLoad.cpu_count))
+
+ self.total_avg_5_min, self.total_avg_10_min, self.total_avg_15_min, tasks, self.last_pid = uptime[:5]
+ self.total_avg_5_min = float(self.total_avg_5_min)
+ self.total_avg_10_min = float(self.total_avg_10_min)
+ self.total_avg_15_min = float(self.total_avg_15_min)
+ self.average_avg_5_min = self.total_avg_5_min / AverageLoad.cpu_count
+ self.average_avg_10_min = self.total_avg_10_min / AverageLoad.cpu_count
+ self.average_avg_15_min = self.total_avg_15_min / AverageLoad.cpu_count
self.last_pid = int(self.last_pid)
self.active_tasks, self.total_tasks = [int(t) for t in tasks.split('/')]
diff --git a/src/plugins/moc.py b/src/plugins/moc.py
index 560370a..04bda65 100644
--- a/src/plugins/moc.py
+++ b/src/plugins/moc.py
@@ -58,7 +58,7 @@ class MOC:
Constructor
'''
self.__info = {}
- for line in spawn_read('mocp', '--info').split('\n'):
+ for line in MOC.__interact('--info').stdout.read().decode('utf-8', 'replace').split('\n'):
if ': ' in line:
line = line.split(': ')
self.__info[line[0]] = ': '.join(line[1:])
@@ -99,7 +99,7 @@ class MOC:
@return :Popen The spawned process
'''
command = ['mocp'] + list(args)
- return subprocess.Popen(command, stderr = sys.stderr, stdout = subprocess.PIPE)
+ return subprocess.Popen(command, stderr = subprocess.PIPE, stdout = subprocess.PIPE)
@staticmethod