Mercurial > hg-stable
changeset 10017:253d0da256b2
contrib: helper extension to track memory usage
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Sat, 05 Dec 2009 00:15:17 +0100 |
parents | 8a0af23af5d1 |
children | 4e3a8f3e9dc2 |
files | contrib/memory.py |
diffstat | 1 files changed, 36 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/memory.py Sat Dec 05 00:15:17 2009 +0100 @@ -0,0 +1,36 @@ +# memory.py - track memory usage +# +# Copyright 2009 Matt Mackall <mpm@selenic.com> and others +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2, incorporated herein by reference. + +'''helper extension to measure memory usage + +Reads current and peak memory usage from ``/proc/self/status`` and +prints it to ``stderr`` on exit. +''' + +import atexit + +def memusage(ui): + """Report memory usage of the current process.""" + status = None + result = {'peak': 0, 'rss': 0} + try: + # This will only work on systems with a /proc file system + # (like Linux). + status = open('/proc/self/status', 'r') + for line in status: + parts = line.split() + key = parts[0][2:-1].lower() + if key in result: + result[key] = int(parts[1]) + finally: + if status is not None: + status.close() + ui.write_err(", ".join(["%s: %.1f MiB" % (key, value/1024.0) + for key, value in result.iteritems()]) + "\n") + +def extsetup(ui): + atexit.register(memusage, ui)