summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolargo <nicolas@nicolargo.com>2014-08-11 18:57:49 +0200
committerNicolargo <nicolas@nicolargo.com>2014-08-11 18:57:49 +0200
commit8e92419f3b300323dc5916941bc3379a280813bc (patch)
tree8c92f3e927c5003dd1fa4149749234ba87f813d4
parentf0a7dfd77e0092c86725e889f4a241658661619b (diff)
Add extended info
-rw-r--r--glances/core/glances_processes.py11
-rw-r--r--glances/plugins/glances_processlist.py22
2 files changed, 33 insertions, 0 deletions
diff --git a/glances/core/glances_processes.py b/glances/core/glances_processes.py
index af9027c2..10f40134 100644
--- a/glances/core/glances_processes.py
+++ b/glances/core/glances_processes.py
@@ -92,6 +92,8 @@ class GlancesProcesses(object):
procstat = proc.as_dict(attrs=['pid'])
if mandatory_stats:
+ procstat['mandatory_stats'] = True
+
# Process CPU, MEM percent and name
procstat.update(proc.as_dict(attrs=['cpu_percent', 'memory_percent', 'name'], ad_value=''))
@@ -126,6 +128,8 @@ class GlancesProcesses(object):
procstat['io_counters'] += [io_tag]
if standard_stats:
+ procstat['standard_stats'] = True
+
# Process username (cached with internal cache)
try:
self.username_cache[procstat['pid']]
@@ -155,6 +159,8 @@ class GlancesProcesses(object):
procstat['status'] = str(procstat['status'])[:1].upper()
if extended_stats:
+ procstat['extended_stats'] = True
+
# CPU affinity
# Memory extended
# Number of context switch
@@ -186,6 +192,11 @@ class GlancesProcesses(object):
procstat['tcp'] = None
procstat['udp'] = None
+ # IO Nice
+ # http://pythonhosted.org/psutil/#psutil.Process.ionice
+ if is_linux or is_windows:
+ procstat.update(proc.as_dict(attrs=['ionice']))
+
# !!! Only for dev
logger.debug("EXTENDED STATS: %s" % procstat)
diff --git a/glances/plugins/glances_processlist.py b/glances/plugins/glances_processlist.py
index de129e03..27ee5587 100644
--- a/glances/plugins/glances_processlist.py
+++ b/glances/plugins/glances_processlist.py
@@ -110,6 +110,7 @@ class Plugin(GlancesPlugin):
tag_proc_time = True
# Loop over processes (sorted by the sort key previously compute)
+ first = True
for p in self.sortlist(process_sort_key):
ret.append(self.curse_new_line())
# CPU
@@ -237,6 +238,27 @@ class Plugin(GlancesPlugin):
except UnicodeEncodeError:
ret.append(self.curse_add_line("", splittable=True))
+ # Add extended stats but only for the top processes
+ # !!! CPU consumption !!!!
+ if first:
+ # Left padding
+ xpad = ' ' * 13
+ # First line is CPU affinity
+ ret.append(self.curse_new_line())
+ msg = xpad + _('CPU affinity: ') + ','.join(str(i) for i in p['cpu_affinity'])
+ ret.append(self.curse_add_line(msg))
+ # Second line is memory info
+ ret.append(self.curse_new_line())
+ msg = xpad + _('Memory info: ')
+ msg += _('swap ') + self.auto_unit(p['memory_swap'], low_precision=False)
+ for k, v in p['memory_info_ex']._asdict().items():
+ # Ignore rss and vms (already displayed)
+ if k not in ['rss', 'vms']:
+ msg += ', ' + k + ' ' + self.auto_unit(v, low_precision=False)
+ ret.append(self.curse_add_line(msg))
+ # End of extended stats
+ first = False
+
# Return the message with decoration
return ret