| Index: tools/multi-process-rss.py
|
| diff --git a/tools/multi-process-rss.py b/tools/multi-process-rss.py
|
| index 0d97fad37b67ea3283beb7b3a68eec4003ec00ed..100d0f759b1c4660de6904b16899aeab30bd00fd 100755
|
| --- a/tools/multi-process-rss.py
|
| +++ b/tools/multi-process-rss.py
|
| @@ -42,7 +42,10 @@ _LOGGER.addHandler(_NullHandler())
|
|
|
|
|
| def _recursive_get_children(pid):
|
| - children = psutil.Process(pid).get_children()
|
| + try:
|
| + children = psutil.Process(pid).get_children()
|
| + except psutil.error.NoSuchProcess:
|
| + return []
|
| descendant = []
|
| for child in children:
|
| descendant.append(child.pid)
|
| @@ -78,7 +81,14 @@ def count_pageframes(pids):
|
| pagemap_dct = {}
|
| for pid in pids:
|
| maps = procfs.ProcMaps.load(pid)
|
| - pagemap_dct[pid] = procfs.ProcPagemap.load(pid, maps)
|
| + if not maps:
|
| + _LOGGER.warning('/proc/%d/maps not found.' % pid)
|
| + continue
|
| + pagemap = procfs.ProcPagemap.load(pid, maps)
|
| + if not pagemap:
|
| + _LOGGER.warning('/proc/%d/pagemap not found.' % pid)
|
| + continue
|
| + pagemap_dct[pid] = pagemap
|
|
|
| for pid, pagemap in pagemap_dct.iteritems():
|
| for vma in pagemap.vma_internals.itervalues():
|
| @@ -88,6 +98,23 @@ def count_pageframes(pids):
|
| return pageframes
|
|
|
|
|
| +def count_statm(pids):
|
| + resident = 0
|
| + shared = 0
|
| + private = 0
|
| +
|
| + for pid in pids:
|
| + statm = procfs.ProcStatm.load(pid)
|
| + if not statm:
|
| + _LOGGER.warning('/proc/%d/statm not found.' % pid)
|
| + continue
|
| + resident += statm.resident
|
| + shared += statm.share
|
| + private += (statm.resident - statm.share)
|
| +
|
| + return (resident, shared, private)
|
| +
|
| +
|
| def main(argv):
|
| logging_handler = logging.StreamHandler()
|
| logging_handler.setLevel(logging.WARNING)
|
|
|