Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/console/lib/procmem/proc_smaps.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/console/lib/procmem/proc_smaps.py')
-rw-r--r--services/console/lib/procmem/proc_smaps.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/services/console/lib/procmem/proc_smaps.py b/services/console/lib/procmem/proc_smaps.py
index 174bc6b..422866c 100644
--- a/services/console/lib/procmem/proc_smaps.py
+++ b/services/console/lib/procmem/proc_smaps.py
@@ -36,7 +36,8 @@ class ProcSmaps:
# Shared_Dirty: 0 kB
# Private_Clean: 8 kB
# Private_Dirty: 0 kB
-
+ # Referenced: 4 kb -> Introduced in kernel 2.6.22
+
while num_lines > 0:
fields = lines[line_idx].split (" ", 5)
if len (fields) == 6:
@@ -51,13 +52,20 @@ class ProcSmaps:
shared_dirty = self.parse_smaps_size_line (lines[line_idx + 4])
private_clean = self.parse_smaps_size_line (lines[line_idx + 5])
private_dirty = self.parse_smaps_size_line (lines[line_idx + 6])
+ referenced = self.parse_smaps_size_line (lines[line_idx + 7])
name = name.strip ()
- mapping = Mapping (size, rss, shared_clean, shared_dirty, private_clean, private_dirty, permissions, name)
+ mapping = Mapping (size, rss, shared_clean, shared_dirty, \
+ private_clean, private_dirty, referenced, permissions, name)
self.mappings.append (mapping)
num_lines -= 8
line_idx += 8
+
+ self._clear_reference(pid)
+
+ def _clear_reference(self, pid):
+ os.system("echo 1 > /proc/%s/clear_refs" % pid)
# Parses a line of the form "foo: 42 kB" and returns an integer for the "42" field
def parse_smaps_size_line (self, line):
@@ -66,13 +74,15 @@ class ProcSmaps:
return int(fields[1])
class Mapping:
- def __init__ (self, size, rss, shared_clean, shared_dirty, private_clean, private_dirty, permissions, name):
+ def __init__ (self, size, rss, shared_clean, shared_dirty, \
+ private_clean, private_dirty, referenced, permissions, name):
self.size = size
self.rss = rss
self.shared_clean = shared_clean
self.shared_dirty = shared_dirty
self.private_clean = private_clean
self.private_dirty = private_dirty
+ self.referenced = referenced
self.permissions = permissions
self.name = name