diff options
Diffstat (limited to 'services/console/interface/memphis/plugins')
17 files changed, 203 insertions, 0 deletions
diff --git a/services/console/interface/memphis/plugins/Makefile.am b/services/console/interface/memphis/plugins/Makefile.am new file mode 100644 index 0000000..2c6b1dd --- /dev/null +++ b/services/console/interface/memphis/plugins/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = clean_size cpu dirty_size memphis_init + +sugardir = $(pkgdatadir)/shell/console/interface/memphis/plugins +sugar_PYTHON = diff --git a/services/console/interface/memphis/plugins/clean_size/Makefile.am b/services/console/interface/memphis/plugins/clean_size/Makefile.am new file mode 100644 index 0000000..33565f5 --- /dev/null +++ b/services/console/interface/memphis/plugins/clean_size/Makefile.am @@ -0,0 +1,6 @@ + +sugardir = $(pkgdatadir)/shell/console/interface/memphis/plugins/clean_size +sugar_PYTHON = \ + README \ + __init__.py \ + info.py diff --git a/services/console/interface/memphis/plugins/clean_size/README b/services/console/interface/memphis/plugins/clean_size/README new file mode 100644 index 0000000..3dd3ae3 --- /dev/null +++ b/services/console/interface/memphis/plugins/clean_size/README @@ -0,0 +1,2 @@ +This plugin give support to get the clean size memory usage +by process using the /proc/PID/maps file. diff --git a/services/console/interface/memphis/plugins/clean_size/__init__.py b/services/console/interface/memphis/plugins/clean_size/__init__.py new file mode 100644 index 0000000..75ce1d1 --- /dev/null +++ b/services/console/interface/memphis/plugins/clean_size/__init__.py @@ -0,0 +1,16 @@ + +import info + +INTERNALS = { + # Basic information + 'PLGNAME': "Clean Size", + 'TABNAME': None, + 'AUTHOR': "Eduardo Silva", + 'DESC': "Print the approx real memory usage", + + # Plugin API + 'Plg': None, # Plugin object + + 'top_data': [int], # Top data types needed by memphis core plugin + 'top_cols': ["Approx Real Usage (kb)"] + } diff --git a/services/console/interface/memphis/plugins/clean_size/info.py b/services/console/interface/memphis/plugins/clean_size/info.py new file mode 100644 index 0000000..25ed044 --- /dev/null +++ b/services/console/interface/memphis/plugins/clean_size/info.py @@ -0,0 +1,15 @@ +########################################################### +# Main function: +# ----------------- +# self: self plugin object +# mself: memphis object / principal class +# pinfo: row with information about current tracing process +############################################################ + +def plg_on_top_data_refresh(self, pinfo): + + # Get clean size + maps = self.INTERNALS['Plg'].proc_get_maps(pinfo['pid']) + + size = (maps.clean_size/1024) + return [size] diff --git a/services/console/interface/memphis/plugins/cpu/Makefile.am b/services/console/interface/memphis/plugins/cpu/Makefile.am new file mode 100644 index 0000000..58e9eab --- /dev/null +++ b/services/console/interface/memphis/plugins/cpu/Makefile.am @@ -0,0 +1,6 @@ + +sugardir = $(pkgdatadir)/shell/console/interface/memphis/plugins/cpu +sugar_PYTHON = \ + README \ + __init__.py \ + info.py diff --git a/services/console/interface/memphis/plugins/cpu/README b/services/console/interface/memphis/plugins/cpu/README new file mode 100644 index 0000000..9c7d6f3 --- /dev/null +++ b/services/console/interface/memphis/plugins/cpu/README @@ -0,0 +1,2 @@ +This plugin give support to draw the Virtual Memory Size +usage by the current tracing process. diff --git a/services/console/interface/memphis/plugins/cpu/__init__.py b/services/console/interface/memphis/plugins/cpu/__init__.py new file mode 100644 index 0000000..e22a413 --- /dev/null +++ b/services/console/interface/memphis/plugins/cpu/__init__.py @@ -0,0 +1,23 @@ +import os +import info + +INTERNALS = { + 'PLGNAME': "cpu", + 'TABNAME': None, + 'AUTHOR': "Eduardo Silva", + 'DESC': "Print CPU usage", + + # Plugin API + 'Plg': None, # Plugin object + 'current_plg': None, # Current plugin object + 'current_page': None, # Current page number + + # Top process view requirements + 'top_data': [int], # Top data types needed by memphis core plugin + 'top_cols': ["%CPU "] # Column names + } + +# Get CPU frequency +cpu_hz = os.sysconf(2) + +pids_ujiffies = {} diff --git a/services/console/interface/memphis/plugins/cpu/info.py b/services/console/interface/memphis/plugins/cpu/info.py new file mode 100644 index 0000000..9cb1ad4 --- /dev/null +++ b/services/console/interface/memphis/plugins/cpu/info.py @@ -0,0 +1,48 @@ +########################################################### +# Main function: +# ----------------- +# self: self plugin object +# mself: memphis object / principal class +# pinfo: row with information about current tracing process +############################################################ + +def plg_on_top_data_refresh(self, pinfo): + PI = self.INTERNALS['Plg'].proc + + pid = pinfo['pid'] + + # Get JIFFIES CPU usage + used_jiffies = pinfo['utime'] + pinfo['stime'] + last_ujiffies = get_pid_ujiffies(self, pid) + + cpu_usage = PI.get_CPU_usage(self.cpu_hz, used_jiffies, pinfo['start_time']) + + # Get PERCENT CPU usage + if last_ujiffies == 0.0: + pcpu = 0.0 + set_pid_ujiffies(self, pid, cpu_usage['used_jiffies']) + data = [int(pcpu)] + return data + + used_jiffies = cpu_usage['used_jiffies'] - last_ujiffies + + # Available jiffies are + avail_jiffies = (500/1000.0)*self.cpu_hz # 500 = 0.5 second + pcpu = ((used_jiffies*100)/avail_jiffies) + + set_pid_ujiffies(self, pid, cpu_usage['used_jiffies']) + + data = [int(pcpu)] + return data + +def get_pid_ujiffies(self, pid): + + if pid in self.pids_ujiffies: + return self.pids_ujiffies[pid] + else: + set_pid_ujiffies(self, pid, 0) + return self.pids_ujiffies[pid] + +def set_pid_ujiffies(self, pid, ujiffies): + self.pids_ujiffies[pid] = ujiffies + diff --git a/services/console/interface/memphis/plugins/dirty_size/Makefile.am b/services/console/interface/memphis/plugins/dirty_size/Makefile.am new file mode 100644 index 0000000..47c5298 --- /dev/null +++ b/services/console/interface/memphis/plugins/dirty_size/Makefile.am @@ -0,0 +1,6 @@ + +sugardir = $(pkgdatadir)/shell/console/interface/memphis/plugins/dirty_size +sugar_PYTHON = \ + README \ + __init__.py \ + info.py diff --git a/services/console/interface/memphis/plugins/dirty_size/README b/services/console/interface/memphis/plugins/dirty_size/README new file mode 100644 index 0000000..ee4d1a5 --- /dev/null +++ b/services/console/interface/memphis/plugins/dirty_size/README @@ -0,0 +1,2 @@ +This plugin give support to get the public and shared dirty memory usage +by process using the /proc/PID/smaps file. diff --git a/services/console/interface/memphis/plugins/dirty_size/__init__.py b/services/console/interface/memphis/plugins/dirty_size/__init__.py new file mode 100644 index 0000000..f8e9e0a --- /dev/null +++ b/services/console/interface/memphis/plugins/dirty_size/__init__.py @@ -0,0 +1,17 @@ + +import info + + +INTERNALS = { + # Basic information + 'PLGNAME': "Dirty Size", + 'TABNAME': None, # No tabbed plugin + 'AUTHOR': "Eduardo Silva", + 'DESC': "Get dirty size memory usage", + + # Plugin API + 'Plg': None, # Plugin object + + 'top_data': [int], # Top data types needed by memphis core plugin + 'top_cols': ["PDRSS (kb)"] + } diff --git a/services/console/interface/memphis/plugins/dirty_size/info.py b/services/console/interface/memphis/plugins/dirty_size/info.py new file mode 100644 index 0000000..54a2e7e --- /dev/null +++ b/services/console/interface/memphis/plugins/dirty_size/info.py @@ -0,0 +1,20 @@ +########################################################### +# Main function: +# ----------------- +# self: self plugin object +# mself: memphis object / principal class +# pinfo: row with information about current tracing process +############################################################ + + +def plg_on_top_data_refresh(self, ppinfo): + + dirty_sizes = get_dirty(self, ppinfo['pid']) + + # memhis need an array + return [dirty_sizes['private']] + +def get_dirty(pself, pid): + ProcAnalysis = pself.INTERNALS['Plg'].proc_analysis(pid) + + return ProcAnalysis.DirtyRSS() diff --git a/services/console/interface/memphis/plugins/memphis_init/Makefile.am b/services/console/interface/memphis/plugins/memphis_init/Makefile.am new file mode 100644 index 0000000..53b398a --- /dev/null +++ b/services/console/interface/memphis/plugins/memphis_init/Makefile.am @@ -0,0 +1,6 @@ + +sugardir = $(pkgdatadir)/shell/console/interface/memphis/plugins/memphis_init +sugar_PYTHON = \ + README \ + __init__.py \ + info.py diff --git a/services/console/interface/memphis/plugins/memphis_init/README b/services/console/interface/memphis/plugins/memphis_init/README new file mode 100644 index 0000000..9c7d6f3 --- /dev/null +++ b/services/console/interface/memphis/plugins/memphis_init/README @@ -0,0 +1,2 @@ +This plugin give support to draw the Virtual Memory Size +usage by the current tracing process. diff --git a/services/console/interface/memphis/plugins/memphis_init/__init__.py b/services/console/interface/memphis/plugins/memphis_init/__init__.py new file mode 100644 index 0000000..f5ada7e --- /dev/null +++ b/services/console/interface/memphis/plugins/memphis_init/__init__.py @@ -0,0 +1,15 @@ +import info + +INTERNALS = { + 'PLGNAME': "memphis", + 'TABNAME': None, + 'AUTHOR': "Eduardo Silva", + 'DESC': "Print basic process information", + + # Plugin API + 'Plg': None, # Plugin object + + # Top process view requirements + 'top_data': [int, str, str], # Top data types needed by memphis core plugin + 'top_cols': ["PID", "Process Name", "Status"] # Column names + } diff --git a/services/console/interface/memphis/plugins/memphis_init/info.py b/services/console/interface/memphis/plugins/memphis_init/info.py new file mode 100644 index 0000000..6e524c7 --- /dev/null +++ b/services/console/interface/memphis/plugins/memphis_init/info.py @@ -0,0 +1,13 @@ +########################################################### +# Main function: +# ----------------- +# self: self plugin object +# mself: memphis object / principal class +# pinfo: row with information about current tracing process +############################################################ + +def plg_on_top_data_refresh(self, ppinfo): + + data = [ppinfo['pid'], ppinfo['name'], ppinfo['state_name']] + + return data |